Druid是什么?

Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。

Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。

同时Druid不仅仅是一个数据库连接池,它包括四个部分:
Druid是一个JDBC组件,它包括三个部分:

Druid可以做什么?

  • 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
  • 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
  • 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
  • SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
  • 扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

在项目中使用Druid非常简单,只要修改下配置文件就可以了

 

当我们在javaWEB项目中使用到druid来作为我们的连接池的时候,一定不会忘了添加监控功能。

首先是过滤器filter的配置,在web.xml中添加如下配置

 

<filter>
    <filter-name>DruidWebStatFilter</filter-name>
    <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
    <init-param>
        <param-name>exclusions</param-name>
        <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>DruidWebStatFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

过滤器中的配置,是用来定义我们的监控选项,在以上的监控配置中,我们定义了一个简单的监控,并采用了大量的默认配置,如果你想使用更丰富的监控配置,可以在druid的github wiki上获取更多的选项,地址:druid Filter 配置

选项配置结束之后,就是我们监控界面的路径配置了,servlet配置我们将在哪里打开我们的监控页面,在web.xml中添加如下代码

 

<servlet>
      <servlet-name>DruidStatView</servlet-name>
      <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>DruidStatView</servlet-name>
      <url-pattern>/druid/*</url-pattern>
  </servlet-mapping>

以上配置中,我们将我们的网页监控路径放在了,项目路径下的 druid路径中,类似于 www.myroject.com/druid.

同样的,上面的配置只是一个简单的配置,更丰富的选项,需要您移步:druid servlet 配置

至此,一个简单的web项目就配好了监控的页面,但是大多数人在开发javaWEB项目中时都避免不了使用到各种框架和其他的技术,我将在后面的博文中陆续写出相应的配置方式。

spring配置

druid支持hbase druid cube_java

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">  

      <property name="url" value="${jdbc.url}" />  

      <property name="username" value="${jdbc.username}" />  

     <property name="password" value="${jdbc.password}" />  

     <property name="filters" value="stat" />  

     <property name="maxActive" value="20" />   

     <property name="initialSize" value="1" />  

      <property name="maxWait" value="60000" />  

 <property name="minIdle" value="1" /> 

 <property name="timeBetweenEvictionRunsMillis" value="3000" />  

<property name="minEvictableIdleTimeMillis" value="300000" /> 

 <property name="validationQuery" value="SELECT 'x'" />  

<property name="testWhileIdle" value="true" />  

<property name="testOnBorrow" value="false" />  

<property name="testOnReturn" value="false" />  

<property name="poolPreparedStatements" value="true" /> 

 <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> 

</bean>   

 

就可以了.
监控页面

druid支持hbase druid cube_druid支持hbase_02