http://www.iocoder.cn/Canal/tianshouzhi/tutorials/
1.Client:客户端 启动和建立连接,发送和接收数据,核心接口为CanalConnector
2.Client-adapter : 客户端的适配器
3.common : 公用的组件和工具类
4.dbsync: 数据库同步的,包括解析出来的event
5.deployer: canal 部署,加载配置;通过该模块提供的CanalLauncher来启动canal server
6.driver : canal和数据库 连接,数据传输的一些实现
7.filter : 数据过滤机制
8.instance : canal 的实例,模拟成为一个MySQL实例的slave
9.meta : 增量订阅 & 消费信息管理器,核心接口为CanalMetaManager,主要用于记录canal消费到的mysql binlog的位置。
10.parse : 把二进制文件解析成mysqlEvent;模拟slave协议和master进行交互,协议解析
11.promotheus: 数据监控和采集
12.protocol: 协议和position,client和server模块之间的通信协议
13.server : 服务端启动和收发消息,核心接口为CanalServer
14.sink : event事件消费,路由分发,过滤,加工。parser和store连接器,核心接口为CanalEventSink
15.store : canal 数据存储,核心接口为CanalEventStore。
通过deployer模块,启动一个canal-server,一个cannal-server内部包含多个instance,每个instance都会伪装成一个mysql实例的slave。client与server之间的通信协议由protocol模块定义。client在订阅binlog信息时,需要传递一个destination参数,server会根据这个destination确定由哪一个instance为其提供服务。