常用数据库中间件汇总
常見(jiàn)一覽圖
【1】360 Atlas
網(wǎng)址:https://github.com/Qihoo360/Atlas
較為活躍,Atlas 是由 360 Web平臺(tái)部基礎(chǔ)架構(gòu)團(tuán)隊(duì)開(kāi)發(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. 從庫(kù)負(fù)載均衡
3. IP過(guò)濾
4. SQL語(yǔ)句黑白名單
5. 自動(dòng)分表
【2】Mycat
官網(wǎng):http://www.mycat.io/
前身 Cobar,開(kāi)源,較為活躍。
特點(diǎn):
遵守Mysql原生協(xié)議,跨語(yǔ)言,跨數(shù)據(jù)庫(kù)的通用中間件代理。
基于心跳的自動(dòng)故障切換,支持讀寫分離,支持 MySQL 一雙主多從,以及一主多從
有效管理數(shù)據(jù)源連接,基于數(shù)據(jù)分庫(kù),而不是分表的模式。
基于 NIO 實(shí)現(xiàn),有效管理線程,高并發(fā)問(wèn)題。
支持?jǐn)?shù)據(jù)的多片自動(dòng)路由與聚合,支持 sum , count , max 等常用的聚合函數(shù)。
支持2表 join,甚至基于 caltlet 的多表 join。
支持通過(guò)全局表,ER 關(guān)系的分片策略,實(shí)現(xiàn)了高效的多表 join 查詢。
支持多租戶方案。
支持分布式事務(wù)(弱xa)
支持全局序列號(hào),解決分布式下的主鍵生成問(wèn)題。
分片規(guī)則豐富,插件化開(kāi)發(fā),易于擴(kuò)展。
強(qiáng)大的 web,命令行監(jiān)控。
支持前端作為 MySQL 通用代理,后端 JDBC 方式支持 Oracle、DB2、SQL Server 、 mongodb 、巨杉。
集群基于 ZooKeeper 管理,在線升級(jí),擴(kuò)容,智能優(yōu)化,大數(shù)據(jù)處理(2.0開(kāi)發(fā)版)。
【3】Cobar(不維護(hù)了)
Cobar是阿里巴巴(B2B)部門開(kāi)發(fā)的一種關(guān)系型數(shù)據(jù)的分布式處理系統(tǒng),它可以在分布式的環(huán)境下看上去像傳統(tǒng)數(shù)據(jù)庫(kù)一樣為您提供海量數(shù)據(jù)服務(wù)。
Cobar的分布式主要是通過(guò)將表放入不同的庫(kù)來(lái)實(shí)現(xiàn):
1. 支持將一張表水平拆分成多份分別放入不同的庫(kù)來(lái)實(shí)現(xiàn)表的水平拆分
2. 支持將不同的表放入不同的庫(kù)
3. 多數(shù)情況下,用戶會(huì)將以上兩種方式混合使用。
這里需要強(qiáng)調(diào)的是,Cobar 不支持將一張表,例如test表拆分成test_1, test_2, test_3.....放在同一個(gè)庫(kù)中,必須將拆分后的表分別放入不同的庫(kù)來(lái)實(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 的心跳語(yǔ)句檢測(cè)到異常后自動(dòng)觸發(fā)。那么,當(dāng)心跳檢測(cè)到主機(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參考手冊(cè)。
其次,我們也需要注意Cobar的功能約束:
1. 不支持跨庫(kù)情況下的join、分頁(yè)、排序、子查詢操作。
2. SELECT 語(yǔ)句執(zhí)行會(huì)被忽略,事務(wù)和字符集設(shè)置除外。
3. 分庫(kù)情況下,insert 語(yǔ)句必須包含拆分字段列名。
4. 分庫(kù)情況下,update 語(yǔ)句不能更新拆分字段的值。
5. 不支持 SAVEPOINT 操作。
6. 暫時(shí)只支持 MySQL數(shù)據(jù)節(jié)點(diǎn)。
【4】TDDL
已經(jīng)不再使用,下一代是 DRDS。
淘寶根據(jù)自己的業(yè)務(wù)特點(diǎn)開(kāi)發(fā)了 TDDL (Taobao Distributed Data Layer 外號(hào):頭都大了 )框架,主要解決了分庫(kù)分表對(duì)應(yīng)用的透明化以及異構(gòu)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)復(fù)制,它是一個(gè)基于集中式配置的 jdbc datasource 實(shí)現(xiàn),具有主備,讀寫分離,動(dòng)態(tài)數(shù)據(jù)庫(kù)配置等功能。
TDDL通過(guò)部署在客戶端的 jar 包,將用戶的 SQL 路由到指定的數(shù)據(jù)庫(kù)中。
功能:
數(shù)據(jù)庫(kù)主備和動(dòng)態(tài)切換
帶權(quán)重的讀寫分離
單線程讀重試
集中式數(shù)據(jù)源信息管理和動(dòng)態(tài)變更
剝離的穩(wěn)定 jboss 數(shù)據(jù)源
支持 MySQL 和 Oracle 數(shù)據(jù)庫(kù)
基于 JDBC 規(guī)范,很容易擴(kuò)展支持實(shí)現(xiàn) JDBC 規(guī)范的數(shù)據(jù)源
無(wú) Server,Client,Jar 形式存在,應(yīng)用直連數(shù)據(jù)庫(kù)
讀寫次數(shù),并發(fā)度流程控制,動(dòng)態(tài)變更
可分析的日志打印,日志流控,動(dòng)態(tài)變更
【5】Heisenberg
整合 Cobar、TDDL,目前并不活躍,由百度員工個(gè)人編寫。
功能:
分庫(kù)分表與應(yīng)用脫離,分庫(kù)表如同使用單庫(kù)表一樣
減少 DB 連接數(shù)壓力
熱重啟配置
可水平擴(kuò)容
遵守 MySQL 原生協(xié)議
無(wú)語(yǔ)言限制,MySQLClient,C,Java等都可以使用
Heisenberg服務(wù)器通過(guò)管理命令可以查看,如連接數(shù),線程池,結(jié)點(diǎn)等,并可以調(diào)整
【6】其他較為小眾
Oceanus
用得較少,58 Oceanus 致力于打造一個(gè)功能簡(jiǎn)單、可依賴、易于上手、易于擴(kuò)展、易于集成的解決方案,甚至是平臺(tái)化系統(tǒng)。擁抱開(kāi)源,提供各類插件機(jī)制集成其他開(kāi)源項(xiàng)目,新手可以在幾分鐘內(nèi)上手編程,分庫(kù)分表邏輯不再與業(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ù)載方式、訪問(wèn)模式、權(quán)重
table:映射表。匹配解析sql中的table名稱,命中table標(biāo)簽的name屬性值后,會(huì)執(zhí)行約定的路由邏輯
bean:實(shí)體。由其他標(biāo)簽引用,實(shí)體類必須有無(wú)參的構(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
較全 高大上,和開(kāi)發(fā)中的 Mycat2.0 類似。谷歌開(kāi)發(fā)的數(shù)據(jù)庫(kù)中間件,集群基于 ZooKeeper 管理,通過(guò) RPC 方式進(jìn)行數(shù)據(jù)處理,總體分為,server,command line,gui監(jiān)控 3部分。
OneProxy
商業(yè)、收費(fèi)。
OneProxy 分布式中間件,是平民軟件完全自主開(kāi)發(fā)的分布式數(shù)據(jù)訪問(wèn)層,幫助用戶在 MySQL/PostgreSQL 集群上快速搭建支持分庫(kù)分表的分布式數(shù)據(jù)庫(kù)中間件,也是一款具有 SQ L白名單(防 SQL 注入)及 IP 白名單功能的 SQL 防火墻軟件。采用與 MySQL Proxy 一致的反向協(xié)議輸出模式,對(duì)應(yīng)用非常簡(jiǎn)單和透明易用,讓用戶畏懼的分庫(kù)分表(Horizontal Partitioning)工作變得極其簡(jiǎn)單可控。基于 Libevent 機(jī)制實(shí)現(xiàn),單個(gè)實(shí)例可以實(shí)現(xiàn)25萬(wàn)的 SQL 轉(zhuǎn)發(fā)能力,用一個(gè) OneProxy 節(jié)點(diǎn)可以帶動(dòng)整個(gè) MySQL 集群。
DRDS(推薦)
整合云服務(wù),收費(fèi)、Cobar、TDDL整合,商用,首選。
阿里分布式關(guān)系型數(shù)據(jù)庫(kù)服務(wù)(Distribute Relational Database Service,簡(jiǎn)稱DRDS)是一種水平拆分、可平滑擴(kuò)縮容、讀寫分離的在線分布式數(shù)據(jù)庫(kù)服務(wù)。
前身為淘寶 TDDL,是近千個(gè)應(yīng)用首選組件,已穩(wěn)定服務(wù)了七年以上。
DBLE(愛(ài)可生,推薦)
官網(wǎng):https://opensource.actionsky.com/
文檔:https://actiontech.github.io/dble-docs-cn/0.overview/0.0_overview.html
總結(jié)
以上是生活随笔為你收集整理的常用数据库中间件汇总的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端程序员能力不足?表现在哪几点,你需要
- 下一篇: 第四节:Windows系统安装时BIOS