基于canal实现es写入方案:实现搜索服务与链路服务解耦

1.canal简介

canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。

原理相对比较简单:

  1. canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
  2. mysql master收到dump请求,开始推送binary log给slave(也就是canal)
  3. canal解析binary log对象(原始为byte流)

2.架构图

3.系统落地

由于canal 自带消息中间件:支持kafka RocketMq 两种消息队列,我们只需要让运维帮忙配置,你编写一段代码监听kafka消息,将数据写入es即可。

4:方案得优点&缺点

优点:

1.实现链路服务解耦

2.异步化

缺点:

1.增加运维成本

2.存在消息积压可能

 


版权声明:本文为weixin_37975684原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。