1. 程式人生 > >mysql 中介軟體資料整理

mysql 中介軟體資料整理

1、Cobar(阿里,目前已不在維護)

2、TDDL(阿里淘寶,需要用到阿里另外一個專案diamond配置中心

3、ATLAS(奇虎360)

4、MyCat(以Cobar基礎,號稱中國第一開源框架) 

5  kratos

6  sharding-jdbc

(一)關鍵問題

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上產使用的,架構複雜