开发者社区 > 云原生 > 云消息队列 > 正文

请问一下 rocket 新增队列会不会产生重平衡?

请问一下 rocket 新增队列会不会产生重平衡?

展开
收起
滴滴滴~ 2023-03-06 16:46:39 944 0
5 条回答
写回答
取消 提交回答
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    在 Apache RocketMQ 集群中新增队列不会引起消费者的重平衡,因为 RocketMQ 的消费者是以消费组为单位进行负载均衡的,而消费组是由多个消费者组成的,消费者之间会协调好消费哪些队列,新增队列并不会影响消费者的分配。但是,如果您使用了动态分配队列的功能,那么新增队列会触发动态分配队列的过程,可能会导致消费者重平衡。

    2023-03-07 08:49:07
    赞同 展开评论 打赏
  • 在RocketMQ中,新增队列会导致重平衡。 当新增队列时,Broker会通知NameServer更新Topic路由信息,然后Consumer会重新获取最新的Topic路由信息,进行重平衡。 因此,新增队列可能会导致Consumer重新分配消费者组内的消费者实例。

    2023-03-07 08:38:40
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。

    是的,在RocketMQ中新增或删除队列,或者修改Consumer端的Consumer数量等操作,都会引起Consumer端的重新负载,从而产生重平衡(Rebalance)。

    正常情况下,重平衡是RocketMQ自动进行的,当Consumer重新加入或者离开Consumer Group时,或者Topic的队列数发生变化时,会触发重平衡。重平衡过程包括以下几个主要步骤:

    • Consumer Group Leader 触发重平衡
    • Leader 将消费组的消费状态广播出去
    • 消费组所有消费者订阅最新的消费状态
    • 每个消费者尝试平衡消费队列
    • 平衡完毕后,消费者重新消费消息

    在重平衡期间,所有消费者会停止消费,并且所有消费进度信息都会失效,RocketMQ会重新分配队列给消费者。一般情况下,重平衡的时间较短,但如果消费者数量较多,重平衡的时间可能会稍长。

    因此,如果需要对RocketMQ的Topic队列数进行扩缩容等操作,需要注意到这些修改操作可能会引起Consumer端的重平衡,从而影响Consumer的正常消费和业务等相关操作。建议在操作前仔细评估和规划,以避免对服务和业务带来不必要的干扰和风险。

    2023-03-06 20:26:07
    赞同 展开评论 打赏
  • 如果队列有新增,需要运用消费队列重平衡机制进行重新分配

    2023-03-06 17:32:35
    赞同 展开评论 打赏
  • 会重新上报到NameServer,队列大小的变更,最好停止生产与消费,具体细节根据业务分析。 rebalance时重平衡消费者与队列的绑定关系,会有时间差。此答案整理自钉群“群2-Apache RocketMQ 中国”

    2023-03-06 16:51:29
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载