4.3.5 心跳和协调者的关系

客户端调用心跳任务的reset()方法会创建第一个延迟任务,这个方法的调用链如下。

  • 确保协调者是已知的,即消费者客户端必须连接上管理消费组的协调者。
  • 确保消费组是活动的,即消费者必须分配到分区。

注意:上面两个调用的方法都定义在对应的请求回调处理器中,前者是“获取消费组的协调者”请求(GroupCoordi.natorRequest),后者是“加入消费组”请求(Joi.叫roupRequest)。消费者和协调者进行交互操作,必须确保消费者已经知道并且连接上协调者所在的节点,如果都没有连接上协调者,心跳等其他操作都不会正常进行。连接上协调者后,就可以立即向协调者发送一次心跳。另外,如果消费者需要重新加入消费组,在分配到分区后,也要重置心跳任务。

消费者发送心跳,正常来说应当只是通知一下服务端协调者而已。不过在分布式系统中,通信的双方可能都会存在一些问题,比如协调者可能会突然挂掉。这时服务端应该为每个消费组重新选择一个协调者,但如果此后消费者连接的还是原来的协调者就有问题了(它应该连接最新的协调者节点),
这种情况应该让消费者重新获取协调者。服务端如果能够在客户端定时发送的心跳任务中附带这种信息,客户端就能够及时知道应该再去找最新的协调者。消费者针对不同错误码的处理方式如下。

  • 协调者挂掉了,客户端设置“消费组的协调者”对象为空,消费者需要重新发送“获取消费组的协调者”请求获取新的协调者。
  • 协调者没有挂掉,客户端设置“需要重新加入组”变量为true,消费者需要向协调者重新发送“加入组请求”加入消费组。

相关代码如下:

心跳的响应处理中并不执行具体的错误处理操作,比如让客户端连接新的协调者或者让消费者重新加入消费组,心跳只是更新这些后续错误处理操作相关的条件变量。当客户端轮询时会监听到条件变量发生了变化,从而让轮询操作主动地执行对应的操作。这里可以把心跳看作任务通知,必须依赖客户端的轮询来确保能及时捕获到错误情况进行错误处理,不在心跳中处理任务是因为任务的操作时间可能比心跳间隔长得多。所以,客户端的轮询非常重要,它不仅仅驱动了数据的不断拉取,还可以根据心跳结果执行不同的任务。

心跳任务(HeartbeatTask)定义在抽象的协调者类(AbstractCoordi.nator)中。抽象的协调者有两种实现一一消费者的协调者、连接器的协调者,这两者都需要发送心跳给服务端的协调者节点,它们都有组的概念。后者是OIO版本新增的Kafka连接器,会在第8章分析。另外,消费者的协调者因为需要定时存储分区的消费进度,还有一个自动提交偏移量的定时任务。

