日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

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

項(xiàng)目背景

? ?阿里巴巴B2B公司,因?yàn)闃I(yè)務(wù)的特性,賣(mài)家主要集中在國(guó)內(nèi),買(mǎi)家主要集中在國(guó)外,所以衍生出了杭州和美國(guó)異地機(jī)房的需求,同時(shí)為了提升用戶體驗(yàn),整個(gè)機(jī)房的架構(gòu)為雙A,兩邊均可寫(xiě),由此誕生了otter這樣一個(gè)產(chǎn)品。

???otter第一版本可追溯到04~05年,此次外部開(kāi)源的版本為第4版,開(kāi)發(fā)時(shí)間從2011年7月份一直持續(xù)到現(xiàn)在,目前阿里巴巴B2B內(nèi)部的本地/異地機(jī)房的同步需求基本全上了otte4。

目前同步規(guī)模:

  • 同步數(shù)據(jù)量6億
  • 文件同步1.5TB(2000w張圖片)
  • 涉及200+個(gè)數(shù)據(jù)庫(kù)實(shí)例之間的同步
  • 80+臺(tái)機(jī)器的集群規(guī)模
  • ?

    項(xiàng)目介紹

    名稱:otter ['?t?(r)]

    譯意: 水獺,數(shù)據(jù)搬運(yùn)工

    語(yǔ)言: 純java開(kāi)發(fā)

    定位: 基于數(shù)據(jù)庫(kù)增量日志解析,準(zhǔn)實(shí)時(shí)同步到本機(jī)房或跨機(jī)房的mysql/oracle數(shù)據(jù)庫(kù).?

    ?

    工作原理

    原理描述:

    1. ? 基于Canal開(kāi)源產(chǎn)品,獲取數(shù)據(jù)庫(kù)增量日志數(shù)據(jù)。 什么是Canal, ?請(qǐng)點(diǎn)擊

    2. ? 典型管理系統(tǒng)架構(gòu),manager(web管理)+node(工作節(jié)點(diǎn))

    ? ? ?a. ?manager運(yùn)行時(shí)推送同步配置到node節(jié)點(diǎn)

    ? ? ?b. ?node節(jié)點(diǎn)將同步狀態(tài)反饋到manager上

    3. ?基于zookeeper,解決分布式狀態(tài)調(diào)度的,允許多node節(jié)點(diǎn)之間協(xié)同工作.?

    ?

    什么是canal?

    otter之前開(kāi)源的一個(gè)子項(xiàng)目,開(kāi)源鏈接地址:http://github.com/alibaba/canal

    ?

    ?

    otter能解決什么?

    1. ?異構(gòu)庫(kù)同步

    ? ?a. ?mysql -> ?mysql/oracle. ?(目前開(kāi)源版本只支持mysql增量,目標(biāo)庫(kù)可以是mysql或者oracle,取決于canal的功能)

    2. ?單機(jī)房同步 (數(shù)據(jù)庫(kù)之間RTT < 1ms)

    ? ?a. 數(shù)據(jù)庫(kù)版本升級(jí)

    ? ?b. 數(shù)據(jù)表遷移

    ? ?c. 異步二級(jí)索引

    3. ?跨機(jī)房同步 (比如阿里巴巴國(guó)際站就是杭州和美國(guó)機(jī)房的數(shù)據(jù)庫(kù)同不,RTT > 200ms,亮點(diǎn))

    ? ?a. 機(jī)房容災(zāi)

    4. ?雙向同步

    ? ? a. ?避免回環(huán)算法 ?(通用的解決方案,支持大部分關(guān)系型數(shù)據(jù)庫(kù))

    ? ? b. ?數(shù)據(jù)一致性算法 ? (保證雙A機(jī)房模式下,數(shù)據(jù)保證最終一致性,亮點(diǎn))

    5. ?文件同步

    ? ? a. ?站點(diǎn)鏡像 ?(進(jìn)行數(shù)據(jù)復(fù)制的同時(shí),復(fù)制關(guān)聯(lián)的圖片,比如復(fù)制產(chǎn)品數(shù)據(jù),同時(shí)復(fù)制產(chǎn)品圖片).

    ?

    單機(jī)房復(fù)制示意圖:

    說(shuō)明:?

    ? ?a. ?數(shù)據(jù)on-Fly,盡可能不落地,更快的進(jìn)行數(shù)據(jù)同步. ?(開(kāi)啟node?loadBalancer算法,如果Node節(jié)點(diǎn)S+ETL落在不同的Node上,數(shù)據(jù)會(huì)有個(gè)網(wǎng)絡(luò)傳輸過(guò)程)

    ? ?b. ?node節(jié)點(diǎn)可以有failover / ?loadBalancer. ?

    ?

    跨機(jī)房復(fù)制示意圖:

    說(shuō)明:?

    ? ?a. ?數(shù)據(jù)涉及網(wǎng)絡(luò)傳輸,S/E/T/L幾個(gè)階段會(huì)分散在2個(gè)或者更多Node節(jié)點(diǎn)上,多個(gè)Node之間通過(guò)zookeeper進(jìn)行協(xié)同工作 ?(一般是Select和Extract在一個(gè)機(jī)房的Node,Transform/Load落在另一個(gè)機(jī)房的Node)

    ? ?b. ?node節(jié)點(diǎn)可以有failover / ?loadBalancer. ?(每個(gè)機(jī)房的Node節(jié)點(diǎn),都可以是集群,一臺(tái)或者多臺(tái)機(jī)器)

    ?

    ?

    相關(guān)名詞解釋

    ?

    otter核心model關(guān)系圖



    ?

    ?

    名詞解釋

    • Pipeline:從源端到目標(biāo)端的整個(gè)過(guò)程描述,主要由一些同步映射過(guò)程組成
    • Channel:同步通道,單向同步中一個(gè)Pipeline組成,在雙向同步中有兩個(gè)Pipeline組成
    • DateMediaPair:根據(jù)業(yè)務(wù)表定義映射關(guān)系,比如源表和目標(biāo)表,字段映射,字段組等
    • DateMedia : 抽象的數(shù)據(jù)介質(zhì)概念,可以理解為數(shù)據(jù)表/mq隊(duì)列定義
    • DateMediaSource : 抽象的數(shù)據(jù)介質(zhì)源信息,補(bǔ)充描述DateMedia
    • ColumnPair : 定義字段映射關(guān)系
    • ColumnGroup : 定義字段映射組
    • Node : 處理同步過(guò)程的工作節(jié)點(diǎn),對(duì)應(yīng)一個(gè)jvm

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

    說(shuō)明:為了更好的支持系統(tǒng)的擴(kuò)展性和靈活性,將整個(gè)同步流程抽象為Select/Extract/Transform/Load,這么4個(gè)階段.

    Select階段: 為解決數(shù)據(jù)來(lái)源的差異性,比如接入canal獲取增量數(shù)據(jù),也可以接入其他系統(tǒng)獲取其他數(shù)據(jù)等。

    Extract/Transform/Load 階段:類(lèi)似于數(shù)據(jù)倉(cāng)庫(kù)的ETL模型,具體可為數(shù)據(jù)join,數(shù)據(jù)轉(zhuǎn)化,數(shù)據(jù)Load的

    ?

    相關(guān)實(shí)現(xiàn)介紹

    • ???Otter調(diào)度模型
    • ???Otter數(shù)據(jù)入庫(kù)算法
    • ???Otter雙向回環(huán)控制
    • ???Otter數(shù)據(jù)一致性
    • ???Otter高可用性
    • ???Otter擴(kuò)展性?

    QuickStart

    See the page for quick start:?QuickStart.

    AdminGuide

    See the page for admin deploy guide :?AdminGuide

    ?

    總結(jié)

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

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。