分庫分表技術方案

閱讀文本大概需要3分鐘。

0x01:TDDL(Taobao Distributed Data Layer)框架

淘寶根據自己的業務特點開發了TDDL(Taobao Distributed Data Layer)框架,主要解決了分庫分表對應用的透明化以及異構數據庫之間的數據複製,它是一個基於集中式配置的 jdbc datasource實現,具有主備,讀寫分離,動態數據庫配置等功能。屬於 client 層方案,支持基本的 crud 語法和讀寫分離,但不支持 join、多表查詢等語法。目前使用的也不多,因爲還依賴淘寶的 diamond 配置管理系統。

TDDL倉庫:https://gitee.com/justwe9891/TDDL

diamond倉庫:https://gitee.com/justwe9891/diamond

詳細介紹TDDL這篇文章不錯:https://www.cnblogs.com/adealjason/p/6364806.html

0x02:atlas

Atlas是由奇虎360公司Web平臺部基礎架構團隊開發維護的一個基於MySQL協議的數據中間層項目。Atlas是一個位於應用程序與MySQL之間中間件。在後端DB看來,Atlas相當於連接它的client;在前端應用看來,Atlas相當於一個DB。Atlas作爲服務端與應用程序通訊,它實現了MySQL的client和服務端協議,同一時候作爲client與MySQL通訊。它相應用程序屏蔽了DB的細節,同一時候爲了減少MySQL負擔,它還維護了連接池。

倉庫:https://github.com/Qihoo360/Atlas/releases

0x03:sharding-jdbc

Sharding-JDBC 是噹噹網開源的適用於微服務的分佈式數據訪問基礎類庫,完整的實現了分庫分表,讀寫分離和分佈式主鍵功能,並初步實現了柔性事務。其定位爲輕量級Java框架,在Java的JDBC層提供的額外服務。它使用客戶端直連數據庫,以jar包形式提供服務,無需額外部署和依賴,可理解爲增強版的JDBC驅動,完全兼容JDBC和各種ORM框架

倉庫:https://github.com/apache/shardingsphere

0x04:MyCat

基於 cobar 改造的,屬於 proxy 層方案,支持的功能非常完善,而且目前應該是非常火的而且不斷流行的數據庫中間件。MyCat是一個開源的分佈式數據庫系統,是一個實現了MySQL協議的服務器,前端用戶可以把它看作是一個數據庫代理,用MySQL客戶端工具和命令行訪問,而其後端可以用MySQL原生協議與多個MySQL服務器通信,也可以用JDBC協議與大多數主流數據庫服務器通信,其核心功能是分表分庫,即將一個大表水平分割爲N個小表,存儲在後端MySQL服務器裏或者其他數據庫裏。

MyCat發展到目前的版本,已經不是一個單純的MySQL代理了,它的後端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流數據庫,也支持MongoDB這種新型NoSQL方式的存儲,未來還會支持更多類型的存儲。而在最終用戶看來,無論是那種存儲方式,在MyCat裏,都是一個傳統的數據庫表,支持標準的SQL語句進行數據的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度

倉庫:https://github.com/MyCATApache/Mycat-Server

0x05:Cobar

Cobar是提供分佈式數據庫服務的中間件,由阿里巴巴中間件團隊開發,是阿里巴巴B2B前臺應用訪問數據庫的統一入口。Cobar的分佈式方案是分庫和分表,可以按照業務需求將數據庫中耦合度較低的表分到不同的分庫中,也可以按照具體表的增長速度和數據量水平切分到不同的分庫中,Cobar可以實現應用層與物理分庫的雙向透明,從而實現應用程序訪問分佈式數據庫與訪問單庫無差別。Cobar還可以配合MySQL的心跳和binlog實現備機的自動切換,保證數據節點的可靠性,從而實現高可用性。

倉庫:https://github.com/alibaba/cobar

0x06:heisenberg

heisenberg 是百度開源的一款基於MySQL協議之上的分庫分表中間件服務器,支持各種靈活的分庫分表規則,做到應用和分庫分表相隔離,並且爲mysql進行dbproxy,減少了db的連接IO壓力,並且可做到讀寫分離以及replication的手工切換。

倉庫:https://github.com/brucexx/heisenberg

推薦閱讀

Spring Boot 最流行的 16 條實踐

SSM框架的面試常見問題

【分佈式】緩存穿透、緩存雪崩,緩存擊穿解決方案

阿里P7給出的一份超詳細 Spring Boot 知識清單

關注我每天進步一點點

你點的每個在看,我都認真當成了喜歡

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