4.3.5 心跳和协调者的关系相关推荐

  1. 基于计算机底层基础设计一个高性能的单机管理主机的心跳服务

    大家耐心看下去,你会发现原来计算机基础知识的用处,相信我,你会感触很深刻. 案例需求 ==== 后台通常是由多台服务器对外提供服务的,也就是所谓的集群. 如果集群中的某一台主机宕机了,我们必须要感知到 ...

  2. 5.4.7 延迟的心跳

    5.4.7 延迟的心跳 延迟操作有3个主要的方法:尝试完成方法(返回布尔值,表示是有可以完成).超时的回调方法.完成的回调方法.对于"延迟加入",尝试完成是判断消费组成员中是否还有 ...

  3. js心跳间隔怎么确定_神经网络分析时间序列:心跳间隔序列预测

    为什么研究心跳间隔序列 在算法自动识别心电图(ECG)这个领域,要解决形态识别和周期性识别两方面问题.形态识别就是从ECG信号的高低起伏中识别出PQRST特征点.但形态识别不能解决所有问题:当原始信号 ...

  4. 关于Kafka中的再均衡

    本文来说下Kafka中的再均衡 文章目录 概述 触发时机 协调者 交互方式 处理流程 本文小结 概述 在Kafka消费者的使用和原理中已经提到过"再均衡"的概念,我们先回顾下,一个 ...

  5. 学Kafka,就必须了解的再均衡问题!

    作者 | 草捏子 来源 | 草捏子(ID:chaycao) 头图 |  CSDN 下载自东方IC 在<Kafka消费者的使用和原理>中已经提到过"再均衡"的概念,我们先 ...

  6. 《我想进大厂》之kafka夺命连环11问

    干啥啥不行,看小说第一名.这不,好好写了一篇文章. 最近整理了一下文章目录,因为好早之前就有兄弟跟我说之前文章找不到,我也懒得整理,现在好好整了一下,发现有一篇文章写了一半我就放着了,抽空把他刚好补齐 ...

  7. Kafka必问面试题

    一.说说你对kafka的理解 kafka本身是一个流式处理平台,同时也具有消息系统得能力,在我们得系统中更多得是把kafka作为一个消息队列系统来使用 而如果来介绍kafka,大致可以分为这几块: k ...

  8. Kafka 实战指南——Kafka 消费者配置

    文章目录 1. 消费位点提交 2. 消费位点重置 3. session 超时和心跳监测 4. 拉取大消息 5. 拉取公网 6. 消息重复和消费幂等 7. 消费失败 8. 消费延迟 9. 消费阻塞以及堆 ...

  9. kafka rebalance故障的处理策略

    1. Rebalance 触发与通知 1.1. 触发条件 Rebalance 的触发条件有三种: 当 Consumer Group 组成员数量发生变化 新成员加入 组成员主动离开 组成员崩溃 消费者心 ...

  10. 聊聊 Kafka:如何避免消费组的 Rebalance

    一.前言 我们上一篇聊了 Rebalance 机制,相信你对消费组的重平衡有个整体的认识.这里再简单回顾一下,Rebalance 就是让一个 Consumer Group 下所有的 Consumer ...

最新文章

  1. spark mysql 驱动_spark读取mysql数据库的驱动问题
  2. UI培训技术分享:设计大神都在用的10种技法!
  3. HTTPS协议,SSL协议及完整交互过程
  4. node mysql登录注册_图解NodeJS实现登录注册功能
  5. Centos5.5安装使用Xen
  6. PHP文件系统-文件上传类
  7. ASP.NET Core 2.1 使用Docker运行
  8. python一只青蛙一次可以_40.细说递归之二:Python求解斐波那契数列
  9. jsweet-examples下载测试
  10. 【Linux】ubuntu锐捷客户端连接四川大学校园网
  11. zen brush 2 android,zen brush2
  12. Landsat 8 数据获取
  13. 世界各个地区WIFI 2.4G及5G信道一览表(附无线通信频率分配表)
  14. 主成分分析结果成分不显著_主成分分析结果
  15. 网站地图Sitemap怎么制作
  16. SpringBoot之九重九阳神功
  17. openstack controller ha测试环境搭建记录(二)——配置corosync和pacemaker
  18. 浅谈网络安全之内存取证
  19. 网站流量统计(免费的)
  20. 7-20 奥运排行榜

热门文章

  1. 如何用计算机算幂函数,怎样用计算器算幂指数
  2. 牡丹-洛阳牡丹:洛阳牡丹
  3. python修改表格居中_python修改表格居中_CSS样式更改——列表、表格和轮廓
  4. 一次Nginx 502问题解决
  5. 怎么裁剪PDF文件页面?一种方法轻松搞定
  6. 前台服务java.lang.SecurityException: Permission Denial: startForeground
  7. 华为RS技术认证,IA/IP/IE它们都要学什么?
  8. 数学建模之图论最短路径问题
  9. 104道精选iOS面试题PDF
  10. python爬虫和八爪鱼哪个快_python爬虫和八爪鱼哪个快