Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步(一)

love374
发布于 2022-7-11 11:47
浏览
0收藏

 

大家好,我是不才陈某~

 

数据同步一直是一个令人头疼的问题。在业务量小,场景不多,数据量不大的情况下我们可能会选择在项目中直接写一些定时任务手动处理数据,例如从多个表将数据查出来,再汇总处理,再插入到相应的地方。

 

但是随着业务量增大,数据量变多以及各种复杂场景下的分库分表的实现,使数据同步变得越来越困难。

 

今天这篇文章使用阿里开源的中间件Canal解决数据增量同步的痛点。

 

文章目录如下:

 Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步(一)-鸿蒙开发者社区
Canal是什么?
canal译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

 

从这句话理解到了什么?

 

基于MySQL,并且通过MySQL日志进行的增量解析,这也就意味着对原有的业务代码完全是无侵入性的。

“工作原理:解析MySQL的binlog日志,提供增量数据。”


基于日志增量订阅和消费的业务包括

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


当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。

“官方文档:https://github.com/alibaba/canal”


Canal数据如何传输?
先来一张官方图:

 Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步(一)-鸿蒙开发者社区
Canal分为服务端和客户端,这也是阿里常用的套路,比如前面讲到的注册中心Nacos:

  • 服务端:负责解析MySQL的binlog日志,传递增量数据给客户端或者消息中间件
  • 客户端:负责解析服务端传过来的数据,然后定制自己的业务处理。


目前为止支持的消息中间件很全面了,比如Kafka、RocketMQ,RabbitMQ。

 

数据同步还有其他中间件吗?
有,当然有,还有一些开源的中间件也是相当不错的,比如Bifrost。

 

常见的几款中间件的区别如下:

 Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步(一)-鸿蒙开发者社区
当然要我选择的话,首选阿里的中间件Canal。

 

文章转自公众号:码猿技术专栏

已于2022-7-11 11:47:15修改
收藏
回复
举报
回复
    相关推荐