Flink和Kafka连接时的精确一次保证

端到端的精确一次性保证

既然是端到端的exactly-once,我们可以从三个组件的角度来进行分析:

(1)Flink内部

Flink内部可以通过检查点机制保证状态和处理结果的exactly-once语义。

(2)输入端

输入数据源端的Kafka可以对数据进行持久化保存,并可以重置偏移量(offset)。所以我们可以在Source任务(FlinkKafkaConsumer)中将当前读取的偏移量保存为算子状态,写入到检查点中;当发生故障时,从检查点中读取恢复状态,并由连接器FlinkKafkaConsumer向Kafka重新提交偏移量,就可以重新消费数据、保证结果的一致性了。

(3)输出端

输出端保证exactly-once的最佳实现,当然就是两阶段提交(2PC)。作为与Flink天生一对的Kafka,自然需要用最强有力的一致性保证来证明自己。

也就是说,我们写入Kafka的过程实际上是一个两段式的提交:处理完毕得到结果,写入Kafka时是基于事务的"预提交";等到检查点保存完毕,才会提交事务进行"正式提交"。如果中间出现故障,事务进行回滚,预提交就会被放弃;恢复状态之后,也只能恢复所有已经确认提交的操作。

整体流程

相关推荐
明月_清风2 小时前
数据进入平台后怎么处理?一文搞懂 ETL
大数据·后端·数据分析
明月_清风2 小时前
数据处理完放在哪里?一文搞懂数据仓库与数据湖
大数据·后端·数据分析
大大大大晴天2 小时前
每天认识一个组件:向量化计算加速Apache Auron
大数据
明月_清风2 小时前
数据平台到底是什么?一篇文章搞懂数据平台开发
大数据·后端·数据分析
明月_清风2 小时前
数据是怎么进入数据平台的?一文搞懂数据采集与数据同步
大数据·后端·数据分析
Databend2 小时前
同样 PASS,路径为何不同|用 Jev 逐 Span 评估 Agent Trace
大数据·数据分析·agent
Likeadust2 小时前
上传即转码、分类、嵌入:本地点播/网络点播EasyDSS点播如何撑起企业视频知识库
大数据·音视频·easydss
Leo.yuan2 小时前
FineDataLink 5.0 正式发布:实时计算与数据质量两大能力升级,构建可信、实时的数据底座
大数据
大大大大晴天2 小时前
数据血缘与影响分析:从字段链路到变更治理和故障定位
大数据
SelectDB2 小时前
Doris 向量检索上线踩坑记录:七个排查现场与可直接复制的命令
大数据·数据库·数据分析