论坛首页 Java企业应用论坛

阿里巴巴开源平台新增项目Druid

浏览 28557 次
该帖已经被评为精华帖
作者 正文
   发表时间:2011-05-12  
neptune 写道
应该说明实际在项目中是否使用了?使用在什么项目上?吞吐量如何?相应时间?等等?

猜测的话上次的表达式库可能用到鹰眼中了吧
大型IT公司肯定有巨大的基础库和平台需求,企业开源代表可以吸收大量免费测试和,也是吸引人才和提高影响力的免费广告,未来推出开源商业license赚钱也是种可能
但开源和商业竞争力总是很难平衡取舍
0 请登录后投票
   发表时间:2011-05-12  
wenshao 写道
agapple 写道
1. 不错的idea,使用了ReentrantLock替换了dbcp中大量的synchronized。性能上理论是有一定的提升,这个不用怀疑。
2. 稳定性上有待考虑,毕竟我们关注的不仅仅是性能,稳定还是很重要。LZ可以举一下实际项目中的应用场景的一些数据,这样就最好了。比如数据库自动重连,statememt cache上(以前的dbcp跑一段时间后,cahce后的statement会出现半断开的情况)
3. 功能欠完善,大致看了下pool池的代码:http://code.alibabatech.com/svn/druid/trunk/src/main/java/com/alibaba/druid/pool/DruidDataSource.java,虽然参数上都支持了,貌似有些参数还是摆设把。比如idleTime(空闲链接管理),心跳检查
4. 希望可以弥补dbcp的一些不足,可以管理下底层socket的超时时间(connectionTimeout, soTimeout),可以控制下每次创建connection的时间,避免无限制阻塞

自己使用dbcp过程中的一些不足和意见,LZ可以考虑下。


关于数据库连接池DruidDataSource,你是个明白人,你关心的问题都是关键点。
1、性能方面,超越DBCP、C3P0是肯定的,这一点确实不用怀疑。
2、稳定性方面,我们也是很关注的,也是刚开始使用,我们也不敢一开始就应用于关键项目中,开源的目的也是希望通过社区的帮助提升项目的质量,提高稳定性。
3、DBCP的参数还是没有完全支持的,这个我正在逐步实现。
4、控制底层socket,需要直接和具体的Driver打交道,比如直接和MySqlDriver通讯,不过这个很关键,我考虑一下,应该有好办法的。

谢谢你的建议,希望进一步交流 


1. 关于第4点,我看了mysql和oracle的驱动的部分代码,是有socket参数可以支持,就是需要调整一个合理的值。网站当机一小时过程中,就因为没设置这个参数,导致自动重链基本都失败了。
2. 挺看好那个性能统计的功能,到时候查看数据会是以什么方式,内嵌启动jetty支持html页面 or 日志方式 or jmx ?
0 请登录后投票
   发表时间:2011-05-12  
ppgunjack 写道
neptune 写道
应该说明实际在项目中是否使用了?使用在什么项目上?吞吐量如何?相应时间?等等?

猜测的话上次的表达式库可能用到鹰眼中了吧
大型IT公司肯定有巨大的基础库和平台需求,企业开源代表可以吸收大量免费测试和,也是吸引人才和提高影响力的免费广告,未来推出开源商业license赚钱也是种可能
但开源和商业竞争力总是很难平衡取舍


DruidDriver和StatFilter已经部署在Alibaba线上大约20多个项目中,目标是全站所有的Java项目都部署DruidDriver和StatFilter。

DruidDataSource还在发展完善中,计划是6月份能够提供第一个可用版本,然后逐步替换DruidDriver,使用的方式将会是DruidDataSource + StatFilter。

目前使用DruidDriver + StatFilter,主要是用于监控系统的数据库访问性能,阿里巴巴有一个监控系统Dragoon,能够把Web请求、Spring方法调用、Ibatis、JDBC访问、Log4j等组件的监控综合起来,统一分析系统的性能。

Druid本来是Dragoon系统的一部分,后来分离出来独立发展,最终开源。
0 请登录后投票
   发表时间:2011-05-12  
wenshao 写道
yunchow 写道

try {
                x.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

}



这种异常处理????


