阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
項目背景
? ?阿里巴巴B2B公司,因為業務的特性,賣家主要集中在國內,買家主要集中在國外,所以衍生出了杭州和美國異地機房的需求,同時為了提升用戶體驗,整個機房的架構為雙A,兩邊均可寫,由此誕生了otter這樣一個產品。
???otter第一版本可追溯到04~05年,此次外部開源的版本為第4版,開發時間從2011年7月份一直持續到現在,目前阿里巴巴B2B內部的本地/異地機房的同步需求基本全上了otte4。
目前同步規模:
?
項目介紹
名稱: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的
?
相關實現介紹
- ???Otter調度模型
- ???Otter數據入庫算法
- ???Otter雙向回環控制
- ???Otter數據一致性
- ???Otter高可用性
- ???Otter擴展性?
QuickStart
See the page for quick start:?QuickStart.
AdminGuide
See the page for admin deploy guide :?AdminGuide
?
總結
以上是生活随笔為你收集整理的阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flying to the Mars
- 下一篇: 异形卵