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