概述
4.3 心跳任务
消费者拉取数据是在拉取器中完成的,发送心跳是在消费者的协调者上完成的,但并不是说拉取器和消费者的协调者就没有关联关系。“消费者的协调者”的作用是确保客户端的消费者和服务端的协调者之间的正常通信,如果消费者没有连接上协调者(比如协调者认为消费者挂了,或者消费者认为协调者挂了),那么拉取器的拉取工作以及后续的消息消费等工作就都无法正常进行。
每个消费者都需要定时地向协调者发送心跳,以表明向己是存活的。如果消费者一段时间内没有发送心跳,协调者就会认为消费者挂掉了。协调者还要能够对消费组成员失败进行处理,比如将失败消费者拥有的分区分配给其他消费者消费。心跳通常会作为分布式系统的健康检查状况手段,通过让每个节点都定时上报心跳信息、给某个中心节点,如果一段时间没有收到某个节点的心跳,中心节点就认为那个节点挂掉了。
4.3.1 发送心跳请求
客户端发送心跳请求采用“组合加适配器”模式,由于组合模式的返回值是新创建的异步请求,还可以在返回的异步请求上再添加一个监昕器。客户端发送心跳请求并处理心跳响应的伪代码如下:
消费者发送心跳和“定时提交偏移量”都会与服务端的协调者节点进行通信。这两个不同的请求对应不同的客户端响应,Coordi.natorResponseHandler类将解析客户端响应(对应parse()方法)和处理客户端响应(对应handle()方法)进行了抽象。相关代码如下:
客户端发送“获取分区偏移盘”返回的异步请求结果是Long,而发送心跳请求并不需要保存响应结果,所以异步请求的泛型类型为Voi.d,调用异步请求的complete()方法传入的值是null。
最后
以上就是壮观豆芽为你收集整理的4.3.1 发送心跳请求的全部内容,希望文章能够帮你解决4.3.1 发送心跳请求所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复