【湖北上大人源码】【经典bbi公式源码】【java好的源码】kafka consumer 源码

2024-11-30 01:32:36 来源:猜歌源码 分类:探索

1.Kafka消费者源码:重平衡(1)-初始化与FIND_COORDINATOR
2.sarama 源码解析--Kafka的重平衡

kafka consumer 源码

Kafka消费者源码:重平衡(1)-初始化与FIND_COORDINATOR

       在Kafka 2.5.2的消费者组中,重平衡是关键,它定义了消费者如何根据订阅关系调整对Topic分区的分配。当消费者数量、订阅的Topic或GroupCoordinator所在的Broker发生变更时,会触发重平衡。湖北上大人源码

       消费者组状态由GroupState类管理,共有五个状态:Empty(无成员)、PreparingRebalance(加入中)、CompletingRebalance(等待分配)、Stable(已平衡)和Dead(元数据已删除)。状态间的转换基于预先定义的前置状态。例如,经典bbi公式源码从Empty到PreparingRebalance,预示着重平衡的开始。

       重平衡过程分为几个步骤,首先是消费者和Broker之间的协调。服务端启动时,GroupCoordinator组件即已就绪,java好的源码而Consumer通过ConsumerCoordinator与之通信。在启动时,消费者首先会通过FindCoordinatorRequest找到GroupCoordinator,通过最小负载节点发送请求,然后服务端确定哪个Broker负责协调,如groupId的动态估值源码hash值对consumer_offsets分区数取模确定。

       一旦找到GroupCoordinator,消费者会发送JoinGroupRequest。后续步骤如SYNC_GROUP和HEARTBEAT确保消费者与协调器保持同步。这部分详细内容在后续的文章中会进一步探讨。

sarama 源码解析--Kafka的重平衡

       重平衡操作

       重平衡是动态调整Consumer Group下的Consumer订阅Topic的分区的一个关键操作。Sarama中的火影战记源码githubBalanceStrategyRange和BalanceStrategySticky策略具体实施这一操作。

       重平衡触发条件之一是成员数变更。这一过程包括以下步骤:

       1. 启动一个新的消费者实例。

       2. 调用Consume方法。

       3. Consume方法初始化连接信息,并启动一个goroutine。程序会阻塞在sess.ctx.Done()上。

       4. 在newSession方法中找到协调者信息,并发起join请求和syncgroup请求。Consumer Leader执行一次重平衡。

       5. 创建consumer group session,并初始化offset manager和开启心跳goroutine。

       6. 当心跳超时或收到coordinator的重平衡通知时,调用cancel()方法取消操作,退出Consume逻辑。

       7. 此时,Consume函数优雅退出。由于外层循环的存在,会重新执行Consume,实现一次重平衡。

       另一个触发重平衡的条件是订阅主题分区数发生变更。这一过程如下:

       1. 在Consume方法中开启心跳goroutine,并将consumer group session传递给它。

       2. 分区数发生变化时,调用sess.cancel(),Consume优雅退出并重新执行,实现重平衡。

更多资讯请点击:探索

热门资讯

iot 平台 源码

2024-11-30 01:281171人浏览

bitcon 源码

2024-11-30 01:032964人浏览

keycloak 源码

2024-11-30 00:592562人浏览

ayui源码

2024-11-29 23:31492人浏览

python源码list

2024-11-29 23:162010人浏览

推荐资讯

i游源码

1.分享几个开源的Python游戏代码2.腾讯T2I-adapter源码分析2)-推理源码分析分享几个开源的Python游戏代码 以下是一些开源的Python游戏代码分享: I wanna,源

ecoin源码

1.什么是ipfs区块链(ipfs区域链)什么是ipfs区块链(ipfs区域链) IPFS是什么? 星际文件系统。 IPFS是一种内容可寻址的对等超媒体分发协议。IPFS将现有的成功系统分