flink kafka消费者如何处理kafka主题的rebalance

背景:

我们日常使用kafka客户端消费kafka主题的消息时,当消费者退出/加入消费者组,kafka主题分区数有变等事件发生时,都会导致rebalance的发生,此时一般情况下,如果我们不自己处理offset,我们不需要理会这个rebalance的,当rebalance完成后,每个消费者会从__consumer_offsets中获取每个消费者此时的消费偏移位置,继续进行消费,此时有可能会重复消费.

flink对于kafka的rebalance的处理

我们之前说的是正常的情况下rebalance后消费者会从__consumer_offsets中获取偏移位置进行消费,那么对于开启了检查点的flink来说有什么不一样呢?

由于flink只有在checkpoint完成后才会提交偏移到broker服务器,如果按照之前的理解,那么当rebalance发生时,消费者从__consumer_offsets中获取比偏移位置的话也就意味着这个值是上一个checkpoint提交的偏移值,如果顺着这个思路往下,kafka的偏移相当于重置到了上一个checkpoint的位置,那么按理来说其他的状态,比如键值分区状态也会重置到上一个检查点的状态,要不然flink就不能保证状态的一致性了,所以真相到底是什么?

源码追踪:

1.首先看一下flink的kafka consumer的代码:

2.其中reassignPartitions方法代码如下所示:

3.再来看看assign方法的注释:

有没有恍然大悟的感觉?flink中使用assign的方式执行这个任务算子消费的kafka分区,是不会触发rebalance操作的.

彩蛋:

那这样的话,比如当kafka新增了满足条件的主题或者正在监听的主题新增了分区,flink是怎么消费到的?

相关推荐
GIS数据转换器33 分钟前
洪水时空大数据分析与评估系统
大数据·人工智能·机器学习·数据挖掘·数据分析·无人机·宠物
rainbow72424433 分钟前
企业AI学习体系选型与构建:内部培训、外部引进与实战项目的深度结合方案
大数据·人工智能
Web3_Daisy1 小时前
Token 分红机制详解:实现逻辑、激励结构与风险分析
大数据·人工智能·物联网·web3·区块链
B站计算机毕业设计之家2 小时前
Python 基于协同过滤的动漫推荐与数据分析平台 Django框架 协同过滤推荐算法 可视化 数据分析 大数据 大模型 计算机毕业设计(建议收藏)✅
大数据·python·scrapy·数据分析·django·课程设计·推荐算法
未来之窗软件服务2 小时前
全能合同管理系统/上百种合同类型/到期提醒——东方仙盟
大数据·合同管理·仙盟创梦ide·东方仙盟
guoji77882 小时前
Gemini 3.1 Pro 评估科学:超越基准测试的硬核能力测评方法论
大数据·人工智能
逸Y 仙X2 小时前
文章八:ElasticSearch特殊数据字段类型解读
java·大数据·linux·运维·elasticsearch·搜索引擎
专注API从业者2 小时前
淘宝商品详情 API 的 Webhook 回调机制设计与实现:实现数据主动推送
大数据·前端·数据结构·数据库
逸Y 仙X3 小时前
文章九:ElasticSearch索引字段常见属性
java·大数据·服务器·数据库·elasticsearch·搜索引擎