最近在搞數據同步相關的內容,須要對otter的代碼進行擴展,因此須要先熟悉一下otter的源碼。首先咱們總體來看下otter的工程結構。otter的工程結構比較複雜,須要花費必定的時間來理解各個部分的內容,僅僅經過官方文檔沒法準確的理解各個模塊的內容,現分析以下:node
otter總體的工程結構以下:web
otter
|--manager
|--biz
|--deployer
|--web
|--node
|--canal
|--common
|--deployer
|--etl
|--extend
|--shared
|--arbitrate
|--common
|--communication
|--etl
|--push
其中,經過官方文檔咱們能夠知道,manager和node是要單獨部分的工程,因此咱們能夠大致瞭解以下內容:服務器
- manager是對node節點進行管理,數據統計,node節點之間的協調,基本信息的同步等。
- biz:業務處理內容
- deployer:manager打包和啓動的類,主要內置一個jetty的服務啓動器,經過OtterManagerLauncher啓動
- web:manager的web頁面相關內容,包括接口
- node是實際上進行數據同步的工程
- canal:canal客戶端,就是訂閱binlog的客戶端,Otter採用的是Embed的方式引入Canal
- common:公共內容定義
- deployer:打包工具,運行腳本,內置jetty服務器,啓動類OtterLauncher
- etl:S.E.T.L 調度、處理的實現,是Otter最複雜、也是最核心的部分
- extend:留有的擴展類,能夠自定義一些處理過程
- shared是manager和node公有的子系統
- arbitrate:仲裁器相關內容,代碼比較多,後面咱們慢慢分析
- common:manager和node用到的一些公共類
- communication:遠程調用相關內容
- etl
- push
最後兩塊的具體內容還未仔細分析,須要後續進行補充。工具