360 Atlas
較為活躍,Atlas 是由 360 Web平臺(tái)部基礎(chǔ)架構(gòu)團(tuán)隊(duì)開發(fā)維護(hù)的一個(gè)基于 MySQL 協(xié)議的數(shù)據(jù)中間層項(xiàng)目。它是在mysql-proxy 0.8.2版本的基礎(chǔ)上,對(duì)其進(jìn)行了優(yōu)化,增加了一些新的功能特性。360內(nèi)部使用 Atlas 運(yùn)行的 MySQL 務(wù),每天承載的讀寫請(qǐng)求數(shù)達(dá)幾十億條。
主要功能:
1. 讀寫分離
2. 從庫負(fù)載均衡
3. IP過濾
4. SQL語句黑白名單
5. 自動(dòng)分表
Cobar (不維護(hù)了)
Cobar是阿里巴巴(B2B)部門開發(fā)的一種關(guān)系型數(shù)據(jù)的分布式處理系統(tǒng),它可以在分布式的環(huán)境下看上去像傳統(tǒng)數(shù)據(jù)庫一樣為您提供海量數(shù)據(jù)服務(wù)。
Cobar的分布式主要是通過將表放入不同的庫來實(shí)現(xiàn):
1. 支持將一張表水平拆分成多份分別放入不同的庫來實(shí)現(xiàn)表的水平拆分
2. 支持將不同的表放入不同的庫
3. 多數(shù)情況下,用戶會(huì)將以上兩種方式混合使用。
這里需要強(qiáng)調(diào)的是,Cobar 不支持將一張表,例如test表拆分成test_1, test_2, test_3.....放在同一個(gè)庫中,必須將拆分后的表分別放入不同的庫來實(shí)現(xiàn)分布式。
在用戶配置了 MySQL 心跳的情況下,Cobar 可以自動(dòng)向后端連接的 MySQL 發(fā)送心跳,判斷 MySQL 運(yùn)行狀況,一旦運(yùn)行出現(xiàn)異常,Cobar 可以自動(dòng)切換到備機(jī)工作。
但需要強(qiáng)調(diào)的是:
1. Cobar 的主備切換有兩種觸發(fā)方式,一種是用戶手動(dòng)觸發(fā),一種是 Cobar 的心跳語句檢測到異常后自動(dòng)觸發(fā)。那么,當(dāng)心跳檢測到主機(jī)異常,切換到備機(jī),如果主機(jī)恢復(fù)了,需要用戶手動(dòng)切回主機(jī)工作,Cobar不會(huì)在主機(jī)恢復(fù)時(shí)自動(dòng)切換回主機(jī),除非備機(jī)的心跳也返回異常。
2. Cobar 只檢查 MySQL 主備異常,不關(guān)心主備之間的數(shù)據(jù)同步,因此用戶需要在使用 Cobar 之前在 MySQL 主備上配置雙向同步,詳情可以參閱MySQL參考手冊。
其次,我們也需要注意Cobar的功能約束:
1. 不支持跨庫情況下的join、分頁、排序、子查詢操作。
2. SELECT 語句執(zhí)行會(huì)被忽略,事務(wù)和字符集設(shè)置除外。
3. 分庫情況下,insert 語句必須包含拆分字段列名。
4. 分庫情況下,update 語句不能更新拆分字段的值。
5. 不支持 SAVEPOINT 操作。
6. 暫時(shí)只支持 MySQL數(shù)據(jù)節(jié)點(diǎn)。
Mycat
前身 Cobar,開源,較為活躍。
特點(diǎn):
遵守Mysql原生協(xié)議,跨語言,跨數(shù)據(jù)庫的通用中間件代理。
基于心跳的自動(dòng)故障切換,支持讀寫分離,支持 MySQL 一雙主多從,以及一主多從
有效管理數(shù)據(jù)源連接,基于數(shù)據(jù)分庫,而不是分表的模式。
基于 NIO 實(shí)現(xiàn),有效管理線程,高并發(fā)問題。
支持?jǐn)?shù)據(jù)的多片自動(dòng)路由與聚合,支持 sum , count , max 等常用的聚合函數(shù)。
支持2表 join,甚至基于 caltlet 的多表 join。
支持通過全局表,ER 關(guān)系的分片策略,實(shí)現(xiàn)了高效的多表 join 查詢。
支持多租戶方案。
支持分布式事務(wù)(弱xa)
支持全局序列號(hào),解決分布式下的主鍵生成問題。
分片規(guī)則豐富,插件化開發(fā),易于擴(kuò)展。
強(qiáng)大的 web,命令行監(jiān)控。
支持前端作為 MySQL 通用代理,后端 JDBC 方式支持 Oracle、DB2、SQL Server 、 mongodb 、巨杉。
集群基于 ZooKeeper 管理,在線升級(jí),擴(kuò)容,智能優(yōu)化,大數(shù)據(jù)處理(2.0開發(fā)版)。
參考有道:MySQL 中間件 Mycat【Blog】.note ,Blog:MySQL 中間件 Mycat
TDDL
已經(jīng)不再使用,下一代是 DDRS。
淘寶根據(jù)自己的業(yè)務(wù)特點(diǎn)開發(fā)了 TDDL (Taobao Distributed Data Layer 外號(hào):頭都大了 )框架,主要解決了分庫分表對(duì)應(yīng)用的透明化以及異構(gòu)數(shù)據(jù)庫之間的數(shù)據(jù)復(fù)制,它是一個(gè)基于集中式配置的 jdbc datasource 實(shí)現(xiàn),具有主備,讀寫分離,動(dòng)態(tài)數(shù)據(jù)庫配置等功能。
TDDL 通過部署在客戶端的 jar 包,將用戶的 SQL 路由到指定的數(shù)據(jù)庫中。
功能:
數(shù)據(jù)庫主備和動(dòng)態(tài)切換
帶權(quán)重的讀寫分離
單線程讀重試
集中式數(shù)據(jù)源信息管理和動(dòng)態(tài)變更
剝離的穩(wěn)定 jboss 數(shù)據(jù)源
支持 MySQL 和 Oracle 數(shù)據(jù)庫
基于 JDBC 規(guī)范,很容易擴(kuò)展支持實(shí)現(xiàn) JDBC 規(guī)范的數(shù)據(jù)源
無 Server,Client,Jar 形式存在,應(yīng)用直連數(shù)據(jù)庫
讀寫次數(shù),并發(fā)度流程控制,動(dòng)態(tài)變更
可分析的日志打印,日志流控,動(dòng)態(tài)變更
Heisenberg
整合 Cobar、TDDL,目前并不活躍,由百度員工個(gè)人編寫。
功能:
分庫分表與應(yīng)用脫離,分庫表如同使用單庫表一樣
減少 DB 連接數(shù)壓力
熱重啟配置
可水平擴(kuò)容
遵守 MySQL 原生協(xié)議
無語言限制,MySQLClient,C,JAVA等都可以使用
Heisenberg服務(wù)器通過管理命令可以查看,如連接數(shù),線程池,結(jié)點(diǎn)等,并可以調(diào)整
Oceanus
用得較少,58 Oceanus 致力于打造一個(gè)功能簡單、可依賴、易于上手、易于擴(kuò)展、易于集成的解決方案,甚至是平臺(tái)化系統(tǒng)。擁抱開源,提供各類插件機(jī)制集成其他開源項(xiàng)目,新手可以在幾分鐘內(nèi)上手編程,分庫分表邏輯不再與業(yè)務(wù)緊密耦合,擴(kuò)容有標(biāo)準(zhǔn)模式,減少意外錯(cuò)誤的發(fā)生 datanode:數(shù)據(jù)源節(jié)點(diǎn)。為一個(gè)數(shù)據(jù)源命名,配置鏈接屬性、報(bào)警實(shí)現(xiàn)。
主要概念:
namenode:數(shù)據(jù)源的簇。為一組數(shù)據(jù)源命名,指定這組數(shù)據(jù)源的負(fù)載方式、訪問模式、權(quán)重
table:映射表。匹配解析sql中的table名稱,命中table標(biāo)簽的name屬性值后,會(huì)執(zhí)行約定的路由邏輯
bean:實(shí)體。由其他標(biāo)簽引用,實(shí)體類必須有無參的構(gòu)造函數(shù)
tracker:監(jiān)控埋點(diǎn)。涉及到計(jì)算和IO的功能點(diǎn)都有監(jiān)控點(diǎn),自定義一個(gè)埋點(diǎn)實(shí)現(xiàn)類,當(dāng)功能耗時(shí)超出預(yù)期時(shí)會(huì)執(zhí)行其中的回調(diào)函數(shù),便于監(jiān)控和優(yōu)化系統(tǒng)
Vitess
較全 高大上,和開發(fā)中的 Mycat2.0 類似。谷歌開發(fā)的數(shù)據(jù)庫中間件,集群基于 ZooKeeper 管理,通過 RPC 方式進(jìn)行數(shù)據(jù)處理,總體分為,server,command line,gui監(jiān)控 3部分。
OneProxy
商業(yè)、收費(fèi)。
OneProxy 分布式中間件,是平民軟件完全自主開發(fā)的分布式數(shù)據(jù)訪問層,幫助用戶在 MySQL/PostgreSQL 集群上快速搭建支持分庫分表的分布式數(shù)據(jù)庫中間件,也是一款具有 SQ L白名單(防 SQL 注入)及 IP 白名單功能的 SQL 防火墻軟件。采用與 MySQL Proxy 一致的反向協(xié)議輸出模式,對(duì)應(yīng)用非常簡單和透明易用,讓用戶畏懼的分庫分表(Horizontal Partitioning)工作變得極其簡單可控。基于 Libevent 機(jī)制實(shí)現(xiàn),單個(gè)實(shí)例可以實(shí)現(xiàn)25萬的 SQL 轉(zhuǎn)發(fā)能力,用一個(gè) OneProxy 節(jié)點(diǎn)可以帶動(dòng)整個(gè) MySQL 集群。
DRDS(推薦)
整合云服務(wù),收費(fèi)、Cobar、TDDL整合,商用,首選。
阿里分布式關(guān)系型數(shù)據(jù)庫服務(wù)(Distribute Relational Database Service,簡稱DRDS)是一種水平拆分、可平滑擴(kuò)縮容、讀寫分離的在線分布式數(shù)據(jù)庫服務(wù)。前身為淘寶 TDDL,是近千個(gè)應(yīng)用首選組件,已穩(wěn)定服務(wù)了七年以上。






