Cobar 是阿里巴巴自研的關係型數據庫分布式中間件,已穩定支撐 3000+ Schema、日均 50 億+ SQL 請求、TB 級流量。它透過 SQL 路由、分片、讀寫分離、高可用切換,讓應用無感知地使用分布式 MySQL 叢集。
硬性約束:拆分後的分片必須分佈在不同的物理庫,不支援同庫內分表(如 test_1、test_2 在同一 Schema)。
JOIN、分頁、排序、子查詢SET 語句(事務/字符集設定除外)INSERT、更新分片鍵的 UPDATESAVEPOINTrewriteBatchedStatements=true、useServerPrepStmts=trueBLOB/BINARY/VARBINARY 不支援 setBlob()/setBinaryStream()
| 層級 | 概念 | 說明 |
|---|---|---|
| dataSource | 數據源 | 物理數據庫連接,與 MySQL Schema 一一對應 |
| dataNode | 數據節點 | 主備 dataSource + HA + 連接池 = 一個分庫 |
| table | 邏輯表 | 含拆分表、非拆分表 |
| tableRule | 路由規則 | 決定 SQL 路由至哪些 dataNode |
| schema | 邏輯庫 | 包含拆分表/非拆分表的邏輯命名空間 |
配置文件 schema.xml 定義上述層次關係,支援靈活的拓撲部署。
tableRule 計算目標 dataNode 集合
採用主流 Reactor 模式,非阻塞 I/O 支撐高併發連接,架構類似 Netty/Mina。
Cobar 以「簡單、高效、透明」著稱,雖已停止維護(後繼者为 MyCat、ShardingSphere),但其設計思想仍是分布式中間件的經典教材。