MST

星途 面试题库

面试题:消息队列RocketMQ负载均衡策略之高级难度题

假设RocketMQ集群中有多个Broker,消费者采用平均分配的负载均衡策略,当一个Broker突然宕机时,消费者端是如何重新进行负载均衡的?请详细说明其流程及涉及到的关键机制。
17.3万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试
  1. 消费者感知Broker宕机
    • 消费者通过心跳机制与Broker保持连接。当Broker宕机时,心跳检测会失败,消费者会感知到Broker失联。
  2. 负载均衡触发
    • 消费者端的负载均衡逻辑被触发。由于采用平均分配策略,消费者会重新计算分配方案。
  3. 重新分配Topic队列
    • 消费者获取当前存活的Broker列表以及它们所管理的Topic队列信息。
    • 以消费者数量C和剩余Broker管理的Topic队列总数Q为基础。计算每个消费者大致应分配的队列数q = Q / C(向下取整),剩余队列r = Q % C
    • 从第一个消费者开始,依次分配q个队列,然后将剩余的r个队列依次分配给前r个消费者。
  4. 关键机制
    • 心跳机制:用于消费者与Broker间的连接检测,确保及时发现Broker宕机。
    • 负载均衡算法:平均分配策略保证在Broker宕机后,队列能相对均匀地重新分配到各消费者,维持消费的均衡性。
    • 元数据管理:消费者能获取最新的Broker和Topic队列元数据,以便准确重新分配。