分庫分表元件TDDL

2021-08-02 10:55:38 字數 1100 閱讀 2133

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動態資料來源使用示例說明:

diamond簡介和快速使用:

tddl原始碼:

tddl複雜度相對較高。當前公布的文件較少,只開源動態資料來源,分表分庫部分還未開源,還需要依賴diamond,不推薦使用。

mysql分表分庫實現 MySql分表分庫思路

一.資料庫瓶頸 1.1io瓶頸 第一種 磁碟讀io瓶頸,熱點資料太多,資料庫快取放不下,每次查詢時會產生大量的io 分庫和垂直分表 第二種 網路io瓶頸,請求的資料太多,網路頻寬不夠 分庫 1.2cpu瓶頸 第一種 sql問題,如sql中包含join,group by,order by,非索引字段條...

MySQL範圍分表分庫 mysql 分表分庫策略

唯一id的生成 下面列舉幾種常見的唯一id生成方案,需要滿足兩大核心需求 1.全域性唯一 2趨勢有序 1.用資料庫的auto increment 自增id 來生成,每次通過寫入資料庫一條記錄,利用資料庫id自增的特性獲取唯一,有序的id。優點 使用資料庫原有的功能,相對簡單 能夠保證唯一 能夠保證遞...

mysql 分庫分表實戰 MySQL分庫分表實戰

為什麼要分庫分表 在大型 中,當使用者量以及使用者產生的業務資料量達到單庫單錶效能極限時,為了支撐業務可持續發展,對於重要的核心業務必然要進行分庫分表來儲存業務資料。對於非核心業務產生的大量資料,例如爬蟲爬取的資訊,論壇產生的資料等,可以考慮把資料儲存在像mongodb這樣的nosql儲存裡面,這些...