1. 程式人生 > >Druid是什麼和Druid的介紹

Druid是什麼和Druid的介紹

Druid的簡介

Druid首先是一個數據庫連線池。Druid是目前最好的資料庫連線池,在功能、效能、擴充套件性方面,都超過其他資料庫連線池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已經在阿里巴巴部署了超過600個應用,經過一年多生產環境大規模部署的嚴苛考驗。Druid是阿里巴巴開發的號稱為監控而生的資料庫連線池!

同時Druid不僅僅是一個數據庫連線池,它包括四個部分:

    Druid是一個JDBC元件,它包括三個部分:

    基於Filter-Chain模式的外掛體系。

    DruidDataSource 高效可管理的資料庫連線池。

    SQLParser

Druid的功能

1、替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴充套件性好的資料庫連線池。

2、可以監控資料庫訪問效能,Druid內建提供了一個功能強大的StatFilter外掛,能夠詳細統計SQL的執行效能,這對於線上分析資料庫訪問效能有幫助。

3、資料庫密碼加密。直接把資料庫密碼寫在配置檔案中,這是不好的行為,容易導致安全問題。DruidDruiver和DruidDataSource都支援PasswordCallback。

4、SQL執行日誌,Druid提供了不同的LogFilter,能夠支援Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的資料庫訪問情況。

5、擴充套件JDBC,如果你要對JDBC層有程式設計的需求,可以通過Druid提供的Filter機制,很方便編寫JDBC層的擴充套件外掛。

所以Druid可以:
1、充當資料庫連線池。
2、可以監控資料庫訪問效能
3、獲得SQL執行日誌

簡單配置如下:

  1. <beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close">
  2.     <propertyvalue="${jdbc_url}"name="url"></property>
  3.     <property
    value="${jdbc_user}"name="username"></property>
  4.     <propertyvalue="${jdbc_password}"name="password"></property>
  5.     <propertyvalue="stat"name="filters"></property>
  6.     <propertyvalue="20"name="maxActive"></property>
  7.     <propertyvalue="1"name="initialSize"></property>
  8.     <propertyvalue="60000"name="maxWait"></property>
  9.     <propertyvalue="1"name="minIdle"></property>
  10.     <propertyvalue="60000"name="timeBetweenEvictionRunsMillis"></property>
  11.     <propertyvalue="300000"name="minEvictableIdleTimeMillis"></property>
  12.     <propertyvalue="SELECT 'x'"name="validationQuery"></property>
  13.     <propertyvalue="true"name="testWhileIdle"></property>
  14.     <propertyvalue="false"name="testOnBorrow"></property>
  15.     <propertyvalue="false"name="testOnReturn"></property>
  16.     <propertyvalue="true"name="poolPreparedStatements"></property>
  17.     <propertyvalue="20"name="maxPoolPreparedStatementPerConnectionSize"></property>
  18. </bean>


3、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/index.html,

2015八月 11

一、關於Druid

Druid是一個JDBC元件,它包括三部分: 

  • DruidDriver 代理Driver,能夠提供基於Filter-Chain模式的外掛體系。 

  • DruidDataSource 高效可管理的資料庫連線池。 

  • SQLParser 

Druid可以做什麼? 

1) 可以監控資料庫訪問效能,Druid內建提供了一個功能強大的StatFilter外掛,能夠詳細統計SQL的執行效能,這對於線上分析資料庫訪問效能有幫助。 

2) 替換DBCPC3P0。Druid提供了一個高效、功能強大、可擴充套件性好的資料庫連線池。 

3) 資料庫密碼加密。直接把資料庫密碼寫在配置檔案中,這是不好的行為,容易導致安全問題。DruidDruiver和DruidDataSource都支援PasswordCallback。 

4) SQL執行日誌,Druid提供了不同的LogFilter,能夠支援Common-LoggingLog4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的資料庫訪問情況。 

擴充套件JDBC,如果你要對JDBC層有程式設計的需求,可以通過Druid提供的Filter-Chain機制,很方便編寫JDBC層的擴充套件外掛。

Druid開源中國社群地址:http://www.oschina.net/p/druid

二、工程配置

1、工程引入druid-1.0.15.jar

2、資料來源配置

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" lazy-init="false">
<property name="driverClassName" value="#{db.driver}" />
<property name="url" value="#{db.url}" />
<property name="username" value="#{db.user}" />
<property name="password" value="#{db.password}" />
<property name="initialSize" value="1" />
<property name="maxActive" value="50" />
<property name="maxIdle" value="0" />
<property name="maxWait" value="30000" />

<property name="filters" value="stat,wall" />
<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>

詳細引數說明

