引入背景原理:业务情景
其中,MySQL与ES存储的数据结构是完全不同的,也即异构数据(异构数据指的结构不同的数据)。异构数据也会伴随着组织与结构的不同,比如前台与后台的划分。如果商户中新增数据,传统的做法一般就是在Java代码中新增MySQL数据时向调用团队B同步接口新建ES商品数据,这里往往涉及到多团队协作。这时,工作中会产生强烈的耦合现象。团队A与团队B的协作产生代码的强耦合。团队A必须了解团队B提供的结构才可以实现,但本身这并不属于团队A的工作范畴。同时,会有扩展困难的问题。比如团队C维护的MongoDB也要同步MySQL数据库,难道团队A又要改代码?
引出目标:要保证数据做到准实时同步,还要团队之间解耦,团队A不再背锅
Canal是阿里巴巴旗下的一款开源的项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅与消费,目前主要支持了MySQL,也支持mariaDB。
canal的简单原理:
引入主从复制:
canal的工作原理:
从库用阿里的canal中间件进行替换
通过Canal解决了数据监听的问题,下面要解决解耦的问题
引入消息队列
MQ消息队列的职责是消息的订阅与发布
参考资料:
B站传送
Canal框架应用的基础学习
最新推荐文章于 2023-07-04 19:02:43 发布