itMySQL学习

kafka监听mysql实时数据变更

2019-08-03  本文已影响149人  雪飘千里

在做报表数据统计时,我们用的是mysql + kafka + Spark Streaming方案,
kafka监听mysql订单表中订单状态,然后发送到spark streaming中进行分析统计。
这里记录一下kafka监听mysql中数据变更方案

1、Kafka connect

image.png

具体官网文档www.confluent.io/.
https://docs.confluent.io/2.0.0/connect/connect-jdbc/docs/index.html#examples

2、canal

canal是阿里开源的中间件,纯Java开发,基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB),主要用于同步mysql数据库变更,是一个非常成熟的数据库同步方案。
https://github.com/alibaba/canal/

canal是通过模拟成为mysql 的slave的方式,监听mysql 的binlog日志来获取数据,binlog设置为row模式以后,不仅能获取到执行的每一个增删改的脚本,同时还能获取到修改前和修改后的数据,基于这个特性,canal就能高性能的获取到mysql数据数据的变更。

canal的部署主要分为server端和client端。
server端部署好以后,可以直接监听mysql binlog,因为server端是把自己模拟成了mysql slave,所以,只能接受数据,没有进行任何逻辑的处理,具体的逻辑处理,需要client端进行处理。
client端一般是需要大家进行简单的开发。https://github.com/alibaba/canal/wiki/ClientAPI 有一个简单的示例,很容易理解。

canal 1.1.1版本之后, 默认支持将canal server接收到的binlog数据直接投递到MQ(kafka,RocketMQ)
https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart

上一篇下一篇

猜你喜欢

热点阅读