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