天天看點

canal 啟動介紹(2)

概述    

    本篇主要是為了講清楚canal是如何啟動的,從文章内容結構來說主要分為流程圖、時序圖、核心源碼三大塊。了解一個東西宏觀上一定要理清楚層次,然後細節再去追求融會貫通。希望你們會喜歡。

canal啟動流程圖

canal 啟動介紹(2)

說明:

    整個canal的啟動過程過程其實大的分為3個過程,分别入口的main函數啟動,配置的加載,服務的啟動。main的函數啟動就沒說可以說的,基本上就一個啟動入口,着重講講配置的加載。

    配置的加載,canal的配置主要分為全局配置和執行個體配置,全局配置就是啟動canal需要的配置,執行個體配置就是啟動Instance需要的配置,這個可以參考後面給出的canal配置章節。

    啟動過程,啟動過程從宏觀層面來說應該包括 啟動embededCanalServer、啟動CanalServerWithNetty,啟動Instance服務。如果在這個基礎上再考慮的話還需要考慮Instance層面的HA監控和配置變更監控,以及Server的HA監控。

canal啟動時序圖

canal 啟動介紹(2)

說明

    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 啟動介紹(2)

配置加載-1

canal 啟動介紹(2)

配置加載-2

服務啟動

canal 啟動介紹(2)

服務啟動-1

canal 啟動介紹(2)

服務啟動-2

canal配置檔案

canal配置檔案目錄

canal 啟動介紹(2)

canal配置

    canal的配置主要分為3大塊,分别是canal的全局配置canal.properties、instance的配置instance.properties、以及instance的spring的配置file-instance.xml。

canal全局配置

canal 啟動介紹(2)

    canal的全局配置,基本上可以看到一些全局的配置。

canal的instance配置

canal 啟動介紹(2)

    canal的instance配置是指連接配接mysql的執行個體的配置,這個大家仔細看就能看懂。

canal-instance-sprint執行個體配置

canal 啟動介紹(2)

instance-spring配置

    spring配置其實是用于建構spring-factory用于建立instance執行個體使用的,從上圖就可以看出來。可以看到canal的instance各個元件包括eventParser、eventSink、eventStore、metaManager。