3.2.5分区信息对象的偏移量

3.2.5分区信息对象的偏移量

在结束本节之前,我们来看一下分区信息对象的偏移量在拉取钱程中的使用方式。消费者的拉取线程第一次拉取消息时,会从ZK中读取fetchedOffset来决定要从分区的哪个位置开始拉取消息。消费者在读取到消息后,会更新分区的consuMedOffset。同时,消费者也会使用consuMedOffset作为分区的消费进度并定时地提交到ZK中。

注意:但并不是说拉取线程每次拉取消息都要读取ZK的偏移量作为fetchedOffset(那样和ZK交互就太频繁了)。因为客户端已经保存了consuMedOffset来表示消息的消费进度,所以拉取线程在正常的拉取工作过程中,会直接读取本地的consuMedOffset作为下一次的fetchedOffset,并且会在读取到消息后更新consuMedOffset。通过这种方式,fetchedOffset和consuMedOffset不断交替更新,消费者就能不断读取到新的消息。

如图3-17所示,分区信息对象的偏移盘在拉取线程中起到很重要的作用,具体步骤如下。

(1)关闭拉取线程时提交consuMedOffset偏移量到ZK。
(2)重新启动拉取线程时读取ZK中的偏移量。
(3)将ZK的偏移量作为刚开始的fetchedOffset。
(4)客户端读取到消息后会更新consumedOffset。
(5)在这之后每次拉取使用的fetchedOffset都来向于最新的consumedOffset。
(6)客户端进程定时提交偏移i注和(l)类似,也是取consuMedOffset写到ZK中。

在这里插入图片描述

总结一下消费者客户端使用消费者连接器的主要工作,具体步骤如下。

(1)创建队列和消息流,前者用于保存消费者拉取的消息,后者会读取消息。
(2)注册各种事件的监昕器,当事件发生时,消费组所有消费者成员都会再平衡。
(3)再平衡会为消费者重新分配分区,并构造分区信息加入topicRegistry。
(4)拉取线程获取topicRegistry中分配给消费者的所有分区信息、开始T作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

water___Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值