Canal架构
Caner Server
一个Caner Server就代表一个canal运行实例,其对应于一个jvm
一个Caner Server同时对应着n个instance
一个instance对应着一个Mysql实例
Instance组成
一个instance由 EventParser eventSink eventStore MetaManager 这几部分组成
eventParser
数据源接入,模拟slave协议和master进行交互,协议解析,对应的解析过程为:
1: Connection获取上一次解析成功的位置 (如果第一次启动,则获取初始指定的位置或者是当前数据库的binlog位点)
2: Connection建立链接,发送BINLOG_DUMP指令
3: Mysql开始推送Binaly Log
4: 接收到的Binaly Log的通过Binlog parser进行协议解析,补充一些特定信息
5: 传递给EventSink模块进行数据存储,是一个阻塞操作,直到存储成功
6: 存储成功后,定时记录Binaly Log位置
eventSink
Parser和Store链接器,进行数据过滤,加工,分发的工作
具体可分为:
数据过滤:支持通配符的过滤模式,表名、字段内容等
数据路由/分发:解决1:n (1个parser对应多个store的模式)
数据归并:解决n:1 (多个parser对应1个store)
数据加工:在进入store之前进行额外的处理,比如join
eventStore
1.Memory内存
2.本地file存储
3.持久化到zookeeper以保障数据集群共享</