三:Kafka消费者(2)

1.消费者拉取消息之前,一定要保证已经分配了分区,步骤如下:

   1)消费者向协调者申请加入消费组;

   2)服务端存在管理消费组的协调者,协调者将消费者加入消费组;

   3)触发消费组再平衡操作,协调者为所有消费者分配分区;

  4)消费者从协调者获得分配的分区;

  5)从协调获取偏移量,然后开始拉取分区的消息;

 

2.消费者执行再平衡和提交偏移量都是直接与协调者交互:

  1)每个消费者触发再平衡的时候,都和协调者联系,由协调者执行全局的分区分配;

  2)协调者分配完成后,将分区分配给每个消费者;

  3)每个消费者收到任务列表后,启动拉取钱程,拉取对应分区的消息,并更新拉取状态。

  4)消费者周期性提交分区的偏移量给协调者,协调者将分区偏移量写到内部主题。

 

3.协调者分配分区

  1)需要等待所有的消费者假如消费者之后,才能执行分区分配算法;

  2)消费者加入消费组的请求,得到的是异步对象;

 

4.消费消息

  1.超时;

  2.多次异步拉取消息;

  3.为防止消息处理不及时,超时导致协调者误以为消费者挂掉,设置拉取大小阈值

  4.上一次拉取没处理完成,不处理下一次的;

 

5.消费者的心跳任务

   消费者的协调者通过发送心跳任务,来确保客户端的消费者和服务端的协调者之间的正常通信;

   1)消费者发送心跳任务的时候,并为返回的异步请求,添加一个监听器;

   2)心跳任务的信息:回话超时时间、定时任务间隔时间,最近的回话充值时间、最近的心跳发送时间、接收时间;

   3)心跳任务,座位延时任务,被放置在延迟队列中,客户端轮询,去除可以调度的任务,执行其;

   4)创建流程:在发送心跳请求钱,记录最近发送时间,在收到心跳响应结果后,记录最近心跳接收时间,然后计算下一次心跳发生时间,新建一个延迟心跳任务

   5)心跳延迟任务通过客户端的轮询来触发;

   6)客户端调用心跳的reset来创建第一个延迟任务:需确保连接上协调者,且消费组是活动的,即需获取协调者和接入消费组

   7)对错误的处理:协调者挂掉了,消费组重新请求“获取协调者”,协调者没挂掉,客户端重新发送“假如消费者”请求;

       如果发生了这些错误,心跳任务会修改状态,客户端轮询的时候,会去处理;

 

6.消费者提交偏移量

   1)自动提交任务:定时将分区偏移量保存到服务端;

   2)每次任务完成后,像心跳任务一样创建下一次延迟任务;

   3)第一个任务:加入消费者之后,调用自动提交任务的enable()创建第一个延迟的自动提交任务;

   4)也是采用异步加上回调方法的形式;

   5)异步定时提交任务为什么用“拉取偏移量”:定时提交任务执行是发生在上一次kafka轮询都全部执行完成之后,上一次更新了拉取偏移量,也处理了上一次拉取的记录集;

   6):同步提交偏移量:阻塞,这个一般发生在消费者需要精确控制提交偏移量的时机

7:提交偏移量 -> 消费者消息处理语义

  1)至多一次:先保存消费进度,再处理消息;自动提交,间隔很短;

  2)至少一次:先处理消息,最后才保存消费进度;可以将自动提交的时间间隔设长,手动调用提交偏移量;

  3)正好一次:在保存消费进度和保存消费结果之间,引入两阶段提交协议;或者让消费者将消费进度和处理结果保存在同一存储介质中。

      设置消费者不自动提交偏移量,订阅主题时设置自定义的消费者再平衡监听器。监听器会在分区变化时,分别从外部系统写入或者读取偏移量,只要能保证消费者处理和写入偏移量到存储系统是一个原子操作,可以实现正好一次的语义;

 4)

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值