8. Consumer 负载均衡策略

负载均衡策略 AllocateMessageQueueStrategy 提供了6种实现

AllocateMessageQueueAveragely(平均分配默认)

当消费者数量大于生产者数量

image

当生产者数量大于消费者数量

image

AllocateMessageQueueAveragelyByCircle(轮询分配)

当消费者数量大于生产者数量

image

当生产者数量大于消费者

image

AllocateMessageQueueConsistentHash(一致性哈希)

每次负载都会重新创建一致性hash路由表,获取本地客户端负责的所有队列信息。RocketMQ默认的hash算法为MD5。

假设有4个客户端的clientId和两个消息队列mq1,mq2,,通过hash后分布在hash环的不同位置,按照一致性hash的顺时针查找原则,mq1被client2消费,mq2被client3消费。

image

AllocateMachineRoomNearby(同机房分配策略)

同机房分配策略,保证broker中的消息优先被同机房的消费者消费,如果没有消费者,则由其他机房消费者消费。 设有三个机房,机房1和机房3中存在消费者,机房2没有消费者。机房1、机房3中的队列会分配给机房2各自的消费者,机房2的队列会被所有的消费者平均分配

image

AllocateMessageQueueByConfig(配置消费)

在客户端直接配置可消费的messageQueueList,指定规定的消息队列

AllocateMessageQueueByMachineRoom(机房分配)

你可能感兴趣的:(MQ学习笔记)