【IT168 資訊】阿里巴巴一向熱衷於開源。從風風火火的去IOE運動,到阿里在GitHub中託管的60個開源項目,都可以看到他們開源的決心。本周一(8月19日),阿里巴巴宣布開源分布式資料庫同步系統otter。負責otter項目的阿里巴巴技術專家七鋒(@agapple0002)介紹,otter是異地雙A機房的資料庫同步系統,解決長距離機房同步、雙A的數據一致性問題。
otter的誕生是由異地資料庫同步需求決定的。阿里巴巴B2B業務的賣家主要集中在國內,買家主要集中在國外,所以衍生出了杭州和美國異地機房的需求,同時為了提升用戶體驗,整個機房的架構為雙A,兩邊均可寫,otter由此而來。
otter的英文釋義是水獺、數據搬運工,定位為基於資料庫增量日誌解析,準實時同步到本機房或異地機房的MySQL/Oracle資料庫. 一個分布式資料庫同步系統。otter第一版本可以追溯到04-05年,此次外部開源的版本為第四版,開發時間從2011年7月一直持續到現在,目前阿里巴巴B2B內部的本地/異地機房的同步需求基本全上了otter4。
目前,阿里巴巴的B2B業務的同步規模達到:1.同步數據量6億;文件同步1.5TB(2000w張圖片);涉及200+個資料庫實例之間的同步;80+臺機器的集群規模。
工作原理
1. 基於Canal開源產品,獲取資料庫增量日誌數據;
2. 典型管理系統架構,manager(web管理)+node(工作節點);
a. manager運行時推送同步配置到node節點
b. node節點將同步狀態反饋到manager上
3. 基於zookeeper,解決分布式狀態調度的,允許多node節點之間協同工作。
適用場景
1. 異構庫同步:
a.MySQL -> MySQL/Oracle. (目前開源版本只支持MySQL增量,目標庫可以是MySQL或者Oracle,取決於canal的功能)
2. 單機房同步 (資料庫之間RTT < 1ms)
a. 資料庫版本升級
b. 數據表遷移
c. 異步二級索引
3. 異地機房同步 (比如阿里巴巴國際站就是杭州和美國機房的資料庫同不,RTT > 200ms,亮點)
a. 機房容災
4. 雙向同步
a. 避免迴環算法 (通用的解決方案,支持大部分關係型資料庫)
b. 數據一致性算法 (保證雙A機房模式下,數據保證最終一致性,亮點)
5. 文件同步
a. 站點鏡像 (進行數據複製的同時,複製關聯的圖片,比如複製產品數據,同時複製產品圖片).
網友觀點
@鎖兒V:類似的商業軟體,比如東方通的TongLINK/Q,Oracle的Golden Gate,動輒百萬,而這兒這個卻開源了,並且是經過在線大數據測試過的。可惜僅支持MySQL/Oracle,誰有能耐稍微擴展一下,定是企業級市場的One big deal。
@jametong: 這個項目是最終一致的, 並不是實時一致的, 設計時是儘可能的保證單向Rep到另一端的數據的事務一致性, 但是雙向的部分, 會有部分犧牲. 功能上與LinkedIn的Databus比較接近。
@莊陌銘:這個取名資料庫同步系統個人感覺有些大了,初步看了下,更多地是一種遠程數據ETL,蠻適合企業用於做分布式節點的數據匯總,不過依賴還複雜了點(這種基礎件幹嘛還用webx),另外,數據傳輸的審計對帳好像沒看到(也許只是粗瞄沒注意到)。