5.3.5 消费组未稳定,原有消费者重新加入消费组

再来看另一种场景:其他消费者发送“加入组请求”先于第一个消费者发送“同步组请求”。协调者返回“加入组响应”给第一个消费者,并更改消费组状态为“等待同步”。第一个消费者收到“加入组响应”后,但还没完成分区分配的工作,就有新的消费者发送了“加入组请求”。这时候其实第一个消费者是不需要执行分区分配的,因为即使执行了,也只有它一个的,并不会包含新加入的第二个消费者。

如图5-10(上)所示,第一个消费者完成分区分配工作后,“同步组请求”的消费组分配结果只有第一个消费者的数据。此时,第一个消费者将分配结果发送给协调者,协调者是不会接受的。因为协调者已经处理了第二个消费者的“加入组请求”,消费组的状态被更改为“准备再平衡”。第二个消费者在这个状态下,会收到REBALANCE_IN_PROGRESS的错误码,井重新发送“加入组请求”。

如图5-10(下)所示,第一个消费者重新发送了“加入组请求”,协调者对第一个消费者重新发送的“加入组请求”,也会尝试完成第二个消费者创建的延迟操作。因为满足可以完成延迟操作的条件,所以协调者会再次将消费组状态改为“等待同步”,并返回“加入组响应”给两个消费者。后续协调者处理两个消费者的“同步组请求”,第二个消费者不是主消费者,只会设置消费者成员元数据中的回调方法。当第一个消费者执行完分区分配后,协调者处理第一个消费者的“同步组请求”,会同时返回“同步组响应”给两个消费者。

在5.3.4节中,消费组状态为“稳定”后,当有新消费者加入消费组,并将消费组状态更改为“准备再平衡”,原有的消费者是通过心跳的方式感知到要重新发送“加入组请求”。而这里,消费组状态还是“等待同步”,就有新消费者加入消费组,也更改消费组状态为“再平衡”。由于消费组状态未稳定,原有的消费者不会有心跳任务,所以协调者采用返回错误码的方式通知原有的消费者。即消费者在发送“同步组请求”时,如果消费组状态为“准备再平衡”,协调者会要求消费者重新发送“加入组请求”。相关代码如下:

消费者发送“加入组请求”如果收到有错误码的结果,会主动重新发送“加入组请求”给协调者。消费者在请求发送前调用一次onJoinPrepare(),在请求成功完成调用一次onJoinComplete()方法。这两个方法在消费者的一次再平衡操作中,即使发送了多次“加入组请求”,也都只会被调用一次。相关代码如下:

这一节主要分析了协调者在处理消费者的“加入组请求”时,使用一个“延迟操作”对象表示延迟返回“加入组响应”给消费者。延迟操作创建时,伴随着消费组状态从“稳定”转变为“准备再平衡”;延迟操作完成时,消费组状态会从“准备再平衡”转变为“等待同步”。另外,我们还分析了协调者处理不同消费者的“加入组请求”和“同步组请求”的两种案例,下面我们来分析消费组处理这两种请求的状态机实现。

