文章目录生成背景动作原理Canal的框架
生成背景
早期,阿里巴巴B2B公司由于有杭州和美国的双室布局,机房之间存在同步的业务需求。 不过,初期的数据库同步业务主要基于trigger方式获取增量变更,从2010年开始,阿里系公司逐渐尝试基于数据库的日志分析,获取增量变更并进行同步,由此衍生出增量订阅消费业务
ps .当前内部版本支持mysql和oracle的某些版本的日志分析,当前canal开源版本支持5.7或更低版本。 (在蚂蚁构建中,为mysql 5.5.18、5.6.10、mysql 5.5.18、5.1.40/48 )。
工作原理
1.canal模拟mysql slave的交互协议,将自己伪装为mysql slave向mysql master发送dump协议
2.mysql master接收dump请求,并开始将binary log推送到slave (即canal )
3.canal分析binary log对象(原为byte流)
4.canal将分析后的binary log通过特性格式的信息推送至Kafka进行下游消费
呼叫体系结构
说明
server表示对应于jvm的canal执行实例
实例对应一个数据队列(一个服务器对应1…n个实例) )。
实例模块
eventParser (访问数据源、伪slave协议与master的交互、协议分析) ) ) ) ) ) ) ) ) ) )。
事件链接(parser和Store链接器,过滤、加工和分发数据的任务) )。
事件存储(数据存储)
metaManager (消费者信息管理器增量订阅) ) ) ) ) )。