Loading

canal脚手架 优雅的清理缓存

canal

canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

canal 工作原理

  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
  • MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  • canal 解析 binary log 对象(原始为 byte 流)

用途

官网中给出的用途:

  • 数据库镜像
  • 数据库实时备份
  • 索引构建和实时维护(拆分异构索引、倒排索引等)
  • 业务 cache 刷新
  • 带业务逻辑的增量数据处理

使用canal主要是在项目中有大量的缓存,例如商品信息,在B端和M端都可以对商品信息进行修改,而修改后需要对商品信息缓存进行删除,同时可能需要新压入商品信息。

问题

canal并没有提供Spring Boot的整合,但是好在官方给出的有示例,并且上手简单。这里进行以下简单的整合,方便使用Spring Boot的一些组件。

项目地址

GitHub

使用方式

配置application.properties即可,对于需要监控多个destination需要配置CanalConfig,需要自定义连接属性等继承AbstractCanalExecutor即可,需要处理业务逻辑继承EntryHandler即可

TODO

在处理业务逻辑时,还是Column对象,后期需要改成表对应的实体(🕊)

posted @ 2020-08-04 16:17  ingxx  阅读(668)  评论(1编辑  收藏  举报