5.3.5 消费组未稳定,原有消费者重新加入消费组相关推荐

  1. 5.3.4 消费组稳定后,原有消费者重新加入消费组

    5.3.4 消费组稳定后,原有消费者重新加入消费组 协调者在处理消费者发送的"加入组请求"和"同步组请求"时,都会依赖于消费组当前的状态进入不同的分支流程.假设 ...

  2. 2022中国可持续消费报告:近半数消费者将月度消费2-5成用于低碳产品 | 美通社头条...

    美通社消息:<2022中国可持续消费报告>正式发布.该报告是商道纵横与界面新闻第七年联合推出的调研报告. 低碳知多少 报告显示,近一年政府对"双碳"目标的宣传和普及效果 ...

  3. 消费者详解-消费消息(1)

    文章目录 消费者消费消息流程 Pull消费流程 1. 初始化消费者 2. 拉取topic的消息队列 3. 拉取消费位点 4. 根据消费位点消费消息 5. 保存消费进度 拉取消息-pullKernelI ...

  4. 问题:未清空磁盘被添加到磁盘组触发坏块

    导读:当我们生产系统中遇到ASM磁盘组容量快被耗尽时,添加磁盘扩容是处理该问题较为常用的手段之一,几乎每个专业的DBA都操作过.但是设想一下,如果添加到ASM磁盘组的磁盘没有提前被清空,会出现什么样的 ...

  5. 消费增速未反转:网购跌破15%辉煌不再 汽车降幅收窄

    来源:21世纪经济报道 本报记者 周慧 实习生 赵炜 北京报道 在欧洲生活多年的年轻女导演李女士刚回北京半年,她已经适应了线上预约按摩.刚过去的周末,她高兴的跟记者分享,她对国内线上服务行业生机勃勃的 ...

  6. 消费分级未改品质升级,网易考拉携手易观发布“品味生活”趋势

    当"消费分级"的话题炙手可热,大众间的区隔愈发因为消费趋势的不同而被凸显.近日,网易考拉携手权威第三方数据研究机构易观发布了<"品味生活"消费趋势报告&g ...

  7. 消费者协调器和组协调器(十二)

    消费者协调器和组协调器 了解了 Kafka 中消费者的分区分配策略之后是否会有这样的疑问:如果消费者客户端中配置了两个分配策略,那么以哪个为准呢?如果有多个消费者,彼此所配置的分配策略并不完全相同,那 ...

  8. python消费kafka逻辑处理导致cpu升高_Kafka 消费迟滞监控工具 Burrow

    Kafka 官方对于自身的 LAG 监控并没有太好的方法,虽然Kafka broker 自带有 kafka-topic.sh, kafka-consumer-groups.sh, kafka-cons ...

  9. 昨晚,我们的消费者居然停止消费kafka集群数据了

    以下文章来源方志朋的博客,回复"666"获面试宝典 图片来源:伪装者 来源 | https://juejin.im/post/6874957625998606344 笔者所在的是一 ...

最新文章

  1. unity中创建游戏场景_在Unity中创建Beat Em Up游戏
  2. 浏览器相关功能系统调用
  3. MySQL Client/Server Protocol
  4. Word的样式库在 选项卡中_2分钟学会在Word中制作田字格 米字格 书法练字再也不用买本子了...
  5. 小米手机ROOT操作
  6. python3GUI--微博图片爬取工具V1.5 By:PyQt5(附源码)
  7. python发送邮件发件人_在python电子邮件的from字段中添加发件人的名称
  8. linux查看多核cpu运行状态,Linux下查看多核CPU信息详解
  9. android导入音频格式,如何把音乐导入android手机?
  10. 多重共线性是如何影响回归模型的
  11. 12月第二个星期学习计划
  12. 【图像融合】基于matlab高分辨率全色图IHS图像融合(含评价指标)【含Matlab源码 2406期】
  13. QT设置窗口折叠效果QPropertyAnimation
  14. 安装包中-win32-x86_64是什么意思?
  15. cpa机考计算机功能限制破解,2018年注会机考系统答题辅助功能使用说明
  16. Windows应用程序控制内核简单例子(通讯)
  17. 宝塔搭建帝国网站迁移到旗鱼云梯平台方式
  18. ASDL的详细配置(图文)
  19. IDEA的安装及JDK环境配置(Java小白入门必备)
  20. 交巡警求全市距离MATLAB程序,交巡警服务平台的设置与调度数学建模论文_

热门文章

  1. 合肥python 技术培训
  2. SQuAD 2.0数据集json文件预览
  3. Android本地网络播放
  4. iOS 搜索功能实现
  5. XMind for linux
  6. 教程:编写 Transact-SQL 语句
  7. linux用cvs提交新文件夹,使用CVS进行项目开发管理
  8. 【无标题】Jquery入门
  9. 干货 | 一文完全理解AUC-ROC曲线
  10. 郭老师的道歉书(给力)