天天看點

flink實時數倉(三):cannel

産生背景

工作原理

Canal的架構

早期,阿裡巴巴B2B公司因為存在杭州和美國雙機房部署,存在跨機房同步的業務需求。不過早期的資料庫同步業務,主要是基于trigger的方式擷取增量變更,不過從2010年開始,阿裡系公司開始逐漸的嘗試基于資料庫的日志解析,擷取增量變更進行同步,由此衍生出了增量訂閱&消費的業務,從此開啟了一段新紀元。

ps. 目前内部版本已經支援mysql和oracle部分版本的日志解析,目前的canal開源版本支援5.7及以下的版本(阿裡内部mysql 5.7.13, 5.6.10, mysql 5.5.18和5.1.40/48)

flink實時數倉(三):cannel

1.canal模拟mysql slave的互動協定,僞裝自己為mysql slave,向mysql master發送dump協定

2.mysql master收到dump請求,開始推送binary log給slave(也就是canal)

3.canal解析binary log對象(原始為byte流)

4.canal把解析後的binary log以特性格式的消息推送到Kafka供下遊消費

flink實時數倉(三):cannel

說明

server代表一個canal運作執行個體,對應于一個jvm instance對應于一個資料隊列 (1個server對應1…n個instance)

instance子產品

eventParser (資料源接入,模拟slave協定和master進行互動,協定解析) eventSink (Parser和Store連結器,進行資料過濾,加工,分發的工作) eventStore (資料存儲) metaManager (增量訂閱&消費資訊管理器)