配置 預設值 說明
name 配置這個屬性的意義在於,如果存在多個數據源,監控的時候
可以通過名字來區分開來。如果沒有配置,將會生成一個名字,
格式是:”DataSource-” + System.identityHashCode(this)
jdbcUrl 連線資料庫的url,不同資料庫不一樣。例如:
mysql : jdbc:mysql://10.20.153.104:3306/druid2 
oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
username 連線資料庫的使用者名稱
driverClassName 根據url自動識別 這一項可配可不配,如果不配置druid會根據url自動識別dbType,
然後選擇相應的driverClassName
initialSize 0 初始化時建立物理連線的個數。初始化發生在顯示呼叫init方法,
或者第一次getConnection時
maxActive 8 最大連線池數量
maxIdle 8 已經不再使用,配置了也沒效果
minIdle 最小連線池數量
maxWait 獲取連線時最大等待時間,單位毫秒。配置了maxWait之後,
預設啟用公平鎖,併發效率會有所下降,
如果需要可以通過配置useUnfairLock屬性為true使用非公平鎖。
poolPreparedStatements false 是否快取preparedStatement,也就是PSCache。
PSCache對支援遊標的資料庫效能提升巨大,比如說oracle。
在mysql5.5以下的版本中沒有PSCache功能,建議關閉掉。
5.5及以上版本有PSCache,建議開啟。
maxOpenPreparedStatements -1 要啟用PSCache,必須配置大於0,當大於0時,
poolPreparedStatements自動觸發修改為true。
在Druid中,不會存在Oracle下PSCache佔用記憶體過多的問題,
可以把這個數值配置大一些,比如說100
validationQuery 用來檢測連線是否有效的sql,要求是一個查詢語句。
如果validationQuery為null,testOnBorrow、testOnReturn、
testWhileIdle都不會其作用。
testOnBorrow true 申請連線時執行validationQuery檢測連線是否有效,
做了這個配置會降低效能。
testOnReturn false 歸還連線時執行validationQuery檢測連線是否有效,
做了這個配置會降低效能
testWhileIdle false 建議配置為true,不影響效能,並且保證安全性。
申請連線的時候檢測,如果空閒時間大於
timeBetweenEvictionRunsMillis,
執行validationQuery檢測連線是否有效。
timeBetweenEvictionRunsMillis 有兩個含義:
1) Destroy執行緒會檢測連線的間隔時間
 2) testWhileIdle的判斷依據,詳細看testWhileIdle屬性的說明
numTestsPerEvictionRun 不再使用,一個DruidDataSource只支援一個EvictionRun
minEvictableIdleTimeMillis
connectionInitSqls 物理連線初始化的時候執行的sql
exceptionSorter 根據dbType自動識別 當資料庫丟擲一些不可恢復的異常時,拋棄連線
filters 屬性型別是字串,通過別名的方式配置擴充套件外掛,
常用的外掛有:
監控統計用的filter:stat 
日誌用的filter:log4j
 防禦sql注入的filter:wall
proxyFilters 型別是List<com.alibaba.druid.filter.Filter>,
如果同時配置了filters和proxyFilters,
是組合關係,並非替換關係


3、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/index.html,

完整路徑是http://127.0.0.1:8080/druid/index.html

如果還需要使用Web應用、URI監控、Session監控、Spring監控等則還需要繼續增加配置。

4、Wen應用配置

WebStatFilter用於採集web-jdbc關聯監控的資料

在Web.xml中增加配置,就可以使用Web應用、URI監控、Session監控等功能

<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>
    <init-param>
    <param-name>profileEnable</param-name>
    <param-value>true</param-value>
</init-param>
<init-param>
        <param-name>principalCookieName</param-name>
        <param-value>USER_COOKIE</param-value>
    </init-param>
    <init-param>
        <param-name>principalSessionName</param-name>
        <param-value>USER_SESSION</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>DruidWebStatFilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
5、Spring監控配置

在Spring配置檔案中增加

<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
    </bean>
<bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
   <property name="patterns">
       <list>
           <value>com.company.bussines.service.*</value>
           <value>com.company.bussines.dao.*</value>
       </list>
   </property>
</bean>

<aop:config proxy-target-class="true">
   <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />
</aop:config>

所有配置完成。



相關推薦

Druid是什麼Druid介紹

Druid的簡介 Druid首先是一個數據庫連線池。Druid是目前最好的資料庫連線池,在功能、效能、擴充套件性方面,都超過其他資料庫連線池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已經在阿里巴巴部署了超過600個應

Druid資料庫連線池Druid內建監控系統簡單介紹

Druid簡介 Druid是阿里巴巴的一個開源資料庫連線池,基於Apache 2.0協議,可以免費自由使用。但它不僅僅是一個數據庫連線池,它還包含一個ProxyDriver,一系列內建的JDBC元件庫,一個SQL Parser。Druid能夠提供強大的監控和擴充套件功能。但D

Spring Boot入門第三天:配置日誌系統Druid數據庫連接池。

禁用 css ret 輸入 ogg servlet log http gif 一、日誌管理 1.在application.properties文件中加入如下內容: logging.level.root=WARN logging.level.org.springfram

