个人随笔
目录
20240606架构学习:巧用阿里Canal实现MySQL异构数据同步
2024-06-06 22:32:10

什么是异构数据

比如MYSQL和ElasticSearch 之间要同步数据

正常做法

团队A在Java代码中新增MYSQL数据时向调用团队B同步接口新建ES商品数据

这种方案的不足是团队A和团队B的协作产生代码强耦合,团队A必须了解团队B提供的接口才可以实现,但本身这并不属于团队A的工作范畴。

扩展困难,假设团队C的数据库是MongoDB也要这份数据,那么团队A是不是又要改代码跟C对接。

那怎么保证数据做到准实时同步,还要团队直接解耦,团队A不再背锅呢?

Canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持两颗MySQL(也支持MariaDB).
Canal简单来说就是假装自己是一个从库来获取主库的数据同步。

通过Canal解决了数据监听的问题,但是没有解决解耦的问题,还需要引入一个MQ.Canal监听到数据变化后,直接将消息登记到MQ中,团队B和团队C去订阅即可。

话说,这跟团队A直接手动把变化放到消息队列有啥太大区别?好像都差不多。唯一的好处可能就是数据的处理都是Canal来解决,而不用团队A写代码进行消息登记。

 11

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2