使用 分布式快照机制 和 两阶段提交

两阶段提交

在 Flink 中两阶段提交的实现方法被封装到了 TwoPhaseCommitSinkFunction 这个抽象类中,我们只需要实现其中的beginTransaction、preCommit、commit、abort 四个方法就可以实现“精确一次”的处理语义,实现的方式我们可以在官网中查到:

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

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

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

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

相关文章:

  • 2022-12-23
  • 2021-06-10
  • 2022-01-12
  • 2021-12-04
  • 2022-12-23
  • 2021-11-01
  • 2021-07-09
  • 2021-08-09
猜你喜欢
  • 2021-05-21
  • 2022-01-19
  • 2022-01-16
  • 2021-11-26
  • 2022-01-30
  • 2021-04-12
  • 2021-06-07
相关资源
相似解决方案