Druid是什么?
Druid是一個JDBC組件,它包括四個部分:
http://download.csdn.net/download/feelnature/1580901
http://tomcat.apache.org/tomcat-8.5-doc/monitoring.html#Enabling_JMX_Remote
http://download.csdn.net/detail/qq_21163257/9695557
-
DruidDriver 代理Driver,能夠提供基于Filter-Chain模式的插件體系。
-
DruidDataSource 高效可管理的數據庫連接池。
-
SQLParser
-
擴展組件
-
Binary: http://code.alibabatech.com/mvn/releases/com/alibaba/druid/0.1.2/druid-0.1.2.jar
-
Source: http://code.alibabatech.com/mvn/releases/com/alibaba/druid/0.1.2/druid-0.1.2-sources.jar
Druid可以做什么?
-
可以監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,能夠詳細統計SQL的執行性能,這對于線上分析數據庫訪問性能有幫助。
-
替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池。
-
數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是不好的行為,容易導致安全問題。DruidDruiver和DruidDataSource都支持PasswordCallback。
-
SQL執行日志,Druid提供了不同的LogFilter,能夠支持Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的數據庫訪問情況。
-
擴展JDBC,如果你要對JDBC層有編程的需求,可以通過Druid提供的Filter機制,很方便編寫JDBC層的擴展插件。
DruidDriver,是一個ProxyJdbcDriver,它提供了Filter-Chain模式的擴展機制,使得在Jdbc擴展編程特別方便。
Druid提供了一些內置的擴展機制,包括Stat、Log、Trace、HA等擴展。
DruidDataSource是一個數據庫連接池的實現,它的設計目標是提供一個當前最好的數據庫連接池,在性能、擴展性等方面取得最合適的平衡,取代DBCP、C3P0等連接池。
-
高性能。測試數據表明,Druid比DBCP、C3P0、BoneCP的性能都好很多。具體請看測試數據
-
可管理性,DruidDataSource本身提供了很多監控屬性,具體看這里。DruidDataSource支持StatFilter,具體配置看 這里
-
可擴展性,提供基于Filter-Chain模式的擴展機制。具體自定義擴展的例子看這里。
-
替換DBCP,配置和DBCP兼容,可以方便替換DBCP。
-
適合大規模應用。結合Alibaba使用數據庫連接池的經驗,避免一些已知問題,例如數據庫不可用恢復之后產生的連接風暴問題等。
設計
這是DruidDataSource的設計圖示:
http://code.alibabatech.com/svn/druid/trunk/doc/druid-pool.txt
如果發現有亂碼,請選擇utf-8的編碼方式查看。
Druid提供一個手工編寫的高性能的方便擴展的SQL Parser。將會支持MySQL、Oracle等流行關系數據庫的SQL Parser。
Parser組件包括如下幾個部分:
-
Lexer 詞法解析
-
Parser,Parser包括ExprParser,各種StatementParser。
-
AST, Abstract Syntax Tree。ParserParse出來的結果就是AST。
-
Visitor。對AST做各種處理,比如FormatOutput,遍歷等等。
簡介
Druid提供了強大的監控功能,能夠監控連接池行為和SQL執行情況,讓你能夠詳細了解應用的數據庫訪問行為。
監控對象
-
Druid的統計信息定義代碼實現在com/alibaba/druid/stat下。所有的Stat都全局靜態變量的方式保存,這樣做使得外部獲取監控信息更容易。
-
獲取Druid監控信息的入口是com.alibaba.druid.stat.JdbcStatManager
-
Druid的監控統計信息都是通過StatFilter來實現的,如果你需要數據源進行監控,那你需要啟用StatFilter
大盤預測
國富論
posted on 2017-03-21 00:11
華夢行 閱讀(277)
評論(0) 編輯 收藏