分佈式數據庫,TDDL



淘寶根據自己的業務特點開發了TDDL(Taobao Distributed Data Layer 外號:頭都大了 ©_Ob)框架,主要解決了分庫分表對應用的透明化以及異構數據庫之間的數據複製,它是一個基於集中式配置的 jdbc datasource實現,具有主備,讀寫分離,動態數據庫配置等功能。

TDDL所處的位置(tddl通用數據訪問層,部署在客戶端的jar包,用於將用戶的SQL路由到指定的數據庫中):


淘寶很早就對數據進行過分庫的處理, 上層系統連接多個數據庫,中間有一個叫做DBRoute的路由來對數據進行統一訪問。DBRoute對數據進行多庫的操作、數據的整合,讓上層系統像操作 一個數據庫一樣操作多個庫。但是隨着數據量的增長,對於庫表的分法有了更高的要求,例如,你的商品數據到了百億級別的時候,任何一個庫都無法存放了,於是 分成2個、4個、8個、16個、32個……直到1024個、2048個。好,分成這麼多,數據能夠存放了,那怎麼查詢它?這時候,數據查詢的中間件就要能 夠承擔這個重任了,它對上層來說,必須像查詢一個數據庫一樣來查詢數據,還要像查詢一個數據庫一樣快(每條查詢在幾毫秒內完成),TDDL就承擔了這樣一 個工作。在外面有些系統也用DAL(數據訪問層) 這個概念來命名這個中間件。
下圖展示了一個簡單的分庫分表數據查詢策略:


主要優點:
1.數據庫主備和動態切換
2.帶權重的讀寫分離
3.單線程讀重試
4.集中式數據源信息管理和動態變更
5.剝離的穩定jboss數據源
6.支持mysql和oracle數據庫
7.基於jdbc規範,很容易擴展支持實現jdbc規範的數據源
8.無server,client-jar形式存在,應用直連數據庫
9.讀寫次數,併發度流程控制,動態變更
10.可分析的日誌打印,日誌流控,動態變更
TDDL必須要依賴diamond配置中心(diamond是淘寶內部使用的一個管理持久配置的系統,目前淘寶內部絕大多數系統的配置,由diamond來進行統一管理,同時diamond也已開源)。
TDDL動態數據源使用示例說明:http://rdc.taobao.com/team/jm/archives/1645
diamond簡介和快速使用:http://jm.taobao.org/tag/diamond%E4%B8%93%E9%A2%98/
TDDL源碼:https://github.com/alibaba/tb_tddl 
TDDL複雜度相對較高。當前公佈的文檔較少,只開源動態數據源,分表分庫部分還未開源,還需要依賴diamond,不推薦使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章