canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。

原理:
- canal-server zk 进行多节点高可用部署
- 可以多节点监听cancal-server ,实现高可用
- 多个canal针对同一个数据变动消息不会重复处理
- canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议(吧自己伪装成Mysql主库的备份机,监听binlog日志,进行数据同步).
- mysql master收到dump请求,开始推送binary log给slave(也就是canal)
- canal解析binary log对象(原始为byte流)
广告缓存更新(数据监控微服务实现)
当用户执行数据库的操作的时候,binlog 日志会被canal捕获到,并解析出数据。我们就可以将解析出 来的数据进行相应的逻辑处理。
我们这里使用的一个开源的项目,它实现了springboot与canal的集成。比原生的canal更加优雅。
https://github.com/chenqian56131/spring-boot-starter-canal
使用前需要将starter-canal安装到本地仓库。
我们可以参照它提供的canal-test,进行代码实现。
进行微服务搭建
- 1.先导入依赖
<dependency>
<groupId>com.xpand</groupId>
<artifactId>starter-canal</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency> - 2.创建启动类,在启动类上加注解@EnableCanalClient //声明当前的服务是canal的客户端
-
3.添加配置文件:application.properties
mysql2.png
mysql2.png
网友评论