canal原理解析

本文深入探讨了Canal的工作原理,包括它如何伪装成MySQL的从库,从MySQL主库接收二进制日志,解析并存储在内存中,以及Canal Server和Client之间的交互。Canal的整体架构由instance、eventParser、eventSink、eventStore等组件构成,用于数据接入、过滤、存储和分发。此外,文章还讨论了server和client的集群关系,以及不同Spring配置文件的区别,强调了数据存储在内存中的环形队列eventStore中的实现。
摘要由CSDN通过智能技术生成

目录

1原理

2.整体架构

2.重点解释

     2.1 instance

     2.2 server,client 集群关系和原理

     2.3 spring配置文件区别

    2.4 数据存储eventStore


 


上文已经介绍过canal的基本安装和使用,现在来看看canal的实现原理吧。

 

1原理

 首先看一张图,这是canal官网上的mysql master-slave原理图。canal就是将自己伪装成slave,所以原理类似。

1.Mysql-master 将数据变更保存到 二进制日志Binary log中。

2.canal将自己伪装成Mysql的一台备机,向MySQL master 发送dump 协议。

3.Mysql-master 将二进制日志发送给canal。

4.canal-server将变二进制日志进行解析,同时写入本地内存中。

5.canal-client 向canal-server申请读取相应的增量数据,读取到数据后进行操作(发送ES,发送kafka消费等)。

6.canal-client 消费完成后,向canal-server 发送ack 确认消费请求。

7.canal-server 收到ack确认消费请求后,将已经消费的数据从内存中移除。

 

2.整体架构

     上图是一个独立部署的deploy canal-server.  存在2个instance分别监控2个不同的DB.有2个不同的canal-client对canal-server进行订阅。client和server通过protocol协议进行数据传输。

2.重点解释

     2.1 instance

                 instance既实例,每一个instance都会对应一条配置规则 比如:test1实例监控192.168.1.3:3306 ,test2实例监控192.168.1.4:3306 .等于一个instance就会模拟成一个Mysql-slave。核心接口:CanalInstance

                 每个实例都会将读取到的binary log 解析并写入内存中。供客户端消费,都是单独维护自己的环形队列。

                 一个instance包含以下模块:

                 eventParser:数据接入,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值