4.3.5 心跳和协调者的关系
4.3.5 心跳和协调者的关系
客户端调用心跳任务的reset()方法会创建第一个延迟任务,这个方法的调用链如下。
- 确保协调者是已知的,即消费者客户端必须连接上管理消费组的协调者。
- 确保消费组是活动的,即消费者必须分配到分区。
注意:上面两个调用的方法都定义在对应的请求回调处理器中,前者是“获取消费组的协调者”请求(GroupCoordi.natorRequest),后者是“加入消费组”请求(Joi.叫roupRequest)。消费者和协调者进行交互操作,必须确保消费者已经知道并且连接上协调者所在的节点,如果都没有连接上协调者,心跳等其他操作都不会正常进行。连接上协调者后,就可以立即向协调者发送一次心跳。另外,如果消费者需要重新加入消费组,在分配到分区后,也要重置心跳任务。
消费者发送心跳,正常来说应当只是通知一下服务端协调者而已。不过在分布式系统中,通信的双方可能都会存在一些问题,比如协调者可能会突然挂掉。这时服务端应该为每个消费组重新选择一个协调者,但如果此后消费者连接的还是原来的协调者就有问题了(它应该连接最新的协调者节点),
这种情况应该让消费者重新获取协调者。服务端如果能够在客户端定时发送的心跳任务中附带这种信息,客户端就能够及时知道应该再去找最新的协调者。消费者针对不同错误码的处理方式如下。
- 协调者挂掉了,客户端设置“消费组的协调者”对象为空,消费者需要重新发送“获取消费组的协调者”请求获取新的协调者。
- 协调者没有挂掉,客户端设置“需要重新加入组”变量为true,消费者需要向协调者重新发送“加入组请求”加入消费组。
相关代码如下:
心跳的响应处理中并不执行具体的错误处理操作,比如让客户端连接新的协调者或者让消费者重新加入消费组,心跳只是更新这些后续错误处理操作相关的条件变量。当客户端轮询时会监听到条件变量发生了变化,从而让轮询操作主动地执行对应的操作。这里可以把心跳看作任务通知,必须依赖客户端的轮询来确保能及时捕获到错误情况进行错误处理,不在心跳中处理任务是因为任务的操作时间可能比心跳间隔长得多。所以,客户端的轮询非常重要,它不仅仅驱动了数据的不断拉取,还可以根据心跳结果执行不同的任务。
心跳任务(HeartbeatTask)定义在抽象的协调者类(AbstractCoordi.nator)中。抽象的协调者有两种实现一一消费者的协调者、连接器的协调者,这两者都需要发送心跳给服务端的协调者节点,它们都有组的概念。后者是OIO版本新增的Kafka连接器,会在第8章分析。另外,消费者的协调者因为需要定时存储分区的消费进度,还有一个自动提交偏移量的定时任务。
4.3.5 心跳和协调者的关系相关推荐
- 基于计算机底层基础设计一个高性能的单机管理主机的心跳服务
大家耐心看下去,你会发现原来计算机基础知识的用处,相信我,你会感触很深刻. 案例需求 ==== 后台通常是由多台服务器对外提供服务的,也就是所谓的集群. 如果集群中的某一台主机宕机了,我们必须要感知到 ...
- 5.4.7 延迟的心跳
5.4.7 延迟的心跳 延迟操作有3个主要的方法:尝试完成方法(返回布尔值,表示是有可以完成).超时的回调方法.完成的回调方法.对于"延迟加入",尝试完成是判断消费组成员中是否还有 ...
- js心跳间隔怎么确定_神经网络分析时间序列:心跳间隔序列预测
为什么研究心跳间隔序列 在算法自动识别心电图(ECG)这个领域,要解决形态识别和周期性识别两方面问题.形态识别就是从ECG信号的高低起伏中识别出PQRST特征点.但形态识别不能解决所有问题:当原始信号 ...
- 关于Kafka中的再均衡
本文来说下Kafka中的再均衡 文章目录 概述 触发时机 协调者 交互方式 处理流程 本文小结 概述 在Kafka消费者的使用和原理中已经提到过"再均衡"的概念,我们先回顾下,一个 ...
- 学Kafka,就必须了解的再均衡问题!
作者 | 草捏子 来源 | 草捏子(ID:chaycao) 头图 | CSDN 下载自东方IC 在<Kafka消费者的使用和原理>中已经提到过"再均衡"的概念,我们先 ...
- 《我想进大厂》之kafka夺命连环11问
干啥啥不行,看小说第一名.这不,好好写了一篇文章. 最近整理了一下文章目录,因为好早之前就有兄弟跟我说之前文章找不到,我也懒得整理,现在好好整了一下,发现有一篇文章写了一半我就放着了,抽空把他刚好补齐 ...
- Kafka必问面试题
一.说说你对kafka的理解 kafka本身是一个流式处理平台,同时也具有消息系统得能力,在我们得系统中更多得是把kafka作为一个消息队列系统来使用 而如果来介绍kafka,大致可以分为这几块: k ...
- Kafka 实战指南——Kafka 消费者配置
文章目录 1. 消费位点提交 2. 消费位点重置 3. session 超时和心跳监测 4. 拉取大消息 5. 拉取公网 6. 消息重复和消费幂等 7. 消费失败 8. 消费延迟 9. 消费阻塞以及堆 ...
- kafka rebalance故障的处理策略
1. Rebalance 触发与通知 1.1. 触发条件 Rebalance 的触发条件有三种: 当 Consumer Group 组成员数量发生变化 新成员加入 组成员主动离开 组成员崩溃 消费者心 ...
- 聊聊 Kafka:如何避免消费组的 Rebalance
一.前言 我们上一篇聊了 Rebalance 机制,相信你对消费组的重平衡有个整体的认识.这里再简单回顾一下,Rebalance 就是让一个 Consumer Group 下所有的 Consumer ...
最新文章
- spark mysql 驱动_spark读取mysql数据库的驱动问题
- UI培训技术分享:设计大神都在用的10种技法!
- HTTPS协议,SSL协议及完整交互过程
- node mysql登录注册_图解NodeJS实现登录注册功能
- Centos5.5安装使用Xen
- PHP文件系统-文件上传类
- ASP.NET Core 2.1 使用Docker运行
- python一只青蛙一次可以_40.细说递归之二:Python求解斐波那契数列
- jsweet-examples下载测试
- 【Linux】ubuntu锐捷客户端连接四川大学校园网
- zen brush 2 android,zen brush2
- Landsat 8 数据获取
- 世界各个地区WIFI 2.4G及5G信道一览表(附无线通信频率分配表)
- 主成分分析结果成分不显著_主成分分析结果
- 网站地图Sitemap怎么制作
- SpringBoot之九重九阳神功
- openstack controller ha测试环境搭建记录(二)——配置corosync和pacemaker
- 浅谈网络安全之内存取证
- 网站流量统计(免费的)
- 7-20 奥运排行榜
热门文章
- 如何用计算机算幂函数,怎样用计算器算幂指数
- 牡丹-洛阳牡丹:洛阳牡丹
- python修改表格居中_python修改表格居中_CSS样式更改——列表、表格和轮廓
- 一次Nginx 502问题解决
- 怎么裁剪PDF文件页面?一种方法轻松搞定
- 前台服务java.lang.SecurityException: Permission Denial: startForeground
- 华为RS技术认证,IA/IP/IE它们都要学什么?
- 数学建模之图论最短路径问题
- 104道精选iOS面试题PDF
- python爬虫和八爪鱼哪个快_python爬虫和八爪鱼哪个快