阿里開源Mysql分佈式中間件:Cobar

http://hualong.iteye.com/blog/2102798


這幾天研究了下Cobar, Cobar是阿里巴巴研發的關係型數據的分佈式處理系統(Amoeba的升級版,該產品成功替代了原先基於Oracle的數據存儲方案,目前已經接管了3000+個MySQL數據庫的schema,平均每天處理近50億次的SQL執行請求。)(github上面的是源碼,大家下來需要自己用maven2編譯後運行、者放Eclipse裏面運行,一開始我用maven3沒有執行成功。)

首先,使用Cobar的核心功能如下:

分佈式:
Cobar的分佈式主要是通過將表放入不同的庫來實現:
1. Cobar支持將一張表水平拆分成多份分別放入不同的庫來實現表的水平拆分
2. Cobar也支持將不同的表放入不同的庫
3. 多數情況下,用戶會將以上兩種方式混合使用
這裏需要強調的是,Cobar不支持將一張表,例如test表拆分成test_1, test_2, test_3.....放在同一個庫中,必須將拆分後的表分別放入不同的庫來實現分佈式。

HA
在用戶配置了MySQL心跳的情況下,Cobar可以自動向後端連接的MySQL發送心跳,判斷MySQL運行狀況,一旦運行出現異常,Cobar可以自動切換到備機工作。但需要強調的是:
1. Cobar的主備切換有兩種觸發方式,一種是用戶手動觸發,一種是Cobar的心跳語句檢測到異常後自動觸發。那麼,當心跳檢測到主機異常,切換到備機,如果主機恢復了,需要用戶手動切回主機工作,Cobar不會在主機恢復時自動切換回主機,除非備機的心跳也返回異常。
2. Cobar只檢查MySQL主備異常,不關心主備之間的數據同步,因此用戶需要在使用Cobar之前在MySQL主備上配置雙向同步,詳情可以參閱MySQL參考手冊。

其次,我們也需要注意Cobar的功能約束:

1) 不支持跨庫情況下的join、分頁、排序、子查詢操作。
2) SET語句執行會被忽略,事務和字符集設置除外。
3) 分庫情況下,insert語句必須包含拆分字段列名。
4) 分庫情況下,update語句不能更新拆分字段的值。
5) 不支持SAVEPOINT操作。
6) 暫時只支持MySQL數據節點。
7) 使用JDBC時,不支持rewriteBatchedStatements=true參數設置(默認爲false)。
8) 使用JDBC時,不支持useServerPrepStmts=true參數設置(默認爲false)。
9) 使用JDBC時,BLOB, BINARY, VARBINARY字段不能使用setBlob()或setBinaryStream()方法設置參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章