当前位置: 首页 > article >正文

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


http://www.kler.cn/a/399712.html

相关文章:

  • 河道无人机雷达测流监测系统由哪几部分组成?
  • 【Golang】——Gin 框架中的模板渲染详解
  • OMV7 树莓派 tf卡安装
  • 前景理论(Prospect Theory)
  • 21.3D surface
  • 《InsCode AI IDE:编程新时代的引领者》
  • three.js实现地球 外部扫描的着色器
  • react学习篇--创建项目
  • ScreenAgent CogAgent 安装日志
  • 乘法器为例:概述MCU与FPGA通过APB总线实现交互(fpgaAPB的简单使用)
  • opencv(c++)---访问图像像素、增加白噪点
  • MySQL的表的约束以及查询
  • 汽车资讯新动力:Spring Boot技术驱动
  • 统计从输入的两个整数a和b所确定的范围内(0 ~ 9)出现的次数(c基础)
  • SpringBoot源码解析(四):解析应用参数args
  • 马斯克诉OpenAI新进展:加入微软等被告
  • WPF的基础控件详解
  • 基于单片机的风能太阳能供电的路灯智能控制系统设计(论文+源码)
  • 2411rust,1.80
  • 【汇编语言】数据处理的两个基本问题(三) —— 汇编语言的艺术:从div,dd,dup到结构化数据的访问
  • 数据库灾难恢复:构建不可摧的数据防线
  • 【数据结构】栈和队列的定义与实现
  • Linux :进程间通信之管道
  • 详细解读Gson 、Jackson 、FastJson 三大json序列化工具
  • PyTorch实战-手写数字识别-单层感知机
  • uniapp 微信小程序地图标记点、聚合点/根据缩放重合点,根据缩放登记显示气泡marik标点