




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
\o"阿里巴巴開(kāi)源項(xiàng)目Druid負(fù)責(zé)人溫少訪談"阿里巴巴開(kāi)源項(xiàng)目Druid負(fù)責(zé)人溫少訪談Druid是阿里巴巴開(kāi)源平臺(tái)上的一個(gè)項(xiàng)目,整個(gè)項(xiàng)目由數(shù)據(jù)庫(kù)連接池、插件框架和SQL解析器組成。該項(xiàng)目主要是為了擴(kuò)展JDBC的一些限制,可以讓程序員實(shí)現(xiàn)一些特殊的需求,比如向密鑰服務(wù)請(qǐng)求憑證、統(tǒng)計(jì)SQL信息、SQL性能收集、SQL注入檢查、SQL翻譯等,程序員可以通過(guò)定制來(lái)實(shí)現(xiàn)自己需要的功能。
該項(xiàng)目在阿里巴巴內(nèi)部得到了廣泛的部署,在外部也有大量的用戶群。為了使大家更好地了解和使用Druid,我們采訪了Druid項(xiàng)目的主要負(fù)責(zé)人——溫少(博客)。目錄\o"隱藏/顯示目錄"[-]溫少是ITeye的名人了,為了照顧新會(huì)員,先來(lái)個(gè)自我介紹吧!Druid是什么?有什么作用?Druid的項(xiàng)目背景?目前的項(xiàng)目團(tuán)隊(duì)情況?開(kāi)源目的?Druid支持哪些數(shù)據(jù)庫(kù)?Druid是如何擴(kuò)展JDBC的?為什么說(shuō)Druid是“最好的數(shù)據(jù)庫(kù)連接池”?體現(xiàn)在哪些方面?這是如何實(shí)現(xiàn)的?Druid的性能如何?能否給出一些測(cè)試對(duì)比數(shù)據(jù)?談?wù)凞ruid的SQL解析功能?效率如何?Druid的擴(kuò)展性如何?在SQL注入防御方面,Druid的優(yōu)勢(shì)是什么?實(shí)現(xiàn)原理是什么?目前Druid的應(yīng)用(部署)情況?我想將其中的某個(gè)模塊(比如監(jiān)控模塊)用到其他連接池,是否可以?模塊的獨(dú)立性如何?我想在項(xiàng)目中使用,應(yīng)該注意哪些事項(xiàng)?能否用于商業(yè)項(xiàng)目?配置是否復(fù)雜?能否給出一個(gè)典型的配置實(shí)例?我目前使用其他連接池(DBCP/C3P0/Proxool等),如何遷移到Druid?其他開(kāi)發(fā)者如何反饋問(wèn)題、提交bug?溫少是ITeye的名人了,為了照顧新會(huì)員,先來(lái)個(gè)自我介紹吧!我2001年畢業(yè)于深圳大學(xué),畢業(yè)后到金蝶軟件研發(fā)中心工作9年,工作內(nèi)容包括工作流引擎、多數(shù)據(jù)庫(kù)支持引擎、短信網(wǎng)網(wǎng)關(guān)等。
2010年3月加入阿里巴巴至今,主要的工作是設(shè)計(jì)和實(shí)現(xiàn)阿里巴巴應(yīng)用監(jiān)控系統(tǒng)Dragoon,Druid和Fastjson都是監(jiān)控系統(tǒng)實(shí)現(xiàn)的副產(chǎn)品。Druid是什么?有什么作用?Druid首先是一個(gè)數(shù)據(jù)庫(kù)連接池,但它不僅僅是一個(gè)數(shù)據(jù)庫(kù)連接池,它還包含一個(gè)ProxyDriver,一系列內(nèi)置的JDBC組件庫(kù),一個(gè)SQLParser。Druid的項(xiàng)目背景?目前的項(xiàng)目團(tuán)隊(duì)情況?開(kāi)源目的?2010年開(kāi)始,我負(fù)責(zé)設(shè)計(jì)一個(gè)叫做Dragoon的監(jiān)控系統(tǒng),需要一些監(jiān)控組件,監(jiān)控應(yīng)用程序的運(yùn)行情況,包括WebURI、Spring、JDBC等。為了監(jiān)控SQL執(zhí)行情況,我做了一個(gè)Filter-Chain模式的ProxyDriver,缺省提供StatFilter。當(dāng)時(shí)我還做了一個(gè)SQLParser。老板說(shuō),不如我們來(lái)一個(gè)更大的計(jì)劃,把連接池、SQLParser、ProxyDriver合起來(lái)做一個(gè)項(xiàng)目,命名為Druid,于是Druid就誕生了。
2011年2月春節(jié)期間,我完成了連接池(DruidDataSource)的第一個(gè)版本,4月開(kāi)始在生產(chǎn)環(huán)境測(cè)試,2012年第一季度開(kāi)始大規(guī)模實(shí)施。
提交過(guò)代碼的開(kāi)發(fā)者有5個(gè)人,主要代碼是我維護(hù),有一人專門負(fù)責(zé)內(nèi)部實(shí)施。
通過(guò)開(kāi)源,希望有更多使用場(chǎng)景,更多的反饋,更多人參與其中,共同打造最好的數(shù)據(jù)庫(kù)連接池。Druid支持哪些數(shù)據(jù)庫(kù)?Druid支持所有JDBC兼容的數(shù)據(jù)庫(kù),包括Oracle、MySql、Derby、Postgresql、SQLServer、H2等等。
Druid針對(duì)Oracle和MySql做了特別優(yōu)化,比如Oracle的PSCache內(nèi)存占用優(yōu)化,MySql的ping檢測(cè)優(yōu)化。Druid是如何擴(kuò)展JDBC的?Druid在DruidDataSourc和ProxyDriver上提供了Filter-Chain模式的擴(kuò)展API,類似Serlvet的Filter,配置Filter攔截JDBC的方法調(diào)用。為什么說(shuō)Druid是“最好的數(shù)據(jù)庫(kù)連接池”?體現(xiàn)在哪些方面?這是如何實(shí)現(xiàn)的?阿里巴巴是一個(gè)重度使用關(guān)系數(shù)據(jù)庫(kù)的公司,我們?cè)谏a(chǎn)環(huán)境中大量的使用Druid,通過(guò)長(zhǎng)期在極高負(fù)載的生產(chǎn)環(huán)境中實(shí)際使用、修改和完善,讓Druid逐步發(fā)展成最好的數(shù)據(jù)庫(kù)連接池。Druid在監(jiān)控、可擴(kuò)展性、穩(wěn)定性和性能方面都有明顯的優(yōu)勢(shì)。
首先,強(qiáng)大的監(jiān)控特性,通過(guò)Druid提供的監(jiān)控功能,可以清楚知道連接池和SQL的工作情況。監(jiān)控SQL的執(zhí)行時(shí)間、ResultSet持有時(shí)間、返回行數(shù)、更新行數(shù)、錯(cuò)誤次數(shù)、錯(cuò)誤堆棧信息。SQL執(zhí)行的耗時(shí)區(qū)間分布。什么是耗時(shí)區(qū)間分布呢?比如說(shuō),某個(gè)SQL執(zhí)行了1000次,其中0~1毫秒?yún)^(qū)間50次,1~10毫秒800次,10~100毫秒100次,100~1000毫秒30次,1~10秒15次,10秒以上5次。通過(guò)耗時(shí)區(qū)間分布,能夠非常清楚知道SQL的執(zhí)行耗時(shí)情況。監(jiān)控連接池的物理連接創(chuàng)建和銷毀次數(shù)、邏輯連接的申請(qǐng)和關(guān)閉次數(shù)、非空等待次數(shù)、PSCache命中率等。
其次,方便擴(kuò)展。Druid提供了Filter-Chain模式的擴(kuò)展API,可以自己編寫Filter攔截JDBC中的任何方法,可以在上面做任何事情,比如說(shuō)性能監(jiān)控、SQL審計(jì)、用戶名密碼加密、日志等等。
Druid內(nèi)置提供了用于監(jiān)控的StatFilter、日志輸出的Log系列Filter、防御SQL注入攻擊的WallFilter。
阿里巴巴內(nèi)部實(shí)現(xiàn)了用于數(shù)據(jù)庫(kù)密碼加密的CirceFilter,以及和Web、Spring關(guān)聯(lián)監(jiān)控的DragoonStatFilter。
第三,Druid集合了開(kāi)源和商業(yè)數(shù)據(jù)庫(kù)連接池的優(yōu)秀特性,并結(jié)合阿里巴巴大規(guī)模苛刻生產(chǎn)環(huán)境的使用經(jīng)驗(yàn)進(jìn)行優(yōu)化。ExceptionSorter。當(dāng)一個(gè)連接產(chǎn)生不可恢復(fù)的異常時(shí),例如Oracleerror_code_28sessionhasbeenkilled,必須立刻從連接池中逐出,否則會(huì)產(chǎn)生大量錯(cuò)誤。目前只有Druid和JBossDataSource實(shí)現(xiàn)了ExceptionSorter。PSCache內(nèi)存占用優(yōu)化對(duì)于支持游標(biāo)的數(shù)據(jù)庫(kù)(Oracle、SQLServer、DB2等,不包括MySql),PSCache可以大幅度提升SQL執(zhí)行性能。一個(gè)PreparedStatement對(duì)應(yīng)服務(wù)器一個(gè)游標(biāo),如果PreparedStatement被緩存起來(lái)重復(fù)執(zhí)行,PreparedStatement沒(méi)有被關(guān)閉,服務(wù)器端的游標(biāo)就不會(huì)被關(guān)閉,性能提高非常顯著。在類似“SELECT*FROMTWHEREID=?”這樣的場(chǎng)景,性能可能是一個(gè)數(shù)量級(jí)的提升。但在OracleJDBCDriver中,其他的數(shù)據(jù)庫(kù)連接池(DBCP、JBossDataSource)會(huì)占用內(nèi)存過(guò)多,極端情況可能大于1G。Druid調(diào)用OracleDriver提供管理PSCache內(nèi)部API。LRU是一個(gè)性能關(guān)鍵指標(biāo),特別Oracle,每個(gè)Connection對(duì)應(yīng)數(shù)據(jù)庫(kù)端的一個(gè)進(jìn)程,如果數(shù)據(jù)庫(kù)連接池遵從LRU,有助于數(shù)據(jù)庫(kù)服務(wù)器優(yōu)化,這是重要的指標(biāo)。Druid、DBCP、Proxool、JBoss是遵守LRU的。BoneCP、C3P0則不是。BoneCP在mock環(huán)境下性能可能還好,但在真實(shí)環(huán)境中則就不好了。Druid的性能如何?能否給出一些測(cè)試對(duì)比數(shù)據(jù)?性能不是Druid的設(shè)計(jì)目標(biāo),但是測(cè)試數(shù)據(jù)表明,Druid性能比DBCP、C3P0、Proxool、JBoss都好。
這里有一些測(cè)試數(shù)據(jù):/wiki/pages/viewpage.action?pageId=2916539談?wù)凞ruid的SQL解析功能?效率如何?Druid提供了MySql、Oracle、Postgresql、SQL-92的SQL的完整支持,這是一個(gè)手寫的高性能SQLParser,支持Visitor模式,使得分析SQL的抽象語(yǔ)法樹(shù)很方便。
簡(jiǎn)單SQL語(yǔ)句用時(shí)10微秒以內(nèi),復(fù)雜SQL用時(shí)30微秒。
通過(guò)Druid提供的SQLParser可以在JDBC層攔截SQL做相應(yīng)處理,比如說(shuō)分庫(kù)分表、審計(jì)等。Druid防御SQL注入攻擊的WallFilter就是通過(guò)Druid的SQLParser分析語(yǔ)義實(shí)現(xiàn)的。Druid的擴(kuò)展性如何?Druid提供Filter-Chain模式的插件框架,通過(guò)編寫Filter配置到DruidDataSource中就可以攔截JDBC的各種API,從而實(shí)現(xiàn)擴(kuò)展。Druid提供了一系列內(nèi)置Filter。在SQL注入防御方面,Druid的優(yōu)勢(shì)是什么?實(shí)現(xiàn)原理是什么?Druid的優(yōu)勢(shì)是在JDBC最低層進(jìn)行攔截做判斷,不會(huì)遺漏。
Druid實(shí)現(xiàn)了Oracle、MySql、Postgresql、SQL-92的Parser,基于SQL語(yǔ)法分析實(shí)現(xiàn),理解其中的SQL語(yǔ)義,智能、準(zhǔn)確、誤報(bào)率低。
具體細(xì)節(jié)參考這里:/wiki/display/Druid/WallFilter目前Druid的應(yīng)用(部署)情況?Druid是阿里巴巴監(jiān)控系統(tǒng)Dragoon的副產(chǎn)品,從Dragoon監(jiān)控系統(tǒng)的數(shù)據(jù)來(lái)看,在阿里巴巴已經(jīng)部署了600多個(gè)應(yīng)用。在阿里巴巴外部也有很多Druid的用戶,外部用戶沒(méi)有正式統(tǒng)計(jì)數(shù)據(jù),但經(jīng)常有反饋。我想將其中的某個(gè)模塊(比如監(jiān)控模塊)用到其他連接池,是否可以?模塊的獨(dú)立性如何?可以通過(guò)DruidDriver把內(nèi)置的Filter用在其他連接池中。在2011年上半年DruidDataSource不成熟的時(shí)候,我們也是這么做的。在其他連接池中使用內(nèi)置的Filter,需要修改jdbc-url,使用DruidDriver作為一個(gè)ProxyDriver。我想在項(xiàng)目中使用,應(yīng)該注意哪些事項(xiàng)?能否用于商業(yè)項(xiàng)目?Druid是一個(gè)開(kāi)源項(xiàng)目,基于Apache2.0協(xié)議,你可以免費(fèi)自由使用。Druid只支持JDK6以上版本,不支持JDK1.4和JDK5.0。配置是否復(fù)雜?能否給出一個(gè)典型的配置實(shí)例?為了方便大家遷移,Druid的配置和DBCP是基本一致的,如果你原來(lái)是使用DBCP,遷移是十分方便的,只需要把mons.dbcp.BasicDataSource修改為om.alibaba.druid.pool.DruidDataSource就好了。
以下是一個(gè)參考配置:Xml代碼<beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"init-method="init"destroy-method="close"><propertyname="url"value="${jdbc_url}"/><propertyname="username"value="${jdbc_user}"/><propertyname="password"value="${jdbc_password}"/><propertyname="filters"value="stat"/><propertyname="maxActive"value="20"/><propertyname="initialSize"value="1"/><propertyname="maxWait"value="60000"/><propertyname="minIdle"value="1"/><propertyname="timeBetweenEvictionRunsMillis"value="60000"/><propertyname="minEvictableIdleTimeMillis"value="300000"/><propertyname="validationQuery"value="SELECT'x'"/><propertyname="testWhileIdle"value="true"/><propertyname="testOnBorrow"value="false"/><propertyname="testOnReturn"value="false"/><propertyname="poolPreparedStatements"value="true"/>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 國(guó)際物流師商業(yè)模式考題分析試題及答案
- 2024年CPSM考試映射試題與答案
- 國(guó)際物流師經(jīng)典案例試題及答案
- 2025年中國(guó)全棉氨綸珠地網(wǎng)眼布市場(chǎng)調(diào)查研究報(bào)告
- 二零二五年度全國(guó)性異業(yè)聯(lián)盟創(chuàng)新合作框架協(xié)議
- 2024年CPSM考試?yán)碚撝R(shí)與職業(yè)發(fā)展關(guān)系試題及答案
- 2025年中國(guó)低漏型鋁電解電容器數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 第4單元 第2課時(shí) 千以內(nèi)數(shù)的讀寫(教案)2024-2025學(xué)年二年級(jí)數(shù)學(xué)下冊(cè) 《新征程》(蘇教版)
- 知識(shí)產(chǎn)權(quán)流程專員轉(zhuǎn)正匯報(bào)
- 2025年中國(guó)三聯(lián)名片冊(cè)市場(chǎng)調(diào)查研究報(bào)告
- 上海市第一至十八屆高一物理基礎(chǔ)知識(shí)競(jìng)賽試題及答案
- 《旅游政策與法規(guī)》考試復(fù)習(xí)題庫(kù)及答案
- 部編版小學(xué)六年級(jí)語(yǔ)文下冊(cè)全冊(cè)教案(詳案)
- 公路水運(yùn)工程質(zhì)量監(jiān)督管理規(guī)定解讀課件
- 項(xiàng)目后評(píng)價(jià)報(bào)告編制大綱(2022版)
- 工程質(zhì)量目標(biāo)質(zhì)量管理體系及技術(shù)組織措施
- 風(fēng)景園林管理與法規(guī)PPT課件全書課件完整版ppt全套教學(xué)教程最全電子教案電子講義(最新)
- 部編版小學(xué)一年級(jí)下冊(cè)寫字表田字格版字帖
- 中國(guó)風(fēng)古人讀書教學(xué)課件PPT模板
- 2022年垃圾房管理規(guī)定
- 標(biāo)準(zhǔn)田字格模板A4紙word
評(píng)論
0/150
提交評(píng)論