基于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.架构图

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

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

3.系统落地

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

 

上一篇:canal监听不同服务器上的mysql数据库


下一篇:基于Docker结合Canal实现MySQL实时增量数据传输