當我們的數據達到一定的量級之后,單表甚至單庫都無法支撐之時,那么,便會涉及到分庫分表。分庫分表的方式有多種,開源的解決方案也很多,都是圍繞客戶端和代理兩種模式來處理的。
客戶端的組件比較多,很多人也在用,這里就分享一些代理模式的開源中間件
Apache ShardingSphere
Apache ShardingSphere 是一款分布式的數據庫生態系統, 可以將任意數據庫轉換為分布式數據庫,并通過數據分片、彈性伸縮、加密等能力對原有數據庫進行增強。由 ShardingSphere-JDBC 和 ShardingSphere-Proxy 這 2 款既能夠獨立部署,又支持混合部署配合使用的產品組成。 它們均提供標準化的基于數據庫作為存儲節點的增量功能,可適用于如 JAVA 同構、異構語言、云原生等各種多樣化的應用場景。
ShardingSphere-JDBC 定位為輕量級 Java 框架,在 Java 的 JDBC 層提供的額外服務。 它使用客戶端直連數據庫,以 jar 包形式提供服務,無需額外部署和依賴。
ShardingSphere-Proxy 定位為透明化的數據庫代理端,通過實現數據庫二進制協議,對異構語言提供支持。 目前提供 MySQL 和 PostgreSQL 協議,透明化數據庫操作,對 DBA 更加友好。
開源地址:https://github.com/apache/shardingsphere.git。
Vitess
Vitess是一個用于部署、擴展和管理大型MySQL實例集群的數據庫解決方案。Vitess集Mysql數據庫的很多重要特性和NoSQL數據庫的可擴展性于一體。它的架構設計使得您可以像在物理機上一樣在公共云或私有云架構中有效運行。它結合并擴展了許多重要的MySQL功能,同時兼具NoSQL數據庫的可擴展性。
代碼地址:https://github.com/vitessio/vitess.git。
Gaea
Gaea是小米中國區電商研發部研發的基于mysql協議的數據庫中間件,目前在小米商城大陸和海外得到廣泛使用,包括訂單、社區、活動等多個業務。
具備的功能:
|
|
開源地址:https://github.com/XiaoMi/Gaea.git。
MaxScale
MaxScale是MariDB開發的一個數據中間件,能夠實現讀寫分離,并且可以根據主從狀態實現寫庫的自動切換。
開源地址:https://github.com/mariadb-corporation/MaxScale.git。
Mycat
Mycat是基于開源cobar演變而來,支持SQL92標準,遵守Mysql原生協議,跨語言,跨平臺,跨數據庫的通用中間件代理。
源碼地址:https://github.com/MyCATApache/Mycat-Server.git。
除了上面幾個目前還是維護的幾個項目外,也還有一些其他公司開源的解決方案:
阿里巴巴Cobar:https://github.com/alibaba/cobar.git。
360Atlas::https://github.com/Qihoo360/Atlas.git。
另外,也還有很多開源的客戶端的解決方案。當然,在分庫分表之后,又會衍生出其它問題,現在如今,也有很多廠家提供了強大的分布式數據庫,來幫我處理了分庫分表的麻煩。