canal数据监控(数据同步解决方案-操作ES做缓存)

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

原理:

  • canal-server zk 进行多节点高可用部署
  • 可以多节点监听cancal-server ,实现高可用
  • 多个canal针对同一个数据变动消息不会重复处理
    1. canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议(吧自己伪装成Mysql主库的备份机,监听binlog日志,进行数据同步).
    1. mysql master收到dump请求,开始推送binary log给slave(也就是canal)
    1. 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

这样就实现了简单的数据监控,并且将改动的信息发送到消息队列中.下面就开始消费者监控队列:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容