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

相关推荐
yyuuuzz4 小时前
独立站的技术基础与常见运维问题
大数据·运维·服务器·网络·数据库·aws
微擎应用8 小时前
智能售货柜公众号管理系统平台
大数据·人工智能
计算机安禾10 小时前
【算法分析与设计】第26篇:参数化算法与固定参数可解性理论
大数据·人工智能·算法·机器学习·剪枝
liushangzaibeijing10 小时前
Superpower 使用大纲
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客11 小时前
每次操作一个 API 调用:Elastic Cloud Hosted 如何让大规模部署管理变得可行
大数据·运维·数据库·elasticsearch·搜索引擎·serverless
志栋智能14 小时前
超自动化安全:实现安全运营现代化的关键
大数据·运维·网络·安全·自动化
渣渣盟14 小时前
MySQL DDL操作全解析:从入门到精通,包含索引视图分区表等全操作解析
大数据·数据库·mysql
unclejet14 小时前
颠覆传统开发!AI根治软件工程技术债务顽疾
大数据·人工智能·软件工程
赴山海bi14 小时前
如何在不降低销量的情况下降低亚马逊ACOS
大数据
大大大大晴天️14 小时前
告别数据重复与丢失:Flink Exactly-Once 原理解析
大数据·flink