1. 程式人生 > >分庫分表資料庫中介軟體對比

分庫分表資料庫中介軟體對比

http://www.cnblogs.com/taoxinrui/p/6782791.html

http://www.tuicool.com/articles/A77R3m

http://blog.csdn.net/kingice1014/article/details/52344297

功能 Cobar Cobar-client TDDL Sharding-JDBC
分庫 未開源
分表 未開源
中間層
ORM支援 任意 僅MyBatis 任意 任意
資料庫支援 僅MySQL 任意 任意 任意
異構語言 僅Java 僅Java 僅Java
外部依賴 Diamond

(一)關鍵問題

1.讀寫分離

2.分庫分表

3.類別

  • lib庫

1)業務直接到資料庫,少一層proxy效率更高

2)沒有proxy的lvs的單點問題

  • proxy

1)統一管理所有到資料庫的連線,連線複用

2)基礎查詢功能抽象,減少程式碼耦合

3)易於實現監控、資料遷移、連線管理等功能

(二)sharding-jdbc(開源,lib)

        噹噹應用框架ddframe中,從關係型資料庫模組dd-rdb中分離出來的資料庫水平分片框架

  • 功能

1)以jar包形式提供服務

2)分片靈活,支援等號、between、in等多維度分片

3)sql解析,支援聚合、分組、排序、limit、or等

  • 結構

  • 特點

1)分片規則:策略自定義、複數分片數

2)JDBC規範重寫:針對DataSource、Connection、Statement、PreparedStatement和ResultSet介面封裝

3)sql解析:druid

4)sql改寫:修改邏輯表名->真實表名;替換不支援的功能,如:avg->sum和count

5)sql路由:單表路由、binding表路由、笛卡爾積路由

6)sql執行:多執行緒併發執行sql

7)結果歸併:遍歷類、排序類(歸併排序)、聚合類(比較型、累加型、平均型)、分組類

(三)mycat(開源,proxy)

        社群愛好者在阿里cobar基礎上進行二次開發,解決了cobar的一些問題,且加入了新的功能。

  • 功能

1)遵守mysql原生協議

2)基於心跳的自動故障切換

3)支援讀寫分離,支援mysql主從

4)支援sum、count、max等聚合,支援跨庫分頁

5)支援服務降級

6)安全,IP白名單、sql注入攻擊攔截、prepare預編譯

  • 原理

攔截:分片分析、路由分析、讀寫分離分析、快取分析

(四)DBproxy(開源,proxy)

        針對atlas進行改進,形成了新的高可靠、高可用企業級資料庫中介軟體DBProxy

  • 功能

1)讀寫分離

2)負載均衡

3)slave故障感知&摘除

4)連線池

5)自定義sql攔截&過濾

6)流量分組&控制

7)監控狀態

(五)atlas

        360團隊基於mysql proxy把lua用c改寫,在高併發下經常會掛掉。

(六)oneproxy(不開源,proxy)

        基於mysql協議的資料庫中介軟體。利用c進行開發的,專注於效能和穩定性。

  • 功能

透明sql路由(實現後端mysql資料庫的叢集化部署)和流量分析(為上層應用和底層資料庫叢集提供豐富的效能監控功能)。

1)複用資料庫連線,降低資料庫併發連線數

2)即時發現和剔除不可用的後端節點,轉發應用請求實現高效故障隔離

3)內建守護程序模式和ha vip機制,確保高可用

4)查詢語句分離,跨分片結果集合並,根據分片並行執行sql

5)讀寫分離

6)對sql語句進行安全檢查,拒絕危險的DDL操作

7)分別設定前端應用和後端資料庫的sql請求頻率,實現QoS控制

8)實時透明分析流量,實時統計sql和事務的執行時間,分析事務的sql結構

  •  特點

語言:C&C++開發

網路事件:libevent框架

記憶體分配:jemalloc優化

QPS:單例項支援40W

連線池:透明連線池的功能,具備mysqk企業版連線池效果

主備:實現透明的讀寫分離路由

安全:sql請求類別;請求IP;每個sql請求實時檢查&攔截

流量分析:IP維度、事務維度展示&分析

穩定:內建高可用、也可與zookeeper等配合

(七)vitess

        Youtube上產使用的,架構複雜


目前市面上中介軟體種類很多種 先看下各種中介軟體背景:

分散式資料庫中介軟體對比總結

Cobar:

阿里巴巴B2B開發的關係型分散式系統,管理將近3000個mysql例項。 在阿里經受住了考驗,後面由於作者的走開的原因cobar沒有人維護 了,阿里也開發了tddl替代cobar。

MyCAT:

社群愛好者在阿里cobar基礎上進行二次開發,解決了cobar當時存 在的一些問題,並且加入了許多新的功能在其中。目前MyCAT社群活 躍度很高,目前已經有一些公司在使用MyCAT。總體來說支援度比 較高,也會一直維護下去,

OneProxy:

資料庫界大牛,前支付寶資料庫團隊領導樓總開發,基於mysql官方 的proxy思想利用c進行開發的,OneProxy是一款商業收費的中介軟體, 樓總捨去了一些功能點,專注在效能和穩定性上。有朋友測試過說在 高併發下很穩定。

Vitess:

這個中介軟體是Youtube生產在使用的,但是架構很複雜。 與以往中介軟體不同,使用Vitess應用改動比較大要 使用他提供語言的API介面,我們可以借鑑他其中的一些設計思想。

Kingshard:

Kingshard是前360Atlas中介軟體開發團隊的陳菲利用業務時間 用Go語言開發的,目前參與開發的人員有3個左右, 目前來看還不是成熟可以使用的產品,需要在不斷完善。

Atlas:

360團隊基於mysql proxy 把lua用C改寫。原有版本是支援分表, 目前已經放出了分庫分表版本。在網上看到一些朋友經常說在高並 發下會經常掛掉,如果大家要使用需要提前做好測試。

MaxScale與MySQL Route:

這兩個中介軟體都算是官方的吧,MaxScale是mariadb (MySQL原作者維護的一個版本)研發的,目前版本不支援分庫分表。

MySQL Route是現在MySQL 官方Oracle公司釋出出來的一箇中間件。

這兩個中介軟體後面也會跟進測試下,看下效果如何。