Flink是如何实现 End-To-End Exactly-once的?

flink 如何实现端到端的 Exactly-once?

端到端包含 Source, Transformation,Sink 三部分的Exactly-once

  • Source:支持数据的replay,如Kafka的offset。
  • Transformation:借助于checkpoint
  • Sink:Checkpoint + 两阶段事务提交

两阶段提交?

  • 一旦Flink开始做checkpoint操作,就会进入pre-commit "预提交"阶段,同时JobManagerCoordinator会将Barrier注入数据流中。
  • 当所有的barrier在算子中成功进行一遍传递(就是Checkpoint完成),并完成快照后,"预提交"阶段完成。
  • 等所有的算子完成"预提交",就会发起一个commit "提交"动作,但是任何一个"预提交" 失败都会导致Flink回滚到最近的checkpoint。

两阶段提交API

beginTransaction:在开启事务之前,我们在目标文件系统的临时目录中创建一个临时文件,后面在处理数据时将数据写入此文件。

preCommit:在预提交阶段,刷写(flush)文件,然后关闭文件,之后就不能写入到文件了,我们还将为属于下一个检查点的任何后续写入启动新事务。

commit:在提交阶段,我们将预提交的文件原子性移动到真正的目标目录中,请注意,这回增加输出数据可见性的延迟。

abort:在中止阶段,我们删除临时文件。

参考:

https://www.cnblogs.com/kunande/p/17142718.html

相关推荐
智圣新创015 分钟前
高校共生型学生社区生态圈搭建 核心路径与效能升级高频实操答疑
大数据·人工智能
Achou.Wang1 小时前
《从零实现cobra》手写一个 mini 版 Cobra
大数据·elasticsearch·搜索引擎
BGK1123582 小时前
基于qemu_v8+optee 4.00 平台构建 ca/ta
java·大数据·数据库
工业HMI实战笔记3 小时前
【无标题】
大数据·人工智能·ui·自动化·人机交互·交互
大模型码小白4 小时前
向量化引擎与 AI 排障:当 SIMD 遇到异常检测,存储诊断的范式转移
java·大数据·数据库·人工智能·python
雪碧聊技术5 小时前
中国可重复使用火箭首次成功着陆——航天“降本时代”正式开启
大数据·人工智能
Geoffwo5 小时前
通用动作意念脑电信号高度相似的理论依据
大数据·人工智能
techdashen5 小时前
不用再反复 stash:用 Git Worktree 同时开发多个分支
大数据·git·elasticsearch
科技圈快迅5 小时前
新工科保研机构怎么选?垂直辅导与综合型服务模式差异解析
大数据·人工智能
大模型丫丫6 小时前
Agent开发的难点是什么呢?
大数据·人工智能·学习