尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

2.广播消费模式下一个队列同时多个客户端消费,offset 提交会错乱么?

2.广播消费模式下一个队列同时多个客户端消费,offset 提交会错乱么? 2.广播消费模式下一个队列同时多个客户端消费offset 提交会错乱么?广播消费并不会出现 offset 错乱根本原因两种模式 Offset 的存储模型完全不同。1、集群消费Cluster为什么必须限制一个 Queue 同一时间只能一个消费者消费集群消费✅Offset 存在 Broker同一个消费组共享一份【groupqueue】的 offset假设放开限制允许多个消费者同时消费同一个 Queue消费者 A 消费到 offset100提交到 Broker → 位点更新为 100消费者 B 同时消费到 offset90提交到 Broker → 位点被回退到 90 offset 互相覆盖、错乱、消息重复 / 无限循环消费所以 RocketMQ 用「队列独占分配」来规避这个冲突。一句话集群模式共享 offset→ 不能多实例同时消费同一个队列。2、广播消费Broadcast如何规避这个问题广播模式设计上直接换了一套方案✅Offset 不保存在 Broker每个消费者实例独立把 offset 写到【本地磁盘文件】路径~/.rocketmq_offsets/clientId/groupName/offsets.json关键点消费者 A 的 offset 和 消费者 B 的 offset 互相隔离互不感知、互不覆盖A 更新自己本地文件B 更新自己本地文件大家不需要争抢同一个位点不需要 Broker 统一维护消费进度自然不存在 offset 互相覆盖错乱的问题所以广播模式允许同一个队列同时被组内所有消费者消费。3、一张对比表把逻辑打通表格模式Offset 存储位置同组消费者 offset 关系是否允许多实例同时消费同一个 Queue约束来源集群消费Broker 远端共享同一份 offset❌ 禁止会 offset 互相覆盖错乱Rebalance 队列独占分配广播消费客户端本地文件每个实例独立 offset互不干扰✅ 允许无队列分配全部实例消费全部队列
返回列表