RocketMQ-消息有序实现方案

消息有序

全局有序

  1. 在整个MQ集群内,消息都是按照生产者的生产顺序存放,消费者也是按此顺序进行消费
  2. 优点:生产者不需要额外的处理,由MQ集群保证消息全局有序
  3. 缺点:牺牲了高可用、性能

为什么会牺牲高可用?

高可用MQ集群的常见部署

在这里插入图片描述

全局有序部署方案

在这里插入图片描述

  1. 为了保证MQ集群内消息有序,对于全局有序的topic,只会在一台broker机器上创建一个queue,而queue内的消息是保证有序的,这样生产者和消费都都只能按序消费

  2. 这种方案很明显的缺点就是当broker2机器挂了,《Topic-全局有序》相关的业务将无法写入和消费消息,并且由于一个queue只能由一个consumer实例消费(clustering模式下),所以性能也就可想而知的差了

  3. 反观TopicA,由于在broker1,broker2上都有创建queue,当其中一台broker不可用时,写入和消费将由另外一台broker的其他queue接管,所以对于TopicA来说实现高可用和高性能

部分有序

  1. 参见上图中的TopicA部署
  2. 消息在queue里是保证有序的
  3. 优点:高可用,性能好
  4. 缺点:
    1. 生产者需要在生产消息时做特殊处理
    2. 在可用queue数量变化情况下(例如broker1挂了),会导致短暂的消息乱序
生产者处理代码示例

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值