<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

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


    網站導航:
     
    主站蜘蛛池模板: 欧美亚洲国产SUV| 久久精品国产亚洲AV天海翼| 香蕉免费在线视频| 四虎1515hm免费国产| 亚洲a∨无码一区二区| 日本一道一区二区免费看 | 国产精品免费一级在线观看| 亚洲制服丝袜第一页| 国产美女在线精品免费观看| 亚洲午夜精品久久久久久app| 国外成人免费高清激情视频| 精品亚洲成a人在线观看| 免费在线观看a级毛片| 一级片在线免费看| 亚洲va国产va天堂va久久| 无码国产精品一区二区免费vr| 亚洲一区二区三区首页| 日日麻批免费40分钟日本的| 亚洲男人天堂2018av| 日韩a在线观看免费观看| 国产亚洲精品美女久久久久久下载| 亚洲福利在线播放| 免费一级不卡毛片| 亚洲人成电影在线观看网| 精品国产精品久久一区免费式| 免费国产在线精品一区| 亚洲综合日韩久久成人AV| 精品国产免费人成电影在线观看| 亚洲精品福利你懂| 亚洲日本中文字幕一区二区三区| 精品国产污污免费网站| 中文字幕在线观看亚洲视频| 亚洲?V无码成人精品区日韩| a级毛片在线视频免费观看| 亚洲综合色区中文字幕| 国产成人精品久久亚洲| 永久在线观看www免费视频| 色偷偷亚洲第一综合网| 亚洲成av人影院| 国产精品黄页在线播放免费| 你是我的城池营垒免费观看完整版|