canal整體架構

整體架構

image.png

說明

server:對應于一個jvm,管理多個instance,提供服務
instance:偽裝成一個slave,從mysql dump數(shù)據(jù)
eventParser (數(shù)據(jù)源接入,模擬slave協(xié)議和master進行交互,協(xié)議解析)
eventSink (Parser和Store鏈接器,進行數(shù)據(jù)過濾,加工,分發(fā)的工作)
eventStore (數(shù)據(jù)存儲)
metaManager (增量訂閱&消費信息管理器)

server

image.png

為了方便組件化使用,特意抽象了Embeded(嵌入式) / Netty(網(wǎng)絡訪問)的兩種實現(xiàn)
Embeded:消費端直接本地嵌入,無需單獨部署canal服務
Netty: 獨立部署,提供netty服務,消費端遠程抓取

instance

image.png
instance的兩種配置方式

1.本地spring配置,默認為此方式---Manager
2.遠程讀取配置,需要自己實現(xiàn)---Spring

eventParser

image.png

整個parser過程大致可分為幾步:
Connection獲取上一次解析成功的位置 (如果第一次啟動,則獲取初始指定的位置或者是當前數(shù)據(jù)庫的binlog位點)
Connection建立鏈接,發(fā)送BINLOG_DUMP指令
// 0. write command number
// 1. write 4 bytes bin-log position to start at
// 2. write 2 bytes bin-log flags
// 3. write 4 bytes server id of the slave
// 4. write bin-log file name
Mysql開始推送Binaly Log
接收到的Binaly Log的通過Binlog parser進行協(xié)議解析,補充一些特定信息
// 補充字段名字,字段類型,主鍵信息,unsigned類型處理
傳遞給EventSink模塊進行數(shù)據(jù)存儲,是一個阻塞操作,直到存儲成功
存儲成功后,定時記錄Binaly Log位置

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spark實時統(tǒng)計訂單量 - 簡書http://www.itdecent.cn/p/3ec093a9d584 注:...
    葡萄喃喃囈語閱讀 5,672評論 0 1
  • 1)介紹 PerconaXtraBackup(簡稱PXB)是Percona公司開發(fā)的一個用于MySQL數(shù)據(jù)庫物理熱...
    溫東閱讀 2,800評論 0 6
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,597評論 19 139
  • 想起曾經(jīng)在讀書一直妄想畢業(yè)的自己,想著畢業(yè)后有多開心,有多自在。想起那時的自己真心覺得我真的傻到不能再傻了。 畢業(yè)...
    陳依依閱讀 224評論 0 1
  • 改變,可以從改變發(fā)型開始。 改變,也可以從改變屋子布局開始。 改變,更可以從接受一種新的記錄方式開始。 改變,需要...
    Anne_GG閱讀 262評論 0 1

友情鏈接更多精彩內(nèi)容