posts - 64,comments - 22,trackbacks - 0

          TDDL動(dòng)態(tài)數(shù)據(jù)源基本說明

          總體描述

          TDDL動(dòng)態(tài)數(shù)據(jù)源主要分為2層,每一層都實(shí)現(xiàn)了jdbc規(guī)范,以方便地集成到各種orm框架或者直接使用.每一層都各司其職.

           

          整體結(jié)構(gòu)如上圖,TGroupDataSource(tddl group ds)默認(rèn)情況下依賴TAtomDataSource(tddl atom ds),但是可以擴(kuò)展依賴普通數(shù)據(jù)源.這一層主要的職責(zé)是解決讀寫分離以及主備切換的問題,當(dāng)然是在線執(zhí)行這些動(dòng)作,無需重啟.一個(gè)TGroupDataSource底下會(huì)掛多個(gè)TAtomDataSource,每個(gè)TAtomDataSource都有相對(duì)應(yīng)的讀寫權(quán)重.

          TAtomDataSource(tddl atom ds)這一層并沒有實(shí)現(xiàn)真正的數(shù)據(jù)源邏輯,而是依賴了一個(gè)近似第三方的包-我們jboss剝離出來的datasource,這一層的職責(zé)主要是將單個(gè)數(shù)據(jù)源的配置放置到diamond服務(wù)器中,實(shí)現(xiàn)數(shù)據(jù)源配置的集中管理和動(dòng)態(tài)變更.減少運(yùn)維成本. TAtomDataSource實(shí)際對(duì)應(yīng)了一個(gè)真正的數(shù)據(jù)源.

          Tddl動(dòng)態(tài)數(shù)據(jù)源暫時(shí)支持mysql和oracle ,但是因?yàn)槊恳粚佣际莏dbc的實(shí)現(xiàn),所以很容易擴(kuò)展支持其他實(shí)現(xiàn)jdbc規(guī)范的數(shù)據(jù)源.

          TGroupDataSource

          1. 基本功能

          (1)     主備數(shù)據(jù)庫動(dòng)態(tài)容災(zāi)切換

          支持進(jìn)行主備的對(duì)調(diào)切換,狀態(tài)對(duì)調(diào)后備庫變?yōu)橹鲙欤鲙熳優(yōu)閭鋷?/p>

          (2)     相同數(shù)據(jù)分片讀寫分離

          針對(duì)mysql replication機(jī)制進(jìn)行的數(shù)據(jù)主備復(fù)制,可以直接使用group datasource來支持讀寫分離。讀寫分離支持權(quán)重設(shè)置,允許對(duì)不同庫使用不同的權(quán)重。

          (3)     讀重試

          一臺(tái)數(shù)據(jù)庫掛掉后,如果是個(gè)fatal exception(有定義),那么會(huì)進(jìn)入讀重試,以確保盡可能多的數(shù)據(jù)訪問可以在正常數(shù)據(jù)庫中訪問。

          (4)     數(shù)據(jù)庫掛掉排除,單線程重試

          使用try – lock機(jī)制來進(jìn)行線程保護(hù),在第一次捕捉到fatal exception以后,只允許一個(gè)線程進(jìn)入數(shù)據(jù)庫進(jìn)行數(shù)據(jù)訪問,直到數(shù)據(jù)庫可以正常的工作為止

          (5)     流量控制,數(shù)據(jù)庫保護(hù)

          1. 延展性功能

          (1)     指定數(shù)據(jù)庫訪問(ThreadLocal)

          一組對(duì)等數(shù)據(jù)庫中,寫庫一般只配置一個(gè),其余數(shù)據(jù)庫都為備庫,因?yàn)橥ㄟ^復(fù)制機(jī)制,所以主備主鍵有延遲,對(duì)于各種類型的讀(實(shí)時(shí)讀和延遲讀),可以使用GroupDataSourceRouteHelper.executeByGroupDataSourceIndex(int dataSourceIndex)指定需要訪問的數(shù)據(jù)庫.

          (2)     指定數(shù)據(jù)庫訪問(Hint)

          這是指定數(shù)據(jù)庫訪問的另外一種方式. 這種方式是在sql之前加注釋,告知tddl動(dòng)態(tài)數(shù)據(jù)源該選擇第幾個(gè)數(shù)據(jù)庫.類似: /*+TDDL_GROUP({groupIndex:0})*/select * from normaltbl_0001 where pk = ? 變幻groupIndex的數(shù)字即可指定具體的第幾個(gè)庫,從0開始.

          TAtomDataSource

          1. 基本功能

          (1)     數(shù)據(jù)源配置集中管控

          (2)     定期密碼變更

          (3)     Jboss數(shù)據(jù)源連接池的配置管理和推送

          1. 延展性功能

          (1)  動(dòng)態(tài)創(chuàng)建,添加,減少數(shù)據(jù)源

          (2)  數(shù)據(jù)庫R,W,NA狀態(tài)通知,以及讀寫訪問控制,如置為NA則數(shù)據(jù)庫所有訪問會(huì)直接拋出SQLException

          (3)  數(shù)據(jù)庫保護(hù)

          Diamond中配置說明.

          Tddl的動(dòng)態(tài)數(shù)據(jù)源配置都放置在diamond配置中心,而一條diamond配置包括一個(gè)全局唯一的dataId和GROUP, tddl的配置數(shù)據(jù)也不例外,以下主要說明tddl動(dòng)態(tài)數(shù)據(jù)源的dataId拼寫以及每一個(gè)dataId下數(shù)據(jù)的內(nèi)容.(詳細(xì)示例請(qǐng)參考示例使用說明文檔)

          1. 1.       TGroupDataSource的配置

          Group中的配置主要是配置一組對(duì)等的數(shù)據(jù)的讀寫權(quán)重

          dataId組成規(guī)范:“com.taobao.tddl.jdbc.group_V2.4.1_”+dbGroupKey

          配置內(nèi)容(示例):tddl_sample_0:r10w10p0,tddl_sample_0_bac:r10w0p0

          其中tddl_sample_0和tddl_sample_0_bak就是下一層需要的dbKey,后面r為讀權(quán)重,w為寫權(quán)重

          1. 2.       TAtomDataSource的配置

          atom ds中的配置分為了3部分(global,app,user),配置內(nèi)容全部為java的properties格式

          Global

          dataId組成規(guī)范: “com.taobao.tddl.atom.global.”+dbKey

          配置內(nèi)容:

          屬性key說明
          ip數(shù)據(jù)實(shí)例的ip
          port數(shù)據(jù)實(shí)例的端口
          dbname數(shù)據(jù)庫名稱
          dbTypeMYSQL,ORACLE
          dbStatusRW,NA

          App

          dataId組成規(guī)范: “com.taobao.tddl.atom.app.”+appName+”.”+dbKey

          配置內(nèi)容:

          屬性key說明
          username該應(yīng)用使用的用戶名
          oracleConTypeoci,thin,如果db為mysql,則不用理會(huì)
          minPoolSize最小連接池
          maxPoolSize最大連接池
          idleTimeout連接的最大空閑時(shí)間
          blockingTimeout等待連接的最大時(shí)間
          preparedStatementCacheSizeOracle專用
          writeRestrictTimes單位timeSliceInMillis寫限制,默認(rèn)空不限制
          readRestrictTimes單位timeSliceInMillis讀限制,默認(rèn)空不限制
          threadCountRestrict并發(fā)線程限制,默認(rèn)空不限制
          timeSliceInMillis限制的時(shí)間單位
          connectionProperties連接參數(shù)

          User

          dataId組成規(guī)范: “com.taobao.tddl.atom.passwd.”+dbName+”.”+dbType+”.”+userName

          配置內(nèi)容:

          屬性key說明
          encPasswd密碼
          encKey密鑰
          posted on 2013-11-10 11:13 hellxoul 閱讀(1738) 評(píng)論(0)  編輯  收藏 所屬分類: other

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 从化市| 新余市| 芮城县| 东宁县| 成都市| 黄骅市| 清水县| 涞源县| 漯河市| 北碚区| 昌吉市| 永济市| 股票| 河北区| 个旧市| 民乐县| 鹤壁市| 富阳市| 大悟县| 定襄县| 柳林县| 阿克| 刚察县| 桂林市| 南昌市| 治多县| 德安县| 玛多县| 平阳县| 中山市| 光泽县| 江陵县| 道孚县| 离岛区| 大安市| 汾阳市| 黄骅市| 辛集市| 高雄市| 泾源县| 合江县|