SpringCloud-Demo icon indicating copy to clipboard operation
SpringCloud-Demo copied to clipboard

DisruptorProducer使用并行写入缓冲,binlog数据如何保证有序

Open yukai3804 opened this issue 5 years ago • 3 comments

image

yukai3804 avatar Nov 28 '19 07:11 yukai3804

1.并行的情况下,这个有序性确实很难保障,我们的场景是做缓存和ES,所以当时没有将有序性考虑进去,如果你们的业务需要保证有序性建议就是上MQ,canal也支持MQ。 2.这里的采用的是异步,也就是达到快速消化binlog日志的目的,此外disruptor是个循环队列,如果消费者不及时也会覆盖原有的内容,如果disruptor设置过大也会很容易导致OOM。 3.我们当前的架构已经更换成MQ:Canal client -> Mq(Mongdb) ->业务处理(Redis、ES等) ,这样既可以做有序性的保证,也可以做可靠性性保证

Xlinlin avatar Nov 28 '19 08:11 Xlinlin

新的架构有开源吗

------------------ 原始邮件 ------------------ 发件人: "Linlin xiao"<[email protected]>; 发送时间: 2019年11月28日(星期四) 下午4:25 收件人: "Xlinlin/SpringCloud-Demo"<[email protected]>; 抄送: "余凯"<[email protected]>;"Author"<[email protected]>; 主题: Re: [Xlinlin/SpringCloud-Demo] DisruptorProducer使用并行写入缓冲,binlog数据如何保证有序 (#5)

1.并行的情况下,这个有序性确实很难保障,我们的场景是做缓存和ES,所以当时没有将有序性考虑进去,如果你们的业务需要保证有序性建议就是上MQ,canal也支持MQ。 2.这里的采用的是异步,也就是达到快速消化binlog日志的目的,此外disruptor是个循环队列,如果消费者不及时也会覆盖原有的内容,如果disruptor设置过大也会很容易导致OOM。 3.我们当前的架构已经更换成MQ:Canal client -> Mq(Mongdb) ->业务处理(Redis、ES等) ,这样既可以做有序性的保证,也可以做可靠性性保证

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

yukai3804 avatar Nov 28 '19 08:11 yukai3804

这个核心原理思路是这样走的,现有的架构加入了MQ变得了复杂很多,而且定制化比较高。只要明白核心思路,其他的都是依据自身业务来扩展的。

Xlinlin avatar Nov 28 '19 08:11 Xlinlin