基于canal实现es写入方案:实现搜索服务与链路服务解耦
Posted 长城守卫队长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于canal实现es写入方案:实现搜索服务与链路服务解耦相关的知识,希望对你有一定的参考价值。
1.canal简介
canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql(也支持mariaDB)。
原理相对比较简单:
- canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
- mysql master收到dump请求,开始推送binary log给slave(也就是canal)
- canal解析binary log对象(原始为byte流)
2.架构图
3.系统落地
由于canal 自带消息中间件:支持kafka RocketMq 两种消息队列,我们只需要让运维帮忙配置,你编写一段代码监听kafka消息,将数据写入es即可。
4:方案得优点&缺点
优点:
1.实现链路服务解耦
2.异步化
缺点:
1.增加运维成本
2.存在消息积压可能
以上是关于基于canal实现es写入方案:实现搜索服务与链路服务解耦的主要内容,如果未能解决你的问题,请参考以下文章
docker环境安装mysqlcanalelasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中