阿里巴巴開源項目:分佈式數據庫同步系統otter(解決中美異地機房)

項目背景

   阿里巴巴B2B公司,因爲業務的特性,賣家主要集中在國內,買家主要集中在國外,所以衍生出了杭州和美國異地機房的需求,同時爲了提升用戶體驗,整個機房的架構爲雙A,兩邊均可寫,由此誕生了otter這樣一個產品。

   otter第一版本可追溯到04~05年,此次外部開源的版本爲第4版,開發時間從2011年7月份一直持續到現在,目前阿里巴巴B2B內部的本地/異地機房的同步需求基本全上了otte4。

目前同步規模:

  1. 同步數據量6億
  2. 文件同步1.5TB(2000w張圖片)
  3. 涉及200+個數據庫實例之間的同步
  4. 80+臺機器的集羣規模

 

項目介紹

名稱:otter ['ɒtə(r)]

譯意: 水獺,數據搬運工

語言: 純java開發

定位: 基於數據庫增量日誌解析,準實時同步到本機房或跨機房的mysql/oracle數據庫. 

 

工作原理

原理描述:

1.   基於Canal開源產品,獲取數據庫增量日誌數據。 什麼是Canal,  請點擊

2.   典型管理系統架構,manager(web管理)+node(工作節點)

     a.  manager運行時推送同步配置到node節點

     b.  node節點將同步狀態反饋到manager上

3.  基於zookeeper,解決分佈式狀態調度的,允許多node節點之間協同工作. 

 

什麼是canal?

otter之前開源的一個子項目,開源鏈接地址:http://github.com/alibaba/canal

 

 

otter能解決什麼?

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.  站點鏡像  (進行數據複製的同時,複製關聯的圖片,比如複製產品數據,同時複製產品圖片).

 

單機房複製示意圖:

說明: 

   a.  數據on-Fly,儘可能不落地,更快的進行數據同步.  (開啓node loadBalancer算法,如果Node節點S+ETL落在不同的Node上,數據會有個網絡傳輸過程)

   b.  node節點可以有failover /  loadBalancer.  

 

跨機房複製示意圖:

說明: 

   a.  數據涉及網絡傳輸,S/E/T/L幾個階段會分散在2個或者更多Node節點上,多個Node之間通過zookeeper進行協同工作  (一般是Select和Extract在一個機房的Node,Transform/Load落在另一個機房的Node)

   b.  node節點可以有failover /  loadBalancer.  (每個機房的Node節點,都可以是集羣,一臺或者多臺機器)

 

 

相關名詞解釋

 

otter核心model關係圖

 

名詞解釋

  • Pipeline:從源端到目標端的整個過程描述,主要由一些同步映射過程組成
  • Channel:同步通道,單向同步中一個Pipeline組成,在雙向同步中有兩個Pipeline組成
  • DateMediaPair:根據業務表定義映射關係,比如源表和目標表,字段映射,字段組等
  • DateMedia : 抽象的數據介質概念,可以理解爲數據表/mq隊列定義
  • DateMediaSource : 抽象的數據介質源信息,補充描述DateMedia
  • ColumnPair : 定義字段映射關係
  • ColumnGroup : 定義字段映射組
  • Node : 處理同步過程的工作節點,對應一個jvm

otter的S/E/T/L stage階段模型

說明:爲了更好的支持系統的擴展性和靈活性,將整個同步流程抽象爲Select/Extract/Transform/Load,這麼4個階段.

Select階段: 爲解決數據來源的差異性,比如接入canal獲取增量數據,也可以接入其他系統獲取其他數據等。

Extract/Transform/Load 階段:類似於數據倉庫的ETL模型,具體可爲數據join,數據轉化,數據Load的

 

相關實現介紹

QuickStart

See the page for quick start: QuickStart.

AdminGuide

See the page for admin deploy guide : AdminGuide

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