簡述
CloudCanal 近期對 Hana 源端鏈路做了新一輪優(yōu)化霎匈,優(yōu)化點(diǎn)主要來自用戶實(shí)際場景使用,這篇文章簡要做下分享此衅。
本輪優(yōu)化主要包含:
- 新增任務(wù)級增量表
- 新增增量表定時清理能力
- 新增增量表表結(jié)構(gòu)自動演進(jìn)能力
- 任務(wù)延遲判定優(yōu)化
- Hana 1.x 的兼容
- 產(chǎn)品化和文檔優(yōu)化
優(yōu)化點(diǎn)
任務(wù)級增量表
CloudCanal Hana 源端任務(wù)原本不支持修改默認(rèn)增量表金句,導(dǎo)致不同任務(wù)的觸發(fā)器將增量數(shù)據(jù)寫入同一個表泪勒,不同任務(wù)將相互影響栅组。
比如,A 任務(wù)訂閱的表積壓大量數(shù)據(jù)梅掠,將影響B(tài),C,D等訂閱相同表的任務(wù)增量同步效率酌住。
為解決這一問題店归,本輪優(yōu)化支持 每個任務(wù)可單獨(dú)設(shè)置增量表 ,以此確保任務(wù)之間互不影響赂韵。
增量表定時清理
觸發(fā)器將增量數(shù)據(jù)寫入增量表后娱节,若未及時清理,可能導(dǎo)致空間占用增加祭示。
在之前的版本中肄满,用戶只能手動定期清理,過程繁瑣且具備一定風(fēng)險(清理錯)质涛。
本輪優(yōu)化增加設(shè)置任務(wù)參數(shù) triggerDataCleanEnabled 打開自動定時清理增量表功能稠歉,并提供兩個參數(shù)進(jìn)行控制:
- triggerDataCleanIntervalMin:增量表清理間隔(單位:分鐘)
- triggerDataRetentionMin:增量表數(shù)據(jù)保留時間(單位:分鐘)
通過這套機(jī)制,用戶能夠靈活控制增量表的清理操作汇陆,同時確保未消費(fèi)的增量數(shù)據(jù)不會被意外清除怒炸。
增量表自動演進(jìn)
Hana 增量任務(wù)創(chuàng)建時自動生成增量表,CloudCanal 依賴于增量表實(shí)現(xiàn)各種能力毡代,但隨著 CloudCanal 版本更新阅羹,可能對增量表進(jìn)行變更(比如加入新字段)。
由此帶來的問題是:用戶在更新 CloudCanal 后需要手動執(zhí)行 DDL 以適應(yīng)增量表結(jié)構(gòu)的變化教寂,若存在大量增量表捏鱼,操作相當(dāng)復(fù)雜。
為解決此問題酪耕,CloudCanal 新增 增量表結(jié)構(gòu) DIFF 能力导梆,在任務(wù)啟動時 自動生成差異 DDL 實(shí)現(xiàn)對增量表的自動演進(jìn)。
延遲判定優(yōu)化
Hana 源端增量同步使用位點(diǎn)(增量表自增ID)來判斷延遲迂烁,當(dāng)位點(diǎn)向前推進(jìn)時可準(zhǔn)確獲取延遲看尼,但若無變更事件導(dǎo)致位點(diǎn)不更新,延遲會持續(xù)增大盟步,實(shí)際上并未發(fā)生延遲藏斩。
為解決這一問題,本輪優(yōu)化 通過查詢增量表來判斷是否存在延遲却盘,具體邏輯為:
- 若存在數(shù)據(jù)灾茁,系統(tǒng)根據(jù)增量數(shù)據(jù)的時間戳計(jì)算延遲。
- 若無數(shù)據(jù)谷炸,任務(wù)獲取當(dāng)前時間發(fā)送心跳事件,并根據(jù)心跳上的時間戳計(jì)算延遲禀挫。
時間戳僅在重置位點(diǎn)時才用于數(shù)據(jù)查找旬陡,且在查找時進(jìn)行時區(qū)轉(zhuǎn)換處理。
Hana 1.x 的兼容
CloudCanal 之前版本只支持 Hana 2.x 版本语婴,但是隨著用戶使用描孟,我們發(fā)現(xiàn)一些用戶還是在使用 Hana 1.x 版本驶睦。
Hana 1.x 版本的觸發(fā)器和 2.x 存在一定的差異,且元信息獲取邏輯也不同匿醒。
本輪優(yōu)化對上述差異點(diǎn)進(jìn)行了兼容性優(yōu)化场航,使 CloudCanal 能夠比較全面的支持 Hana 1.x 和 2.x 版本的數(shù)據(jù)同步。
產(chǎn)品化增強(qiáng)
本輪優(yōu)化除了內(nèi)核層面增強(qiáng)廉羔,對產(chǎn)品能力和文檔做了一系列優(yōu)化溉痢,有效解決用戶在數(shù)據(jù)源添加、任務(wù)創(chuàng)建等環(huán)節(jié)中常見的權(quán)限問題憋他。
- 完善 Hana 權(quán)限準(zhǔn)備文檔孩饼、數(shù)據(jù)源創(chuàng)建 FAQ
- 創(chuàng)建任務(wù)時預(yù)檢 Schema、增量表的權(quán)限
- 創(chuàng)建任務(wù)勾選表時竹挡,自動過濾當(dāng)前任務(wù)增量表
這些優(yōu)化舉措讓用戶創(chuàng)建遷移同步鏈路更加流暢镀娶,節(jié)省時間。
未來方向
更多目標(biāo)鏈路
目前 Hana 支持的目標(biāo)端有 MySQL揪罕、Starrocks梯码、Doris 等,接下來的版本將打通 TiDB好啰、OceanBase轩娶、AdbForMySQL 等目標(biāo)鏈路,這個需求主要來自于用戶坎怪。
優(yōu)化多字段觸發(fā)的處理速度
在處理多字段表(單個表 300+ 字段)時罢坝,目前觸發(fā)器的執(zhí)行效率不滿足預(yù)期,導(dǎo)致 DML 操作速度較慢搅窿,我們后續(xù)將對觸發(fā)器模板進(jìn)行性能優(yōu)化嘁酿,以提高處理速度。
總結(jié)
本文簡要介紹 CloudCanal 近期對 Hana 源端數(shù)據(jù)同步的優(yōu)化男应,以及鏈路未來的方向闹司,希望對讀者有所幫助。