cobar學習總結

阿里開源mysql分佈式中間件
cobar源碼下載地址:https://github.com/alibaba/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()方法設置參數。

然後,我們來分析一下Cobar邏輯層次圖:
* dataSource:數據源,表示一個具體的數據庫連接,與物理存在的數據庫schema一一對應。
* dataNode:數據節點,由主、備數據源,數據源的HA以及連接池共同組成,可以將一個dataNode理解爲一個分庫。
* table:表,包括拆分表(如tb1,tb2)和非拆分表。
* tableRule:路由規則,用於判斷SQL語句被路由到具體哪些datanode執行。
* schema:cobar可以定義包含拆分表的schema(如schema1),也可以定義無拆分表的schema(如schema2)。

Cobar支持的數據庫結構(schema)的層次關係具有較強的靈活性,用戶可以將表自由放置不同的datanode,也可將不同的datasource放置在同一MySQL實例上。在實際應用中,我們需要通過配置文件(schema.xml)來定義我們需要的數據庫服務器和表的分佈策略,這點我們將在後面的安裝和配置部分中介紹到。

接着,我們來介紹Cobar的安裝和配置步驟:

下面我們將使用一個最簡單的分庫分表的例子來說明Cobar的基本用法,數據庫schema如下圖(該實例也可參考:Cobar產品首頁)。


1) 系統對外提供的數據庫名是dbtest,並且其中有兩張表tb1和tb2。
2) tb1表的數據被映射到物理數據庫dbtest1的tb1上。
3) tb2表的一部分數據被映射到物理數據庫dbtest2的tb2上,另外一部分數據被映射到物理數據庫dbtest3的tb2上。

1、環境準備

操作系統:Linux或者Windows (推薦在Linux環境下運行Cobar)
MySQL:http://www.mysql.com/downloads/ (推薦使用5.1以上版本)
JDK:http://www.oracle.com/technetwork/java/javase/downloads/ (推薦使用1.6以上版本)
Cobar:https://github.com/alibaba/cobar (下載tar.gz或者zip文件,特意說明下,阿里的開源全部移到github上去了,裏面有很多阿里人的作品,當然包含著名的dubbo,地址是:https://github.com/alibaba/)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章