SpringBoot使用canal实现数据同步增量
作者:互联网
canal简介
canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。
canal 就是一个同步增量数据的一个工具。
canal应用场景
基于日志增量订阅和消费的业务包括
- 数据库镜像
- 数据库实时备份
- 索引构建和实时维护(拆分异构索引、倒排索引等)
- 业务 cache 刷新
- 带业务逻辑的增量数据处理
当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x
- 将用户的订单信息传入后台。
- 后台服务器将订单信息保存到mysql数据库。
- 由 canal 进行监控mysql中的写操作变化,将发生修改(Insert) 的数据写入到kafka
- 通过sparkStreaming读取Kafka中的数据,进行计算。
- 将计算好的结果,重新写如到服务器中,并返回到浏览器
canal 除了写入kafka 还能将数据写入到其他中间件(mysql、elasticsearch、hbase等)
canal工作原理
MySQL主备复制原理:
- MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)
- MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
- MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据
canal 工作原理
- canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议
- MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
- canal 解析 binary log 对象(原始为 byte 流)
canal 就像是一名"间谍",它伪装成了一个从机(slave),从主机(master)中骗取数据。拿到数据之后,再对数据进行解析,比如·只要新增的数据或者删除或修改的数据,并将数据重新进行包装,将数据重新写入到第三方服务中(mysql、Kafka、es等)。
SpringBoot使用canal
标签:canal,slave,log,增量,master,MySQL,数据,SpringBoot 来源: https://www.cnblogs.com/xfeiyun/p/16217666.html