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

Posted 长城守卫队长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于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.存在消息积压可能

 

以上是关于基于canal实现es写入方案:实现搜索服务与链路服务解耦的主要内容,如果未能解决你的问题,请参考以下文章

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

Canal实现Mysql和ES数据同步

canal实现同步mysql至es

docker环境安装mysqlcanalelasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中

97 基于Binlog实现MySQL与Redis数据一致性问题

Canal+Kafka实现MySql与Redis数据一致性