如何保证消息的顺序性?

举个栗子,一个mysql binlog同步的系统,压力还是非常大的,日同步数据要达到上亿。mysql→mysql,常见的一点在于数大数据team,就需要同步一个mysql库过来,对公司的业务系统的数据做各种复杂的操作。

我们在mysql里增删改一条数据,对应出来增删改3条binlog,接着这三条binlog发送到MQ里面,到消费出来一次执行起码的能保证是按照这个顺序执行的,不然机会错误。

rabbitmq:一个queue,多个consumer。

可能出现的位置错乱:

kafka:一个topic,一个partition,一个consumer,内部多线程。

可能出现的数据错乱:

下面我们通过以下这些方式保证消息的顺序:

(1)rabbitmq:拆分多个queue,每个queue一个consumer。或者就一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底部不同worker处理

(2)kafka:一个topic,一个partition,一个consumer,内部单线程消费,写N个内存queue,然后N个线程分别消费一个内存queue。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值