canal.deployer
canal.prometheus
canal.server
canal.instance.core
canal.instance.spring
canal.instance.manager
=======================================================================
canal.example
canal.client
canal.protocol
=======================================================================
client-adapter.launcher
client-adapter.common
canal.client
client-adapter.elasticsearch/kafka/rockermq....

server代表一个canal服务端的运行实例,对应于一个jvm。
instance对应于一个数据队列 (1个server对应1…n个instance)
instance下的子模块:
eventParser (数据源接入,模拟slave协议和master进行交互,协议解析)
eventSink (Parser和Store链接器,进行数据过滤,加工,分发的工作)
eventStore (数据存储)
metaManager (增量订阅&消费信息管理器)
这些组件在项目代码中都有对应的子项目与之对应起来。因此我们在看代码的时候就不会迷茫,大概知道其职责与其它项目的关系。
client
该项目是连接canal的服务器接收数据变更的客户端组件包,应用可通过集成该包实现在应用中消费数据通道的变更,比如我们可以在搜索引擎的索引变更应用中集成它,我们还可以在将数据变更事件转化其它MQ消息的应用中集成它。
common
该项目是一个通用模块,它定义了整个canal项目群都可以使用的一些工具类(各种utils),全局的一些抽象接口(比如生命周期),通用技术组件(比如zookeeper的扩展类)和报警组件定义等等。
protocol
项目是通用网络协议模块,涉及到网络传输的项目都可以使用该模块。该模块目前定义了基于protobuf编码格式的网络通讯消息协议。
driver
MySQL协议的驱动程序,实现了MySQL的binlog复制网络协议的一些接口和类。
dbsync
数据库复制包。定义了数据库复制的各种事件的接口及实现类。
filter
该项目是一个事件过滤模块。定义了对于各种消息、事件的一些通用过滤接口及实现。支持的过滤实现包括正则表达式,el表达式,
example
该项目是各种使用场景的示例代码,帮助我们快速上手使用canal。目前主要包含单机模式和集群模式的两种使用场景的示例代码。

607

被折叠的 条评论
为什么被折叠?



