阿里云DTS原理

來源:CSDN
作者:黑領(lǐng)靈靈妖
時間:2020-08-06
3529
以下是阿里云DTS原理。

系統(tǒng)架構(gòu)

ia_18200000002.JPEG

架構(gòu)說明

系統(tǒng)高可用

數(shù)據(jù)傳輸服務內(nèi)部每個模塊都有主備架構(gòu),保證系統(tǒng)高可用。容災系統(tǒng)實時檢測每個節(jié)點的健康狀況,一旦發(fā)現(xiàn)某個節(jié)點異常,會將鏈路秒級切換到其他節(jié)點。

數(shù)據(jù)源地址動態(tài)適配

對于數(shù)據(jù)訂閱及同步鏈路,容災系統(tǒng)還會監(jiān)測數(shù)據(jù)源的連接地址切換等變更操作,一旦發(fā)現(xiàn)數(shù)據(jù)源發(fā)生連接地址變更,它會動態(tài)適配數(shù)據(jù)源新的連接方式,在數(shù)據(jù)源變更的情況下,保證鏈路的穩(wěn)定性。

數(shù)據(jù)遷移基本原理

ia_18200000003.png

數(shù)據(jù)遷移提供多種遷移類型:結(jié)構(gòu)對象遷移、全量數(shù)據(jù)遷移及增量數(shù)據(jù)遷移。如果需要實現(xiàn)不停服遷移,需要選擇結(jié)構(gòu)對象遷移、全量數(shù)據(jù)遷移和增量數(shù)據(jù)遷移。

對于異構(gòu)數(shù)據(jù)庫之間的遷移,DTS會從源庫讀取結(jié)構(gòu)定義語法,根據(jù)目標數(shù)據(jù)庫的語法定義,將語法重新組裝成目標數(shù)據(jù)庫的語法格式,并導入到目標實例中。

全量數(shù)據(jù)遷移過程持續(xù)較久,在這過程中,源實例不斷有業(yè)務寫入,為保證遷移數(shù)據(jù)的一致性,在全量數(shù)據(jù)遷移之前會啟動增量數(shù)據(jù)拉取模塊,增量數(shù)據(jù)拉取模塊會拉取源實例的增量更新數(shù)據(jù),并解析、封裝、存儲在本地存儲中。

當全量數(shù)據(jù)遷移完成后,DTS會啟動增量日志回放模塊,增量日志回放模塊會從增量日志讀取模塊中獲取增量數(shù)據(jù),經(jīng)過反解析、過濾、封裝后遷移到目標實例,從而實現(xiàn)增量數(shù)據(jù)遷移。

實時同步基礎(chǔ)原理

ia_18200000004.png

實時同步功能能夠?qū)崿F(xiàn)兩個數(shù)據(jù)源之間的增量數(shù)據(jù)實時同步。DTS將陸續(xù)支持OLTP->OLAP的數(shù)據(jù)實時同步。

同步鏈路的創(chuàng)建過程如下:

同步初始化

將源實例的歷史存量數(shù)據(jù)在目標實例初始化一份。

增量數(shù)據(jù)實時同步

當初始化完成后進入兩邊增量數(shù)據(jù)實時同步階段,該階段DTS將實現(xiàn)源實例和目標實例的數(shù)據(jù)動態(tài)同步。

增量數(shù)據(jù)實時同步過程,DTS的底層實現(xiàn)模塊主要包括:

日志讀取模塊

日志讀取模塊從源實例讀取原始數(shù)據(jù),經(jīng)過解析、過濾及標準格式化,最終將數(shù)據(jù)在本地持久化。日志讀取模塊通過數(shù)據(jù)庫協(xié)議連接并讀取源實例的增量日志。如果源數(shù)據(jù)庫為RDS MySQL,那么數(shù)據(jù)抓取模塊通過Binlog dump協(xié)議連接源庫。

日志回放模塊

日志回放模塊從日志讀取模塊中請求增量數(shù)據(jù),并根據(jù)用戶配置的同步對象進行數(shù)據(jù)過濾,然后在保證事務時序性及事務一致性的前提下,將日志記錄同步到目標實例。

DTS具備日志讀取模塊、日志回放模塊的高可用,DTS容災系統(tǒng)一旦檢測到鏈路異常,就會在健康服務節(jié)點上斷點重啟鏈路,從而有效保證同步鏈路的高可用。

數(shù)據(jù)訂閱基礎(chǔ)原理

ia_18200000005.png

數(shù)據(jù)訂閱支持實時拉取RDS實例的增量日志,用戶可以通過DTS提供的SDK數(shù)據(jù)訂閱服務端來訂閱增量日志,同時可以根據(jù)業(yè)務需求,實現(xiàn)數(shù)據(jù)定制化消費。

DTS服務端的日志拉取模塊主要實現(xiàn)從數(shù)據(jù)源抓取原始數(shù)據(jù),通過解析、過濾、標準格式化等流程,最終將增量數(shù)據(jù)在本地持久化。

日志抓取模塊通過數(shù)據(jù)庫協(xié)議連接并實時拉取源實例的增量日志。例如源實例為RDS MySQL,那么數(shù)據(jù)抓取模塊通過Binlog dump協(xié)議連接源實例。

日志拉取模塊及下游消費SDK的高可用:

DTS容災系統(tǒng)一旦檢測到日志拉取模塊出現(xiàn)異常,就會在健康服務節(jié)點上斷點重啟日志拉取模塊,保證日志拉取模塊的高可用。

DTS支持在服務端實現(xiàn)下游SDK消費進程的高可用。用戶同時對一個數(shù)據(jù)訂閱鏈路,啟動多個下游SDK消費進程,服務端同時只向一個下游消費推送增量數(shù)據(jù),當這個消費進程異常后,服務端會從其他健康下游中選擇一個消費進程,向這個消費進程推送數(shù)據(jù),從而實現(xiàn)下游消費的高可用。

版權(quán)聲明:本文為博主原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/qq_44714603/article/details/105205150

立即登錄,閱讀全文
原文鏈接:點擊前往 >
版權(quán)說明:本文內(nèi)容來自于CSDN,本站不擁有所有權(quán),不承擔相關(guān)法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家