日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)

發布時間:2025/3/16 windows 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目背景

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

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

目前同步規模:

  • 同步數據量6億
  • 文件同步1.5TB(2000w張圖片)
  • 涉及200+個數據庫實例之間的同步
  • 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的

    ?

    相關實現介紹

    • ???Otter調度模型
    • ???Otter數據入庫算法
    • ???Otter雙向回環控制
    • ???Otter數據一致性
    • ???Otter高可用性
    • ???Otter擴展性?

    QuickStart

    See the page for quick start:?QuickStart.

    AdminGuide

    See the page for admin deploy guide :?AdminGuide

    ?

    總結

    以上是生活随笔為你收集整理的阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。