canal 订阅 mysql binlog

业务场景 :

多系统之间 数据同步、共享、并根据mysql 事物 要求 kafka 消费者也具有事务特性

解决方案:

canal 订阅 mysql binlog 发送到kafka ,业务线充当消费者 去消费不同的数据

遇到的问题

canal 订阅binlog 时 生产到kafka 的数据是多个分区 导致 消费者处理的事务和mysql 不一致

问题原因

	kafka存在多个分区导致 mysql 一个事务 分发到了 多个分区 导致了mysql 一个事务 consumer 消费多次

解决方案

将canal 订阅到的数据发送到kafka 的一个 分区 ,但是这样造成一个问题 : 消费缓慢

优美解决方案

kafka 保持多个分区(3) consumer 在消费时 保持数据格式不变 。比如 mysql 在一个事务中更新了10条记录 这10 条记录 可能的分配方式 : p1 3条记录 ,p2 3条记录 ,p3 4条记录 ,在不影响消费者业务的前提下 保证 这3次的消费数据格式一致

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值