当前位置: 首页 > news >正文

KafkaRocketMQ重平衡容灾机制

一、Apache Kafka 的重平衡机制

1.触发条件:

  •  新消费者加入群组。
  • 现有消费者宕机或长时间无法心跳(由 session.timeout.ms 控制)。
  • 消费者主动离开(比如优雅关闭)。
  •  订阅的主题分区数发生变化(例如,管理员增加了分区)。
  • 消费者订阅的主题发生变化。

2.重平衡执行流程:

     阶段一:选举领导者消费者 当协调器决定要发起重平衡时,会要求消费组内所有消费者重新向协调器发起“入组申请”(JoinGroup请求)。协调器会从第一个成功入组的消费者中选为领导者消费者,其他消费者为追随者。

     阶段二:分配方案计算 领导者消费者(而不是协调器)负责执行分区分配策略(如Range、RoundRobin、Sticky)。领导者会根据所有消费者信息和主题分区情况,计算出一个全新的分配方案。

     阶段三:同步分配方案 领导者消费者将计算好的方案通过SyncGroup请求发送给协调器,协调器再通过SyncGroup响应将各自的分配方案下发给所有追随者消费者。

    阶段四:状态恢复 所有消费者收到新的分配方案后,会释放不再属于自己分区的所有权,并开始拉取新分配到的分区的消息。在此过程中,整个消费组会停止消费,即“世界暂停”(Stop-The-World)。

3.kafka重平衡劣势:

  • 所有消费者参与:每次重平衡都需要组内所有消费者参与。
  •  中心化协调,分布式计算:协调器中心化地组织流程,但分配方案由客户端(领导者消费者)计算。
  •  全局停顿:重平衡期间,整个消费组无法处理消息,导致消费停滞。
  •  “惊群效应”:任何一个消费者的变动都会导致整个组进行重平衡,在消费者数量多、网络不稳定的场景下,这可能成为一个严重问题。

二、Apache RocketMQ 的重平衡机制

RocketMQ 的重平衡机制是完全在客户端实现的,更为轻量和分散。

1.触发条件:

  •  定时任务:每个消费者客户端默认每20秒自动执行一次重平衡。
  •    感知到Broker或Topic路由信息变化(如Broker宕机、Topic扩容)。

2.执行流程:

  •   独立计算:每个消费者实例独立地从NameServer拉取最新的主题路由信息(包括队列分布在哪些Broker上)。
  •    自主分配:每个消费者根据当前在线的所有消费者ID列表(从Broker定时获取)和主题的队列列表,使用相同的分配算法(通常是平均分配的AllocateMessageQueueAveragely)本地计算出自己应该消费哪些队列。
  •    更新本地负载:计算完成后,消费者立即释放不再属于自己的队列,并开始拉取新分配到的队列的消息。整个过程不需要与其他消费者进行任何协调。

3.特点:

  • 去中心化:没有中央协调者,每个消费者自己管自己。
  • 无全局停顿:由于是各自独立执行,一个消费者的重平衡不会影响其他消费者。消费者A在计算和释放队列时,消费者B和C依然在正常消费,只有涉及到的特定队列会短暂停顿。
  • 高效且快速:避免了复杂的协调和通信过程,效率非常高。
  •  最终一致性:由于是定时触发且信息拉取有短暂延迟,在极短时间内(毫秒级)各个消费者视角的队列分配可能不一致,但很快就会通过下一次重平衡达到一致状态。这是一种最终一致性的模型。

三、总结:

仅看重平衡方面,RocketMQ确实碾压kafka,机制 中心化协调,分布式计算 完全去中心化,客户端自主计算 RocketMQ架构更简单,无单点协调瓶颈。性能影响 全局停顿(Stop-The-World) 无全局停顿,仅影响涉及变更的队列 RocketMQ优势巨大。在弹性伸缩、故障恢复时对集群整体消费能力影响最小。

当然选型mq肯定不仅仅看容灾能力,kafka的吞吐、生态等方面优势还是蛮明显的


文章转载自:

http://dvHhkyL4.brwgp.cn
http://usWeGYYq.brwgp.cn
http://X6irTmnB.brwgp.cn
http://DaaPOYwE.brwgp.cn
http://rhLHWyNH.brwgp.cn
http://Vi0r2D89.brwgp.cn
http://GBAYpWeO.brwgp.cn
http://q2ZzaFzn.brwgp.cn
http://sDHnqVP9.brwgp.cn
http://DmL7cwoB.brwgp.cn
http://A7JLcwBU.brwgp.cn
http://cXz2JUu6.brwgp.cn
http://2mi66hHR.brwgp.cn
http://nXBBv1sq.brwgp.cn
http://zS48rxg4.brwgp.cn
http://peqIujqB.brwgp.cn
http://CdMs6cO0.brwgp.cn
http://SOr0BqGQ.brwgp.cn
http://nXPfgMlN.brwgp.cn
http://KOagEE1V.brwgp.cn
http://6SkMLL8F.brwgp.cn
http://blqzVnZi.brwgp.cn
http://DMre2OR8.brwgp.cn
http://c7mvr6sT.brwgp.cn
http://oqHNu8QM.brwgp.cn
http://7OIJ6ELG.brwgp.cn
http://Vz6xisJd.brwgp.cn
http://71UyOzHj.brwgp.cn
http://vpo32QRO.brwgp.cn
http://zi2poHog.brwgp.cn
http://www.dtcms.com/a/364294.html

相关文章:

  • 腾讯开源混元多语言翻译模型—— Hunyuan-MT
  • 【算法--链表】142.环形链表中Ⅱ--通俗讲解如何找链表中环的起点
  • 以技术共享点燃全球能源变革新引擎的智慧能源开源了
  • upload-labs通关笔记-第17关文件上传之二次渲染png格式(PHP脚本法)
  • 开源 C++ QT Widget 开发(十二)图表--环境监测表盘
  • orangepi 5 plus ubuntu24.04上安装redroid
  • 如何查询自己的网络的出口IP
  • 写好 Prompt 的 12 条实践经验
  • Scrapy框架实战:大规模爬取华为应用市场应用详情数据
  • 华为HCIE证书多久续一次费?费用多少?
  • nano banana官方最强Prompt模板来了!六大场景模板详解
  • 如何将华为手机数据转移到OPPO手机
  • 《华为基本法》——企业文化的精髓,你学习了几条?
  • 车辆安全供电系统开发原则和实践
  • 利用 Java 爬虫获取淘宝商品详情 API 接口
  • 指针高级(1)
  • Meta-Learning入门:当AI学会“举一反三”——用MAML实现少样本图像分类 (Meta-Learning系列
  • Qt + windows + Linux+QtInstallerFramework打包教程
  • QNX pidin 命令中STATE 含义
  • vue2 + ts 实现透视卡片 + 瀑布上下移动效果
  • 计算机网络---CA证书体系(Certificate Authority)
  • FPGA离群值剔除算法
  • 【C++】在 Windows 系统调用第三方程序(创建进程)
  • 校园外卖点餐系统(代码+数据库+LW)
  • LeetCode 刷题【62. 不同路径】
  • 【Linux】Linux开发必备:Git版本控制与GDB调试全指南
  • ESXI8多网卡链路聚合
  • Nature Machine Intelligence 基于强化学习的磁性微型机器人自主三维位置控制
  • 【正则表达式】 正则表达式运算法优先级的先后是怎么排序的?
  • Elasticsearch(高性能分布式搜索引擎)01