RocketMQ的producer负载均衡如何实现的?

提问者:帅平 问题分类:面试刷题
RocketMQ的producer负载均衡如何实现的?
1 个回答
ε小可爱з
ε小可爱з
Producer端在发送消息的时候,会先根据Topic找到指定的TopicPublishInfo,在获取了TopicPublishInfo路由信息后,RocketMQ的客户端在默认方式下selectOneMessageQueue()方法会从TopicPublishInfo中的messageQueueList中选择一个队列(MessageQueue)进行发送消息。具这里有一个sendLatencyFaultEnable开关变量,如果开启在随机递增取模的基础上,再过滤掉not available的Broker代理。
所谓的"latencyFaultTolerance",是指对之前失败的,按一定的时间做退避。例如,如果上次请求的latency超过550Lms,就退避3000Lms;超过1000L,就退避60000L;如果关闭,采用随机递增取模的方式选择一个队列(MessageQueue)来发送消息,latencyFaultTolerance机制是实现消息发送高可用的核心关键所在。
所以综上所诉,producer的均在均衡是:索引递增随机取模。
发布于:4周前 (08-21) IP属地:四川省
我来回答