消息有序
全局有序
- 在整个MQ集群内,消息都是按照生产者的生产顺序存放,消费者也是按此顺序进行消费
- 优点:生产者不需要额外的处理,由MQ集群保证消息全局有序
- 缺点:牺牲了高可用、性能
为什么会牺牲高可用?
高可用MQ集群的常见部署
全局有序部署方案
为了保证MQ集群内消息有序,对于全局有序的topic,只会在一台broker机器上创建一个queue,而queue内的消息是保证有序的,这样生产者和消费都都只能按序消费
这种方案很明显的缺点就是当broker2机器挂了,《Topic-全局有序》相关的业务将无法写入和消费消息,并且由于一个queue只能由一个consumer实例消费(clustering模式下),所以性能也就可想而知的差了
反观TopicA,由于在broker1,broker2上都有创建queue,当其中一台broker不可用时,写入和消费将由另外一台broker的其他queue接管,所以对于TopicA来说实现高可用和高性能
部分有序
- 参见上图中的TopicA部署
- 消息在queue里是保证有序的
- 优点:高可用,性能好
- 缺点:
- 生产者需要在生产消息时做特殊处理
- 在可用queue数量变化情况下(例如broker1挂了),会导致短暂的消息乱序