淘寶分布式數據層:TDDL

jopen 10年前發布 | 105K 次閱讀 TDDL 持久層框架

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

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

淘寶分布式數據層:TDDL

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

淘寶分布式數據層:TDDL

主要優點:
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,不推薦使用。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!