簡(jiǎn)述
Kafka 為處理實(shí)時(shí)數(shù)據(jù)提供了一個(gè)統(tǒng)一丹锹、高吞吐、低延遲的平臺(tái)宴猾,其持久化層本質(zhì)上是一個(gè)“按照分布式事務(wù)日志架構(gòu)的大規(guī)模發(fā)布/訂閱消息隊(duì)列”沮峡,這使它作為企業(yè)級(jí)基礎(chǔ)設(shè)施來處理流式數(shù)據(jù)非常有價(jià)值泽谨。因此實(shí)現(xiàn) Kafka 到 Kafka 的數(shù)據(jù)同步也成了一項(xiàng)重要工作衬鱼。
本篇文章主要介紹如何使用 CloudCanal 構(gòu)建一條 Kafka 到 Kafka 的數(shù)據(jù)同步鏈路信粮。
技術(shù)點(diǎn)
消費(fèi)者消息推送
在任務(wù)創(chuàng)建后到旦,CloudCanal 會(huì)自動(dòng)創(chuàng)建消費(fèi)組简逮,并訂閱需要同步消息的 Topic球散。CloudCanal 從源端拉取到消息后,會(huì)將消息推送到目標(biāo)端散庶。
心跳機(jī)制
Kafka 在記錄消費(fèi)者的位點(diǎn)時(shí)只會(huì)保存最新一條消息的時(shí)間蕉堰,在源端 Kafka 未發(fā)送消息時(shí),CloudCanal 便無法正常感知消息的延時(shí)時(shí)間悲龟。
我們采用了主動(dòng)發(fā)送心跳消息的方式解決這個(gè)問題屋讶,在 打開 Kafka 源端心跳 后,源端會(huì)定時(shí)向目標(biāo)端發(fā)送一條空消息须教,在目標(biāo)端接收到消息后皿渗,CloudCanal 會(huì)更新延時(shí)時(shí)間,并過濾掉該條消息轻腺。根據(jù)業(yè)務(wù)需要乐疆,可設(shè)置 dbHeartbeatIntervalSec 參數(shù),控制發(fā)送消息的間隔贬养。
操作示例
步驟1: 配置 Kafka 權(quán)限
參考 Kafka 需要的權(quán)限 文檔挤土,設(shè)置 CloudCanal 需要的賬號(hào)權(quán)限。
步驟2: 安裝 CloudCanal
請(qǐng)參考 全新安裝(Docker Linux/MacOS)误算,下載安裝 CloudCanal 私有部署版本仰美。
步驟 3: 添加數(shù)據(jù)源
登錄 CloudCanal 控制臺(tái),點(diǎn)擊 數(shù)據(jù)源管理 > 新增數(shù)據(jù)源 儿礼。
步驟4: 創(chuàng)建任務(wù)
點(diǎn)擊 同步任務(wù) > 創(chuàng)建任務(wù)咖杂。
選擇源和目標(biāo)數(shù)據(jù)源,并分別點(diǎn)擊 測(cè)試連接蚊夫。
選擇同步的 消息格式诉字。倘若沒有特定的消息格式,請(qǐng)選擇 原始消息格式这橙。
選擇 增量同步。
選擇需要同步的 Topic导披。
-
點(diǎn)擊 確認(rèn)創(chuàng)建屈扎。
任務(wù)創(chuàng)建過程將會(huì)進(jìn)行一系列操作,點(diǎn)擊 同步設(shè)置 > 異步任務(wù)撩匕,找到任務(wù)的創(chuàng)建記錄并點(diǎn)擊 詳情 即可查看鹰晨。
Kafka 源端的任務(wù)創(chuàng)建會(huì)有以下幾個(gè)步驟:
- 結(jié)構(gòu)遷移
- 分配任務(wù)執(zhí)行機(jī)器
- 創(chuàng)建任務(wù)狀態(tài)機(jī)
- 完成任務(wù)創(chuàng)建
-
等待任務(wù)自動(dòng)流轉(zhuǎn)。
當(dāng)任務(wù)創(chuàng)建完成,CloudCanal 會(huì)自動(dòng)進(jìn)行任務(wù)流轉(zhuǎn)模蜡,其中的步驟包括:
- 結(jié)構(gòu)遷移: Kafka 源端會(huì)自動(dòng)為對(duì)端創(chuàng)建 Topic漠趁,如果目標(biāo) Topic 在對(duì)端已存在,則會(huì)忽略忍疾。
- 增量數(shù)據(jù)同步: 增量數(shù)據(jù)將會(huì)持續(xù)地同步到對(duì)端數(shù)據(jù)庫闯传,并且保持實(shí)時(shí)(秒級(jí)別延遲)。
總結(jié)
本文簡(jiǎn)單介紹了如何使用 CloudCanal 進(jìn)行 Kakfa 到 Kafka 數(shù)據(jù)同步卤妒,助力企業(yè)快速構(gòu)建數(shù)據(jù)管道甥绿,增強(qiáng)數(shù)據(jù)分析能力。