概述
本篇主要是為了講清楚canal是如何啟動的,從文章内容結構來說主要分為流程圖、時序圖、核心源碼三大塊。了解一個東西宏觀上一定要理清楚層次,然後細節再去追求融會貫通。希望你們會喜歡。
canal啟動流程圖
說明:
整個canal的啟動過程過程其實大的分為3個過程,分别入口的main函數啟動,配置的加載,服務的啟動。main的函數啟動就沒說可以說的,基本上就一個啟動入口,着重講講配置的加載。
配置的加載,canal的配置主要分為全局配置和執行個體配置,全局配置就是啟動canal需要的配置,執行個體配置就是啟動Instance需要的配置,這個可以參考後面給出的canal配置章節。
啟動過程,啟動過程從宏觀層面來說應該包括 啟動embededCanalServer、啟動CanalServerWithNetty,啟動Instance服務。如果在這個基礎上再考慮的話還需要考慮Instance層面的HA監控和配置變更監控,以及Server的HA監控。
canal啟動時序圖
說明
canal啟動的時序圖其實是對canal的流程圖進行了細分,其實總體來看也是兩大塊,配置的加載,服務的啟動。
配置的加載包括:全局配置的加載、instance配置的加載、建立embededCanalServer和CanalServerWithNetty執行個體、建立server的對應monitor對象(用于HA)、autoscan的監控、建立zkClient執行個體。
服務啟動包括:注冊自身節點到zk節點、訂閱zk節點資訊、啟動embededCanalServer執行個體、啟動CanalServerWithNetty執行個體、啟動instance服務(包括metaManager、alarmHandler、eventStore、eventSink、eventParser)、啟動instance配置監聽、啟動instance config配置監聽。
canal 啟動源碼解析
配置加載
配置加載-1
配置加載-2
服務啟動
服務啟動-1
服務啟動-2
canal配置檔案
canal配置檔案目錄
canal配置
canal的配置主要分為3大塊,分别是canal的全局配置canal.properties、instance的配置instance.properties、以及instance的spring的配置file-instance.xml。
canal全局配置
canal的全局配置,基本上可以看到一些全局的配置。
canal的instance配置
canal的instance配置是指連接配接mysql的執行個體的配置,這個大家仔細看就能看懂。
canal-instance-sprint執行個體配置
instance-spring配置
spring配置其實是用于建構spring-factory用于建立instance執行個體使用的,從上圖就可以看出來。可以看到canal的instance各個元件包括eventParser、eventSink、eventStore、metaManager。