系列
概述? ??
????本篇主要是為了講清楚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 啟動源碼解析
配置加載
服務啟動
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實例配置
說明
? ? spring配置其實是用于構建spring-factory用于創建instance實例使用的,從上圖就可以看出來??梢钥吹絚anal的instance各個組件包括eventParser、eventSink、eventStore、metaManager。