github地址
canal
使用IDEA打開,注意國內加載慢的問題,解決方式如下:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror><mirror><id>uk</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://uk.maven.org/maven2/</url></mirror><mirror><id>CN</id><name>OSChina Central</name><url>http://maven.oschina.net/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror><mirror><id>nexus</id><name>internal nexus repository</name><url>http://repo.maven.apache.org/maven2</url><mirrorOf>central</mirrorOf></mirror></mirrors>
</settings>
編譯成功
源碼模塊
Modules ‘canal.parse.driver’, ‘canal.sink’, ‘client-adapter.launcher’, ‘canal.client’, ‘canal.prometheus’ and 36 others were fully rebuilt due to project configuration/dependencies changes
admin模塊:???
client模塊:canal的客戶端。核心接口為CanalConnector
client-adapter模塊:???
common模塊:主要是提供了一些公共的工具類和接口。
connector模塊:???
driver模塊和dbsync模塊:從這兩個模塊的artifactId(canal.parse.driver、canal.parse.dbsync),就可以看出來,這兩個模塊實際上是parser模塊的組件。事實上parser 是通過driver模塊與mysql建立連接,從而獲取到binlog。由于原始的binlog都是二進制流,需要解析成對應的binlog事件,這些binlog事件對象都定義在dbsync模塊中,dbsync 模塊來自于淘寶的tddl。
deployer:部署模塊。通過該模塊提供的CanalLauncher來啟動canal server
docker模塊:???
example模塊:提供client模塊使用案例。
filter模塊:???
images:圖片
instance模塊:一個server有多個instance。每個instance都會模擬成一個mysql實例的slave。instance模塊有四個核心組成部分:parser模塊、sink模塊、store模塊,meta模塊。核心接口為CanalInstance
meta模塊:增量訂閱&消費信息管理器,核心接口為CanalMetaManager,主要用于記錄canal消費到的mysql binlog的位置
parse模塊:數據源接入,模擬slave協議和master進行交互,協議解析。parser模塊依賴于dbsync、driver模塊。
prometheus模塊:
protocol模塊:client和server模塊之間的通信協議
server模塊:canal服務器端。核心接口為CanalServer
sink模塊:parser和store鏈接器,進行數據過濾,加工,分發的工作。核心接口為CanalEventSink
store模塊:數據存儲。核心接口為CanalEventStore
通過deployer模塊,啟動一個canal-server,一個cannal-server內部包含多個instance,每個instance都會偽裝成一個mysql實例的slave。client與server之間的通信協議由protocol模塊定義。client在訂閱binlog信息時,需要傳遞一個destination參數,server會根據這個destination確定由哪一個instance為其提供服務。
項目目錄
D:\SRC\CANAL
├─.github
│ └─ISSUE_TEMPLATE
├─.idea
├─.mvn
│ └─wrapper
├─admin
│ ├─admin-ui
│ │ ├─build
│ │ ├─mock
│ │ ├─node
│ │ ├─public
│ │ ├─src
│ │ │ ├─api
│ │ │ ├─assets
│ │ │ │ └─404_images
│ │ │ ├─components
│ │ │ │ ├─Breadcrumb
│ │ │ │ ├─Hamburger
│ │ │ │ ├─Pagination
│ │ │ │ └─SvgIcon
│ │ │ ├─icons
│ │ │ │ └─svg
│ │ │ ├─layout
│ │ │ │ ├─components
│ │ │ │ │ └─Sidebar
│ │ │ │ └─mixin
│ │ │ ├─router
│ │ │ ├─store
│ │ │ │ └─modules
│ │ │ ├─styles
│ │ │ ├─utils
│ │ │ └─views
│ │ │ ├─canalServer
│ │ │ ├─dashboard
│ │ │ ├─login
│ │ │ └─sys
│ │ └─tests
│ │ └─unit
│ │ ├─components
│ │ └─utils
│ └─admin-web
│ ├─src
│ │ ├─main
│ │ │ ├─assembly
│ │ │ ├─bin
│ │ │ ├─java
│ │ │ │ └─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─admin
│ │ │ │ ├─common
│ │ │ │ │ └─exception
│ │ │ │ ├─config
│ │ │ │ ├─connector
│ │ │ │ ├─controller
│ │ │ │ ├─handler
│ │ │ │ ├─model
│ │ │ │ └─service
│ │ │ │ └─impl
│ │ │ └─resources
│ │ │ └─public
│ │ │ └─static
│ │ │ ├─css
│ │ │ ├─fonts
│ │ │ ├─img
│ │ │ └─js
│ │ └─test
│ │ └─java
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─admin
│ └─target
│ ├─classes
│ │ ├─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─admin
│ │ │ ├─common
│ │ │ │ └─exception
│ │ │ ├─config
│ │ │ ├─connector
│ │ │ ├─controller
│ │ │ ├─handler
│ │ │ ├─model
│ │ │ └─service
│ │ │ └─impl
│ │ └─public
│ │ └─static
│ │ ├─css
│ │ ├─fonts
│ │ ├─img
│ │ └─js
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ └─com
│ └─alibaba
│ └─otter
│ └─canal
│ └─admin
├─client
│ ├─src
│ │ ├─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ ├─impl
│ │ │ │ └─running
│ │ │ ├─kafka
│ │ │ │ └─protocol
│ │ │ ├─pulsarmq
│ │ │ ├─rabbitmq
│ │ │ └─rocketmq
│ │ └─test
│ │ └─java
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─client
│ │ └─running
│ └─target
│ ├─classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─client
│ │ ├─impl
│ │ │ └─running
│ │ ├─kafka
│ │ │ └─protocol
│ │ ├─pulsarmq
│ │ ├─rabbitmq
│ │ └─rocketmq
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ └─com
│ └─alibaba
│ └─otter
│ └─canal
│ └─client
│ └─running
├─client-adapter
│ ├─common
│ │ ├─src
│ │ │ ├─main
│ │ │ │ └─java
│ │ │ │ └─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─client
│ │ │ │ └─adapter
│ │ │ │ └─support
│ │ │ └─test
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─support
│ │ └─target
│ │ ├─classes
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─support
│ │ ├─generated-sources
│ │ │ └─annotations
│ │ ├─generated-test-sources
│ │ │ └─test-annotations
│ │ └─test-classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─client
│ │ └─adapter
│ │ └─support
│ ├─es6x
│ │ ├─src
│ │ │ ├─main
│ │ │ │ ├─java
│ │ │ │ │ ├─com
│ │ │ │ │ │ └─alibaba
│ │ │ │ │ │ └─otter
│ │ │ │ │ │ └─canal
│ │ │ │ │ │ └─client
│ │ │ │ │ │ └─adapter
│ │ │ │ │ │ └─es6x
│ │ │ │ │ │ ├─etl
│ │ │ │ │ │ └─support
│ │ │ │ │ └─org
│ │ │ │ │ └─elasticsearch
│ │ │ │ │ └─client
│ │ │ │ └─resources
│ │ │ │ ├─es6
│ │ │ │ └─META-INF
│ │ │ │ └─canal
│ │ │ └─test
│ │ │ ├─java
│ │ │ │ └─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─client
│ │ │ │ └─adapter
│ │ │ │ └─es6x
│ │ │ │ └─test
│ │ │ │ └─sync
│ │ │ └─resources
│ │ │ └─es6
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─client
│ │ │ │ └─adapter
│ │ │ │ └─es6x
│ │ │ │ ├─etl
│ │ │ │ └─support
│ │ │ ├─es6
│ │ │ ├─META-INF
│ │ │ │ └─canal
│ │ │ └─org
│ │ │ └─elasticsearch
│ │ │ └─client
│ │ ├─generated-sources
│ │ │ └─annotations
│ │ ├─generated-test-sources
│ │ │ └─test-annotations
│ │ └─test-classes
│ │ ├─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─es6x
│ │ │ └─test
│ │ │ └─sync
│ │ └─es6
│ ├─es7x
│ │ ├─src
│ │ │ ├─main
│ │ │ │ ├─java
│ │ │ │ │ └─com
│ │ │ │ │ └─alibaba
│ │ │ │ │ └─otter
│ │ │ │ │ └─canal
│ │ │ │ │ └─client
│ │ │ │ │ └─adapter
│ │ │ │ │ └─es7x
│ │ │ │ │ ├─etl
│ │ │ │ │ └─support
│ │ │ │ └─resources
│ │ │ │ ├─es7
│ │ │ │ └─META-INF
│ │ │ │ └─canal
│ │ │ └─test
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─es7x
│ │ │ └─test
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─client
│ │ │ │ └─adapter
│ │ │ │ └─es7x
│ │ │ │ ├─etl
│ │ │ │ └─support
│ │ │ ├─es7
│ │ │ └─META-INF
│ │ │ └─canal
│ │ ├─generated-sources
│ │ │ └─annotations
│ │ ├─generated-test-sources
│ │ │ └─test-annotations
│ │ └─test-classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─client
│ │ └─adapter
│ │ └─es7x
│ │ └─test
│ ├─escore
│ │ ├─src
│ │ │ └─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─es
│ │ │ └─core
│ │ │ ├─config
│ │ │ ├─monitor
│ │ │ ├─service
│ │ │ └─support
│ │ └─target
│ │ ├─classes
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─es
│ │ │ └─core
│ │ │ ├─config
│ │ │ ├─monitor
│ │ │ ├─service
│ │ │ └─support
│ │ └─generated-sources
│ │ └─annotations
│ ├─hbase
│ │ ├─src
│ │ │ ├─main
│ │ │ │ ├─java
│ │ │ │ │ └─com
│ │ │ │ │ └─alibaba
│ │ │ │ │ └─otter
│ │ │ │ │ └─canal
│ │ │ │ │ └─client
│ │ │ │ │ └─adapter
│ │ │ │ │ └─hbase
│ │ │ │ │ ├─config
│ │ │ │ │ ├─monitor
│ │ │ │ │ ├─service
│ │ │ │ │ └─support
│ │ │ │ └─resources
│ │ │ │ ├─hbase
│ │ │ │ └─META-INF
│ │ │ │ └─canal
│ │ │ └─test
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─hbase
│ │ │ └─test
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─client
│ │ │ │ └─adapter
│ │ │ │ └─hbase
│ │ │ │ ├─config
│ │ │ │ ├─monitor
│ │ │ │ ├─service
│ │ │ │ └─support
│ │ │ ├─hbase
│ │ │ └─META-INF
│ │ │ └─canal
│ │ ├─generated-sources
│ │ │ └─annotations
│ │ ├─generated-test-sources
│ │ │ └─test-annotations
│ │ └─test-classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─client
│ │ └─adapter
│ │ └─hbase
│ │ └─test
│ ├─kudu
│ │ ├─src
│ │ │ ├─main
│ │ │ │ ├─java
│ │ │ │ │ └─com
│ │ │ │ │ └─alibaba
│ │ │ │ │ └─otter
│ │ │ │ │ └─canal
│ │ │ │ │ └─client
│ │ │ │ │ └─adapter
│ │ │ │ │ └─kudu
│ │ │ │ │ ├─config
│ │ │ │ │ ├─monitor
│ │ │ │ │ ├─service
│ │ │ │ │ └─support
│ │ │ │ └─resources
│ │ │ │ ├─kudu
│ │ │ │ └─META-INF.canal
│ │ │ └─test
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─kudu
│ │ │ └─test
│ │ │ └─sync
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─client
│ │ │ │ └─adapter
│ │ │ │ └─kudu
│ │ │ │ ├─config
│ │ │ │ ├─monitor
│ │ │ │ ├─service
│ │ │ │ └─support
│ │ │ ├─kudu
│ │ │ └─META-INF.canal
│ │ ├─generated-sources
│ │ │ └─annotations
│ │ ├─generated-test-sources
│ │ │ └─test-annotations
│ │ └─test-classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─client
│ │ └─adapter
│ │ └─kudu
│ │ └─test
│ │ └─sync
│ ├─launcher
│ │ ├─src
│ │ │ └─main
│ │ │ ├─assembly
│ │ │ ├─bin
│ │ │ ├─java
│ │ │ │ └─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─adapter
│ │ │ │ └─launcher
│ │ │ │ ├─common
│ │ │ │ ├─config
│ │ │ │ ├─loader
│ │ │ │ ├─monitor
│ │ │ │ │ └─remote
│ │ │ │ └─rest
│ │ │ └─resources
│ │ │ └─META-INF
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─adapter
│ │ │ │ └─launcher
│ │ │ │ ├─common
│ │ │ │ ├─config
│ │ │ │ ├─loader
│ │ │ │ ├─monitor
│ │ │ │ │ └─remote
│ │ │ │ └─rest
│ │ │ └─META-INF
│ │ └─generated-sources
│ │ └─annotations
│ ├─logger
│ │ ├─src
│ │ │ └─main
│ │ │ ├─java
│ │ │ │ └─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─client
│ │ │ │ └─adapter
│ │ │ │ └─logger
│ │ │ └─resources
│ │ │ └─META-INF
│ │ │ └─canal
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─client
│ │ │ │ └─adapter
│ │ │ │ └─logger
│ │ │ └─META-INF
│ │ │ └─canal
│ │ └─generated-sources
│ │ └─annotations
│ ├─phoenix
│ │ ├─src
│ │ │ ├─main
│ │ │ │ ├─java
│ │ │ │ │ └─com
│ │ │ │ │ └─alibaba
│ │ │ │ │ └─otter
│ │ │ │ │ └─canal
│ │ │ │ │ └─client
│ │ │ │ │ └─adapter
│ │ │ │ │ └─phoenix
│ │ │ │ │ ├─config
│ │ │ │ │ ├─monitor
│ │ │ │ │ ├─service
│ │ │ │ │ └─support
│ │ │ │ └─resources
│ │ │ │ ├─META-INF
│ │ │ │ │ └─canal
│ │ │ │ └─phoenix
│ │ │ └─test
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─phoenix
│ │ │ └─test
│ │ │ └─sync
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─client
│ │ │ │ └─adapter
│ │ │ │ └─phoenix
│ │ │ │ ├─config
│ │ │ │ ├─monitor
│ │ │ │ ├─service
│ │ │ │ └─support
│ │ │ ├─META-INF
│ │ │ │ └─canal
│ │ │ └─phoenix
│ │ ├─generated-sources
│ │ │ └─annotations
│ │ ├─generated-test-sources
│ │ │ └─test-annotations
│ │ └─test-classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─client
│ │ └─adapter
│ │ └─phoenix
│ │ └─test
│ │ └─sync
│ ├─rdb
│ │ ├─src
│ │ │ ├─main
│ │ │ │ ├─java
│ │ │ │ │ └─com
│ │ │ │ │ └─alibaba
│ │ │ │ │ └─otter
│ │ │ │ │ └─canal
│ │ │ │ │ └─client
│ │ │ │ │ └─adapter
│ │ │ │ │ └─rdb
│ │ │ │ │ ├─config
│ │ │ │ │ ├─monitor
│ │ │ │ │ ├─service
│ │ │ │ │ └─support
│ │ │ │ └─resources
│ │ │ │ ├─META-INF
│ │ │ │ │ └─canal
│ │ │ │ └─rdb
│ │ │ └─test
│ │ │ ├─java
│ │ │ │ └─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─client
│ │ │ │ └─adapter
│ │ │ │ └─rdb
│ │ │ │ └─test
│ │ │ │ └─sync
│ │ │ └─resources
│ │ │ └─rdb
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─client
│ │ │ │ └─adapter
│ │ │ │ └─rdb
│ │ │ │ ├─config
│ │ │ │ ├─monitor
│ │ │ │ ├─service
│ │ │ │ └─support
│ │ │ ├─META-INF
│ │ │ │ └─canal
│ │ │ └─rdb
│ │ ├─generated-sources
│ │ │ └─annotations
│ │ ├─generated-test-sources
│ │ │ └─test-annotations
│ │ └─test-classes
│ │ ├─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─rdb
│ │ │ └─test
│ │ │ └─sync
│ │ └─rdb
│ └─tablestore
│ ├─src
│ │ └─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─tablestore
│ │ │ ├─common
│ │ │ ├─config
│ │ │ ├─enums
│ │ │ ├─service
│ │ │ └─support
│ │ └─resources
│ │ ├─META-INF
│ │ │ └─canal
│ │ └─tablestore
│ └─target
│ ├─classes
│ │ ├─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─client
│ │ │ └─adapter
│ │ │ └─tablestore
│ │ │ ├─common
│ │ │ ├─config
│ │ │ ├─enums
│ │ │ ├─service
│ │ │ └─support
│ │ ├─META-INF
│ │ │ └─canal
│ │ └─tablestore
│ └─generated-sources
│ └─annotations
├─common
│ ├─src
│ │ ├─main
│ │ │ └─java
│ │ │ └─com
│ │ │ ├─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─common
│ │ │ │ ├─alarm
│ │ │ │ ├─utils
│ │ │ │ └─zookeeper
│ │ │ │ └─running
│ │ │ └─google
│ │ │ └─common
│ │ │ └─collect
│ │ └─test
│ │ └─java
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─common
│ │ └─utils
│ └─target
│ ├─classes
│ │ └─com
│ │ ├─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─common
│ │ │ ├─alarm
│ │ │ ├─utils
│ │ │ └─zookeeper
│ │ │ └─running
│ │ └─google
│ │ └─common
│ │ └─collect
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ └─com
│ └─alibaba
│ └─otter
│ └─canal
│ └─common
│ └─utils
├─connector
│ ├─core
│ │ ├─src
│ │ │ └─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─connector
│ │ │ └─core
│ │ │ ├─config
│ │ │ ├─consumer
│ │ │ ├─filter
│ │ │ ├─producer
│ │ │ ├─spi
│ │ │ └─util
│ │ └─target
│ │ ├─classes
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─connector
│ │ │ └─core
│ │ │ ├─config
│ │ │ ├─consumer
│ │ │ ├─filter
│ │ │ ├─producer
│ │ │ ├─spi
│ │ │ └─util
│ │ └─generated-sources
│ │ └─annotations
│ ├─kafka-connector
│ │ ├─src
│ │ │ ├─main
│ │ │ │ ├─java
│ │ │ │ │ └─com
│ │ │ │ │ └─alibaba
│ │ │ │ │ └─otter
│ │ │ │ │ └─canal
│ │ │ │ │ └─connector
│ │ │ │ │ └─kafka
│ │ │ │ │ ├─config
│ │ │ │ │ ├─consumer
│ │ │ │ │ └─producer
│ │ │ │ └─resources
│ │ │ │ └─META-INF
│ │ │ │ └─canal
│ │ │ └─test
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─connector
│ │ │ └─kafka
│ │ │ └─test
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─connector
│ │ │ │ └─kafka
│ │ │ │ ├─config
│ │ │ │ ├─consumer
│ │ │ │ └─producer
│ │ │ └─META-INF
│ │ │ └─canal
│ │ ├─generated-sources
│ │ │ └─annotations
│ │ ├─generated-test-sources
│ │ │ └─test-annotations
│ │ └─test-classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─connector
│ │ └─kafka
│ │ └─test
│ ├─pulsarmq-connector
│ │ ├─src
│ │ │ ├─main
│ │ │ │ ├─java
│ │ │ │ │ └─com
│ │ │ │ │ └─alibaba
│ │ │ │ │ └─otter
│ │ │ │ │ └─canal
│ │ │ │ │ └─connector
│ │ │ │ │ └─pulsarmq
│ │ │ │ │ ├─config
│ │ │ │ │ ├─consumer
│ │ │ │ │ └─producer
│ │ │ │ └─resources
│ │ │ │ └─META-INF
│ │ │ │ └─canal
│ │ │ └─test
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─connector
│ │ │ └─pulsarmq
│ │ │ └─consumer
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─connector
│ │ │ │ └─pulsarmq
│ │ │ │ ├─config
│ │ │ │ ├─consumer
│ │ │ │ └─producer
│ │ │ └─META-INF
│ │ │ └─canal
│ │ ├─generated-sources
│ │ │ └─annotations
│ │ ├─generated-test-sources
│ │ │ └─test-annotations
│ │ └─test-classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─connector
│ │ └─pulsarmq
│ │ └─consumer
│ ├─rabbitmq-connector
│ │ ├─src
│ │ │ └─main
│ │ │ ├─java
│ │ │ │ └─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─connector
│ │ │ │ └─rabbitmq
│ │ │ │ ├─config
│ │ │ │ ├─consumer
│ │ │ │ └─producer
│ │ │ └─resources
│ │ │ └─META-INF
│ │ │ └─canal
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─connector
│ │ │ │ └─rabbitmq
│ │ │ │ ├─config
│ │ │ │ ├─consumer
│ │ │ │ └─producer
│ │ │ └─META-INF
│ │ │ └─canal
│ │ └─generated-sources
│ │ └─annotations
│ ├─rocketmq-connector
│ │ ├─src
│ │ │ └─main
│ │ │ ├─java
│ │ │ │ └─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─connector
│ │ │ │ └─rocketmq
│ │ │ │ ├─config
│ │ │ │ ├─consumer
│ │ │ │ └─producer
│ │ │ └─resources
│ │ │ └─META-INF
│ │ │ └─canal
│ │ └─target
│ │ ├─classes
│ │ │ ├─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─connector
│ │ │ │ └─rocketmq
│ │ │ │ ├─config
│ │ │ │ ├─consumer
│ │ │ │ └─producer
│ │ │ └─META-INF
│ │ │ └─canal
│ │ └─generated-sources
│ │ └─annotations
│ └─tcp-connector
│ ├─src
│ │ └─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─connector
│ │ │ └─tcp
│ │ │ ├─config
│ │ │ └─consumer
│ │ └─resources
│ │ └─META-INF
│ │ └─canal
│ └─target
│ ├─classes
│ │ ├─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─connector
│ │ │ └─tcp
│ │ │ ├─config
│ │ │ └─consumer
│ │ └─META-INF
│ │ └─canal
│ └─generated-sources
│ └─annotations
├─dbsync
│ ├─src
│ │ ├─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─taobao
│ │ │ └─tddl
│ │ │ └─dbsync
│ │ │ └─binlog
│ │ │ ├─event
│ │ │ │ └─mariadb
│ │ │ └─exception
│ │ └─test
│ │ ├─java
│ │ │ └─com
│ │ │ └─taobao
│ │ │ └─tddl
│ │ │ └─dbsync
│ │ │ └─binlog
│ │ │ └─event
│ │ └─resources
│ │ └─binlog
│ └─target
│ ├─classes
│ │ └─com
│ │ └─taobao
│ │ └─tddl
│ │ └─dbsync
│ │ └─binlog
│ │ ├─event
│ │ │ └─mariadb
│ │ └─exception
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ ├─binlog
│ └─com
│ └─taobao
│ └─tddl
│ └─dbsync
│ └─binlog
│ └─event
├─deployer
│ ├─src
│ │ └─main
│ │ ├─assembly
│ │ ├─bin
│ │ ├─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─deployer
│ │ │ ├─admin
│ │ │ └─monitor
│ │ └─resources
│ │ ├─example
│ │ ├─metrics
│ │ └─spring
│ │ └─tsdb
│ │ ├─sql
│ │ └─sql-map
│ └─target
│ ├─classes
│ │ ├─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─deployer
│ │ │ ├─admin
│ │ │ └─monitor
│ │ ├─example
│ │ ├─metrics
│ │ └─spring
│ │ └─tsdb
│ │ ├─sql
│ │ └─sql-map
│ └─generated-sources
│ └─annotations
├─docker
│ ├─base
│ │ └─yum
│ └─image
│ ├─admin
│ │ └─bin
│ └─alidata
│ ├─bin
│ ├─init
│ └─lib
├─driver
│ ├─src
│ │ ├─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─parse
│ │ │ └─driver
│ │ │ └─mysql
│ │ │ ├─packets
│ │ │ │ ├─client
│ │ │ │ └─server
│ │ │ ├─socket
│ │ │ └─utils
│ │ └─test
│ │ └─java
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─parse
│ │ └─driver
│ │ └─mysql
│ │ ├─packets
│ │ │ └─client
│ │ └─utils
│ └─target
│ ├─classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─parse
│ │ └─driver
│ │ └─mysql
│ │ ├─packets
│ │ │ ├─client
│ │ │ └─server
│ │ ├─socket
│ │ └─utils
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ └─com
│ └─alibaba
│ └─otter
│ └─canal
│ └─parse
│ └─driver
│ └─mysql
│ ├─packets
│ │ └─client
│ └─utils
├─example
│ ├─src
│ │ └─main
│ │ ├─assembly
│ │ ├─bin
│ │ ├─conf
│ │ ├─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─example
│ │ │ ├─kafka
│ │ │ └─rocketmq
│ │ └─resources
│ └─target
│ ├─classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─example
│ │ ├─kafka
│ │ └─rocketmq
│ └─generated-sources
│ └─annotations
├─filter
│ ├─src
│ │ ├─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─filter
│ │ │ ├─aviater
│ │ │ └─exception
│ │ └─test
│ │ └─java
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─filter
│ └─target
│ ├─classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─filter
│ │ ├─aviater
│ │ └─exception
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ └─com
│ └─alibaba
│ └─otter
│ └─canal
│ └─filter
├─images
├─instance
│ ├─core
│ │ ├─src
│ │ │ └─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─instance
│ │ │ └─core
│ │ └─target
│ │ ├─classes
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─instance
│ │ │ └─core
│ │ └─generated-sources
│ │ └─annotations
│ ├─manager
│ │ ├─src
│ │ │ ├─main
│ │ │ │ └─java
│ │ │ │ └─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─instance
│ │ │ │ └─manager
│ │ │ │ ├─model
│ │ │ │ └─plain
│ │ │ └─test
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─instance
│ │ │ └─manager
│ │ └─target
│ │ ├─classes
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─instance
│ │ │ └─manager
│ │ │ ├─model
│ │ │ └─plain
│ │ ├─generated-sources
│ │ │ └─annotations
│ │ ├─generated-test-sources
│ │ │ └─test-annotations
│ │ └─test-classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─instance
│ │ └─manager
│ └─spring
│ ├─src
│ │ ├─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─instance
│ │ │ └─spring
│ │ │ └─support
│ │ └─test
│ │ ├─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─instance
│ │ │ └─spring
│ │ │ └─integrated
│ │ └─resources
│ │ ├─retl
│ │ └─spring
│ └─target
│ ├─classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─instance
│ │ └─spring
│ │ └─support
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ ├─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─instance
│ │ └─spring
│ │ └─integrated
│ ├─retl
│ └─spring
├─meta
│ ├─src
│ │ ├─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─meta
│ │ │ └─exception
│ │ └─test
│ │ └─java
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─meta
│ └─target
│ ├─classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─meta
│ │ └─exception
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ └─com
│ └─alibaba
│ └─otter
│ └─canal
│ └─meta
├─parse
│ ├─src
│ │ ├─main
│ │ │ ├─java
│ │ │ │ └─com
│ │ │ │ └─alibaba
│ │ │ │ └─otter
│ │ │ │ └─canal
│ │ │ │ └─parse
│ │ │ │ ├─exception
│ │ │ │ ├─ha
│ │ │ │ ├─inbound
│ │ │ │ │ ├─group
│ │ │ │ │ └─mysql
│ │ │ │ │ ├─dbsync
│ │ │ │ │ ├─ddl
│ │ │ │ │ ├─local
│ │ │ │ │ ├─rds
│ │ │ │ │ │ ├─data
│ │ │ │ │ │ └─request
│ │ │ │ │ └─tsdb
│ │ │ │ │ └─dao
│ │ │ │ ├─index
│ │ │ │ └─support
│ │ │ └─resources
│ │ │ └─ddl
│ │ │ ├─derby
│ │ │ ├─h2
│ │ │ └─mysql
│ │ └─test
│ │ ├─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─parse
│ │ │ ├─helper
│ │ │ ├─inbound
│ │ │ │ ├─group
│ │ │ │ └─mysql
│ │ │ │ ├─ddl
│ │ │ │ └─tsdb
│ │ │ ├─index
│ │ │ └─stub
│ │ └─resources
│ │ ├─binlog
│ │ │ └─tsdb
│ │ ├─ddl
│ │ │ ├─alter
│ │ │ └─table
│ │ └─tsdb
│ │ └─sql-map
│ └─target
│ ├─classes
│ │ ├─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─parse
│ │ │ ├─exception
│ │ │ ├─ha
│ │ │ ├─inbound
│ │ │ │ ├─group
│ │ │ │ └─mysql
│ │ │ │ ├─dbsync
│ │ │ │ ├─ddl
│ │ │ │ ├─local
│ │ │ │ ├─rds
│ │ │ │ │ ├─data
│ │ │ │ │ └─request
│ │ │ │ └─tsdb
│ │ │ │ └─dao
│ │ │ ├─index
│ │ │ └─support
│ │ └─ddl
│ │ ├─derby
│ │ ├─h2
│ │ └─mysql
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ ├─binlog
│ │ └─tsdb
│ ├─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─parse
│ │ ├─helper
│ │ ├─inbound
│ │ │ ├─group
│ │ │ └─mysql
│ │ │ ├─ddl
│ │ │ └─tsdb
│ │ ├─index
│ │ └─stub
│ ├─ddl
│ │ ├─alter
│ │ └─table
│ └─tsdb
│ └─sql-map
├─prometheus
│ ├─src
│ │ └─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─prometheus
│ │ │ └─impl
│ │ └─resources
│ │ └─META-INF
│ │ └─services
│ └─target
│ ├─classes
│ │ ├─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─prometheus
│ │ │ └─impl
│ │ └─META-INF
│ │ └─services
│ └─generated-sources
│ └─annotations
├─protocol
│ ├─src
│ │ ├─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─protocol
│ │ │ ├─exception
│ │ │ └─position
│ │ └─test
│ │ └─java
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─protocol
│ └─target
│ ├─classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─protocol
│ │ ├─exception
│ │ └─position
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ └─com
│ └─alibaba
│ └─otter
│ └─canal
│ └─protocol
├─server
│ ├─src
│ │ ├─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ ├─admin
│ │ │ │ ├─handler
│ │ │ │ └─netty
│ │ │ ├─server
│ │ │ │ ├─embedded
│ │ │ │ ├─exception
│ │ │ │ └─netty
│ │ │ │ ├─handler
│ │ │ │ └─listener
│ │ │ └─spi
│ │ └─test
│ │ └─java
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─server
│ │ └─embedded
│ └─target
│ ├─classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ ├─admin
│ │ │ ├─handler
│ │ │ └─netty
│ │ ├─server
│ │ │ ├─embedded
│ │ │ ├─exception
│ │ │ └─netty
│ │ │ ├─handler
│ │ │ └─listener
│ │ └─spi
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ └─com
│ └─alibaba
│ └─otter
│ └─canal
│ └─server
│ └─embedded
├─sink
│ ├─src
│ │ ├─main
│ │ │ └─java
│ │ │ └─com
│ │ │ └─alibaba
│ │ │ └─otter
│ │ │ └─canal
│ │ │ └─sink
│ │ │ ├─entry
│ │ │ │ └─group
│ │ │ └─exception
│ │ └─test
│ │ └─java
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─sink
│ │ └─stub
│ └─target
│ ├─classes
│ │ └─com
│ │ └─alibaba
│ │ └─otter
│ │ └─canal
│ │ └─sink
│ │ ├─entry
│ │ │ └─group
│ │ └─exception
│ ├─generated-sources
│ │ └─annotations
│ ├─generated-test-sources
│ │ └─test-annotations
│ └─test-classes
│ └─com
│ └─alibaba
│ └─otter
│ └─canal
│ └─sink
│ └─stub
└─store├─src│ ├─main│ │ └─java│ │ └─com│ │ └─alibaba│ │ └─otter│ │ └─canal│ │ └─store│ │ ├─helper│ │ ├─memory│ │ └─model│ └─test│ └─java│ └─com│ └─alibaba│ └─otter│ └─canal│ └─store│ └─memory│ └─buffer└─target├─classes│ └─com│ └─alibaba│ └─otter│ └─canal│ └─store│ ├─helper│ ├─memory│ └─model├─generated-sources│ └─annotations├─generated-test-sources│ └─test-annotations└─test-classes└─com└─alibaba└─otter└─canal└─store└─memory└─buffer