你是说JdbcUtils里面的代码吧,这个没什么不妥啊!
public final class JdbcUtils {

    public final static void close(Connection x) {
        if (x != null) {
            try {
                x.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public final static void close(Statement x) {
        if (x != null) {
            try {
                x.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public final static void close(ResultSet x) {
        if (x != null) {
            try {
                x.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

这个工具类的目的就是安全关闭Connection、Statement、ResultSet,这样处理自认为没什么不妥。

这段代码很像我同学05年的风格。难道?
0 请登录后投票
   发表时间:2011-05-12  
希望尽快整理出quick start 和相关文档,这样也方便更多的人去尝试。。。
0 请登录后投票
   发表时间:2011-05-12  
agapple 写道
wenshao 写道
agapple 写道
1. 不错的idea,使用了ReentrantLock替换了dbcp中大量的synchronized。性能上理论是有一定的提升,这个不用怀疑。
2. 稳定性上有待考虑,毕竟我们关注的不仅仅是性能,稳定还是很重要。LZ可以举一下实际项目中的应用场景的一些数据,这样就最好了。比如数据库自动重连,statememt cache上(以前的dbcp跑一段时间后,cahce后的statement会出现半断开的情况)
3. 功能欠完善,大致看了下pool池的代码:http://code.alibabatech.com/svn/druid/trunk/src/main/java/com/alibaba/druid/pool/DruidDataSource.java,虽然参数上都支持了,貌似有些参数还是摆设把。比如idleTime(空闲链接管理),心跳检查
4. 希望可以弥补dbcp的一些不足,可以管理下底层socket的超时时间(connectionTimeout, soTimeout),可以控制下每次创建connection的时间,避免无限制阻塞

自己使用dbcp过程中的一些不足和意见,LZ可以考虑下。


关于数据库连接池DruidDataSource,你是个明白人,你关心的问题都是关键点。
1、性能方面,超越DBCP、C3P0是肯定的,这一点确实不用怀疑。
2、稳定性方面,我们也是很关注的,也是刚开始使用,我们也不敢一开始就应用于关键项目中,开源的目的也是希望通过社区的帮助提升项目的质量,提高稳定性。
3、DBCP的参数还是没有完全支持的,这个我正在逐步实现。
4、控制底层socket,需要直接和具体的Driver打交道,比如直接和MySqlDriver通讯,不过这个很关键,我考虑一下,应该有好办法的。

谢谢你的建议,希望进一步交流 


1. 关于第4点,我看了mysql和oracle的驱动的部分代码,是有socket参数可以支持,就是需要调整一个合理的值。网站当机一小时过程中,就因为没设置这个参数,导致自动重链基本都失败了。
2. 挺看好那个性能统计的功能,到时候查看数据会是以什么方式,内嵌启动jetty支持html页面 or 日志方式 or jmx ?


1、这个功能目前DBCP和DruidDataSource都是支持的,设置的方式在于其属性connectionProperties。
2、性能统计,目前阿里巴巴是通过其监控系统Dragoon提供Web界面查看的,Dragoon不适合于开源,因为它和公司业务结合太紧密。目前StatFilter通过JMX暴露了统计数据,直接使用jconsole也是可行的,有时间了再做一个JCONSOLE插件。

0 请登录后投票
   发表时间:2011-05-12  
引用
Log4j等组件的监控

这块是怎么做的,能简单描述出来吗? 方便给一个效果图? 谢谢!
0 请登录后投票
   发表时间:2011-05-12  
有人提到了BoneCP,BoneCP号称最快,但实际测试表明,DruidDataSource性能比BoneCP好。

如:
http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=2916539
连接池 时间(毫秒) YungGC FullGC
Druid 221    6      0  
DBCP  1,606   70   0
BoneCP  762   4   0
0 请登录后投票
   发表时间:2011-05-12  
连接池的性能和参数相关,能用BoneCP网站的测试用例和参数对比测试下吗?

看看能不能比他们觉得快的配置还快。
0 请登录后投票
   发表时间:2011-05-12  
zhizhesky 写道
Druid 不是魔兽里的德鲁伊么?


内牛满面啊, 这个名字正是想达成的目标。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics