github地址

canal

使用IDEA打开,注意国内加载慢的问题,解决方式如下:

阿里Canal学习笔记-LMLPHP
阿里Canal学习笔记-LMLPHP

<?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>

编译成功

阿里Canal学习笔记-LMLPHP

源码模块

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
阿里Canal学习笔记-LMLPHP

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

阿里Canal学习笔记-LMLPHP
通过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

08-18 11:55