Mybatis配置C3p0 Druid連線池

普通java工程配置Mybatis 連線池 整體結構 匯入jar 包: 連結:https://pan.baidu.com/s/1aEpDPO9xRK1_shVsUpOEZA 提取碼:16nf Mybatis 配置檔案: <?xml version="

【轉】spring boot使用Druid監控配置

Druid是Java語言中最好的資料庫連線池,並且能夠提供強大的監控和擴充套件功能。 Spring Boot預設的資料來源是:org.apache.tomcat.jdbc.pool.DataSource 業界把 Druid 和 HikariCP 做對比後,雖說 HikariCP

Druid以及Druid常見的資料庫連線池對比(轉載 )

寫的灰常好非常細,關鍵是還有各種資料庫連線池的對比,條理比較清晰。 1. Druid是什麼? Druid是Java語言中最好的資料庫連線池。Druid能夠提供強大的監控和擴充套件功能。 2. 在哪裡下載druid 3. 怎麼獲取Druid的原始碼 Druid

Guice進階之整合mybatisdruid

上一篇文章中介紹了guice的基本使用配置,關於guice和spring的對比可以自行baidu或者google,我所瞭解的guice只是實現了依賴注入,而且相對於spring來說周邊生態還是比較弱的,所以我把guice定義為一個輕量級依賴注入框架,由於guice非常小且速度

C3P0連線池Druid連線池

C3P0資料連線池: 所需要匯入jar包: package utils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.s

Spring Boot 使用 Druid 監控配置

Druid是Java語言中最好的資料庫連線池,並且能夠提供強大的監控和擴充套件功能。 業界把 Druid 和 HikariCP 做對比後,雖說 HikariCP 的效能比 Druid 高,但是因為 Druid 包括很多維度的統計和分析功能,所以這也是大家都選擇使用它的原

【Java】SpringMVC整合mybatis 連線池c3p0druid分別實驗

1.pom.xmlSpring框架包 mybatis包 AOP包 aspectj包 aopalliance包<!-- mysql start --> <dependency> <groupId>mysql</groupId

DBCPDruid資料庫連線池使用

需要用到的jar包,commons-dbcp2-*.jar、commons-logging-*.jar、commons-pool2-*.jar,*代表版本號 DataSourceTest類 pa

SpringBoot2.0.3配置Druid監控

1、pom檔案加入<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId>

淺析:Connection reset druid的bug歸併

錯誤: java.sql.SQLRecoverableException: IO 錯誤: Connection reset org.springframework.transaction.TransactionSystemException: Could not

SpringBoot:spring boot使用Druid監控配置

Spring Boot預設的資料來源是:org.apache.tomcat.jdbc.pool.DataSource 業界把 Druid 和 HikariCP 做對比後,雖說 HikariCP 的效能比 Druid 高,但是因為 Druid 包括很多維度的統計和分析功能,所

c3p0,dbcpdruid連線池效能解析

  阿里出品,淘寶和支付寶專用資料庫連線池,但它不僅僅是一個數據庫連線池,它還包含一個ProxyDriver,一系列內建的JDBC元件庫,一個 SQL Parser。支援所有JDBC相容的資料庫,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。Druid針對Or

spring-boot整合mybatisdruid連線池(多資料來源)

上一篇文章介紹了 spring-boot整合mybatis和druid連線池如何配置和使用,本篇文章是上篇的擴充套件,如果業務中出現了需要從多個數據源中獲取資料,到底該如何實現?本文主要介紹在一種最為簡單的實現方案:多資料來源 - 多例項。 在上篇文章中不難看出Spring

轉 Spring Boot使用Druid監控配置

Spring Boot預設的資料來源是:org.apache.tomcat.jdbc.pool.DataSource 整體步驟: (1)    ——   Druid簡單介紹,具體看官網; (2)     —— 在pom.xml配置druid依賴包; (3)  

jQuery選擇器引擎Sizzle介紹

document 遞歸 展示 學院 extra 上下文 和源 err sizzle p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Arial; color: #323333 } p.p2 { margin: 0.0

軟中斷tasklet介紹

表示 種類 blog 連接 關系 定義 深入 tor 好的 今天看了下tasklet,重點分析了其和軟中斷的關系,特此記錄 關於軟中斷,在之前的中斷文章中已經有所介紹,這裏就不多說了,只是說明下,系統中默認支持32種軟中斷,而實際上系統定義的軟中斷僅有以下幾種。 e

架構師之路--搜索業務技術介紹及容錯機制

朋友 單節點 adb 一致性 公司 一個 memcache 消息通知 包括  今天和搜索部門一起做了一下MQ的遷移,順便交流一下業務和技術。發現現在90後小夥都挺不錯。我是指能力和探究心。我家男孩,不招女婿。   在前面的文章中也提到,我們有媒資庫(樂視視頻音頻本身內容)