posts - 64,comments - 22,trackbacks - 0

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

          總體描述

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

           

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

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

          Tddl動態(tài)數(shù)據(jù)源暫時支持mysql和oracle ,但是因為每一層都是jdbc的實現(xiàn),所以很容易擴展支持其他實現(xiàn)jdbc規(guī)范的數(shù)據(jù)源.

          TGroupDataSource

          1. 基本功能

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

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

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

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

          (3)     讀重試

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

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

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

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

          1. 延展性功能

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

          一組對等數(shù)據(jù)庫中,寫庫一般只配置一個,其余數(shù)據(jù)庫都為備庫,因為通過復制機制,所以主備主鍵有延遲,對于各種類型的讀(實時讀和延遲讀),可以使用GroupDataSourceRouteHelper.executeByGroupDataSourceIndex(int dataSourceIndex)指定需要訪問的數(shù)據(jù)庫.

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

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

          TAtomDataSource

          1. 基本功能

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

          (2)     定期密碼變更

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

          1. 延展性功能

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

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

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

          Diamond中配置說明.

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

          1. 1.       TGroupDataSource的配置

          Group中的配置主要是配置一組對等的數(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ù)實例的ip
          port數(shù)據(jù)實例的端口
          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,則不用理會
          minPoolSize最小連接池
          maxPoolSize最大連接池
          idleTimeout連接的最大空閑時間
          blockingTimeout等待連接的最大時間
          preparedStatementCacheSizeOracle專用
          writeRestrictTimes單位timeSliceInMillis寫限制,默認空不限制
          readRestrictTimes單位timeSliceInMillis讀限制,默認空不限制
          threadCountRestrict并發(fā)線程限制,默認空不限制
          timeSliceInMillis限制的時間單位
          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) 評論(0)  編輯  收藏 所屬分類: other

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 广南县| 平利县| 孟村| 玉林市| 双峰县| 林州市| 漳州市| 合山市| 赤水市| 旅游| 桂平市| 浦北县| 册亨县| 敦煌市| 司法| 同心县| 广南县| 谷城县| 宜春市| 郎溪县| 徐水县| 天津市| 嵩明县| 蕉岭县| 文登市| 集贤县| 阳城县| 荆州市| 普兰店市| 晋中市| 平舆县| 柏乡县| 江口县| 宽城| 永嘉县| 五莲县| 安乡县| 桐梓县| 三亚市| 德江县| 普格县|