阿里巴巴Druid數據源的配置與使用

Druid是阿里巴巴開源平臺上的一個項目,整個項目由數據庫鏈接池、插件框架和SQL解析器組成。該項目主要是爲了擴展JDBC的一些限制,可讓程序員實現一些特殊的需求,好比向密鑰服務請求憑證、統計SQL信息、SQL性能收集、SQL注入檢查、SQL翻譯等,程序員能夠經過定製來實現本身須要的功能。 java

該項目在阿里巴巴內部獲得了普遍的部署,在外部也有大量的用戶羣。爲了使你們更好地瞭解和使用Druid在此作一些簡單的介紹,以幫助你們快速入門。mysql

目前比較流行的數據源還有:c3p0,dbcp,proxool,BoneCP等。其中spring,hibernate都默認推薦使用c3p0,Tomcat默認使用dbcp。程序員

如下是本人鏈接mysql數據庫測試的性能:(本人水平有限,僅作參考,不一樣的數據庫,不一樣的環境可能存在較大差別)spring

連續操做1000次數據庫寫入操做的用時比較:sql

數據源數據庫

用時 msapp

C3p0框架

3630maven

proxool性能

3240

druid

3190

dbcp

3264

   根據分析,druid性能超過其餘數據源,但在屢次運行過程是druid、proxool出現崩潰兩次。C3p0和dbcp在相對比較穩定。其中c3p0有自動回收鏈接功能,而dbcp沒有自動回收鏈接的功能。

 

 

好了,廢話少說,下面快速給你們使用druid配置數據鏈接:

1:添加maven依賴

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.0.18</version>

</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.38</version>

</dependency>

 

2:添加一個資源配置文件(建議)

    driver=com.mysql.jdbc.Driver

url=jdbc:mysql:///wangjian?characterEncoding=UTF-8&autoReconnect=true

username=root

password=1234

#最大鏈接數

maxActive=3

 

3:建立工廠類讀取資源文件並建立javax.sql.DataSource的實例

    須要先聲明DruidDataSoure設置鏈接信息,其後再賦值給javax.sql.DataSource。完整代碼以下:

Properties prop = new Properties();

prop.load(DSUtils.class.getResourceAsStream("pwd.properties"));

String driver = prop.getProperty("driver");

String url = prop.getProperty("url");

String username =prop.getProperty("username");

String password = prop.getProperty("password");

String maxActive = prop.getProperty("maxActive");

//聲明DruidDataSource

DruidDataSource ds = new DruidDataSource();

ds.setDriverClassName(driver);

ds.setUrl(url);

ds.setUsername(username);

ds.setPassword(password);

ds.setMaxActive(Integer.parseInt(maxActive));

相信小夥伴位,在建立DruidDataSource之後,以然已經會使用了吧。哈哈~

 

4:對密碼進行加密之後再保存到資源文件中並配置

因爲在資源文件中,配置了數據庫明文密碼,爲了保護密碼,可使用Druid數據源密碼加密的功能。

4.一、首先對密碼進行加密獲取一個publickey和加密後的密碼

執行如下命令:

 C:/>java –cp druid-1.0.18.jar com.alibaba.druid.filter.config.ConfigTools 密碼

 

上面的命令中,藍線部分爲隨機生成的publickey,每次隨機。紅線中的爲生成的密碼。

 

4.二、將publickey和密碼配置到資源文件中

生成密碼的命令:java -cp druid-1.0.18.jar com.alibaba.druid.filter.config.ConfigTools e234

driver=com.mysql.jdbc.Driver

url=jdbc:mysql:///wangjian?characterEncoding=UTF-8&autoReconnect=true&useSSL=false

username=root

#通過加密之後的密碼

password=XSY9axcew83ZVNeZUmgrOPXwP0d3ZziFmqal4IZPAAJ4mpnwbouWiUaqD…

#最大鏈接數

maxActive=3

#生成的公鑰

publicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANTxMV9TZYKpQCm7E+mEOhW0…

 

 

4.三、修改DruidDataSource實例化過程以下

主要是添加publickey和通過加密的密碼,並指定過慮器:

//讀取資源文件

Properties prop = new Properties();

prop.load(DSUtils.class.getResourceAsStream("pwd.properties"));

String driver = prop.getProperty("driver");

String url = prop.getProperty("url");

String username =prop.getProperty("username");

String password = prop.getProperty("password");

String maxActive = prop.getProperty("maxActive");

String publickey = prop.getProperty("publickey");

//聲明DruidDataSource

DruidDataSource ds = new DruidDataSource();

ds.setDriverClassName(driver);

ds.setUrl(url);

ds.setUsername(username);

ds.setPassword(password);

ds.setMaxActive(Integer.parseInt(maxActive));

//config:使用ConfigFilter解密,Stat:啓動監控功能StatFilter

ds.setFilters("config,stat");

//設置解密使用的publickey

ds.setConnectionProperties("config.decrypt=true;config.decrypt.key="+publickey);

 

5:配置監功能查看Druid數據源的監控信息

配置Druid用於監控的Servlet以下:

<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>

 

運行監控的效果圖:

 

 

 

總結:

   1:Druid數據源用維護鏈接對象是DruidDataSource 。

   2:能夠經過ConfigTools對用戶的密碼進行加密。

   3:能夠經過配置的方式,監控SQL執行。

相關文章
相關標籤/搜索