<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 64,comments - 22,trackbacks - 0

    TDDL動態數據源基本說明

    總體描述

    TDDL動態數據源主要分為2層,每一層都實現了jdbc規范,以方便地集成到各種orm框架或者直接使用.每一層都各司其職.

     

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

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

    Tddl動態數據源暫時支持mysql和oracle ,但是因為每一層都是jdbc的實現,所以很容易擴展支持其他實現jdbc規范的數據源.

    TGroupDataSource

    1. 基本功能

    (1)     主備數據庫動態容災切換

    支持進行主備的對調切換,狀態對調后備庫變為主庫,主庫變為備庫

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

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

    (3)     讀重試

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

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

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

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

    1. 延展性功能

    (1)     指定數據庫訪問(ThreadLocal)

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

    (2)     指定數據庫訪問(Hint)

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

    TAtomDataSource

    1. 基本功能

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

    (2)     定期密碼變更

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

    1. 延展性功能

    (1)  動態創建,添加,減少數據源

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

    (3)  數據庫保護

    Diamond中配置說明.

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

    1. 1.       TGroupDataSource的配置

    Group中的配置主要是配置一組對等的數據的讀寫權重

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

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

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

    1. 2.       TAtomDataSource的配置

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

    Global

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

    配置內容:

    屬性key說明
    ip數據實例的ip
    port數據實例的端口
    dbname數據庫名稱
    dbTypeMYSQL,ORACLE
    dbStatusRW,NA

    App

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

    配置內容:

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

    User

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

    配置內容:

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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲精品国产专区91在线| 亚洲午夜未满十八勿入| 亚洲日韩一区二区一无码| 秋霞人成在线观看免费视频| 国产精品亚洲A∨天堂不卡| 国产精品综合专区中文字幕免费播放 | 国产精品亚洲片在线va| 2021免费日韩视频网| 亚洲国产美女视频| 国产91免费在线观看| 亚洲色大成网站www永久男同| 色老头永久免费网站| 一本色道久久综合亚洲精品蜜桃冫| 久久久久国色AV免费看图片| 久久亚洲国产成人影院| 国产精品成人无码免费| 羞羞视频在线观看免费| 亚洲国产另类久久久精品黑人| 国产午夜无码精品免费看| 亚洲精品在线播放视频| 一本无码人妻在中文字幕免费| 色偷偷亚洲男人天堂| 老司机亚洲精品影视www| 久9久9精品免费观看| 亚洲av无码片区一区二区三区| 成年丰满熟妇午夜免费视频| 噜噜噜亚洲色成人网站| 亚洲AV无码精品色午夜果冻不卡 | 免费欧洲毛片A级视频无风险| 成人特级毛片69免费观看| 人人狠狠综合久久亚洲婷婷| 亚欧在线精品免费观看一区| 国产亚洲一卡2卡3卡4卡新区| 亚洲综合精品网站| 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 亚洲日本韩国在线| 97视频免费观看2区| 亚洲av成人一区二区三区在线播放| 亚洲片一区二区三区| 亚洲免费人成视频观看| 免费一级全黄少妇性色生活片 |