Flink 两阶段提交(Two-Phase Commit)协议

这篇具有很好参考价值的文章主要介绍了Flink 两阶段提交(Two-Phase Commit)协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Flink 两阶段提交(Two-Phase Commit)是指在 Apache Flink 流处理框架中,为了保证分布式事务的一致性而采用的一种协议。它通常用于在流处理应用中处理跨多个分布式数据源的事务性操作,确保所有参与者(数据源或计算节点)在进行事务提交前达成一致,以避免数据不一致或丢失。
以下是 Flink 中实现两阶段提交的流程:

  1. 开始事务:
    在 Flink 中,事务的开始通常与一个特定的时间窗口或者事件触发的状态更新相关。当一个事务开始时,Flink 会生成一个唯一的事务 ID,并将该 ID 关联到正在进行的事务。此时,事务的状态变更操作会被标记为属于该事务。

  2. 预提交:
    在预提交阶段,Flink 会将事务的状态变更操作发送到涉及的不同任务或操作符中。这些任务或操作符会将事务操作收集到本地的状态中,但不会真正将这些操作应用到最终的状态中。

  3. 投票阶段:
    一旦所有任务都接收并保存了事务的状态变更操作,Flink 将进入投票阶段。在这个阶段,各个任务会向协调者发送是否可以提交事务的投票。如果一个任务的状态变更操作成功保存,它会投票“同意”提交,否则投票“不同意”。

  4. 提交或中止:
    协调者会等待所有参与者的投票结果。如果所有任务都投票“同意”,协调者会发送提交命令,各个任务会将之前保存的状态变更操作应用到最终状态中,从而完成事务。如果有任何一个任务投票“不同意”或者在一定时间内没有收到所有投票,协调者会发送中止命令,各个任务会回滚之前的状态变更操作,事务被中止。

Flink 两阶段提交协议的主要目标是保证所有参与者在进行事务提交或中止前达成一致&#文章来源地址https://www.toymoban.com/news/detail-636279.html

到了这里,关于Flink 两阶段提交(Two-Phase Commit)协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 详解flink exactly-once和两阶段提交

    详解flink exactly-once和两阶段提交

    以下是我们常见的三种 flink 处理语义: 最多一次(At-most-Once):用户的数据只会被处理一次,不管成功还是失败,不会重试也不会重发。 至少一次(At-least-Once):系统会保证数据或事件至少被处理一次。如果中间发生错误或者丢失,那么会从源头重新发送一条然后进入处理

    2024年01月16日
    浏览(10)
  • Flink实战(11)-Exactly-Once语义之两阶段提交

    Flink实战(11)-Exactly-Once语义之两阶段提交

    [Apache Flink]2017年12月发布的1.4.0版本开始,为流计算引入里程碑特性:TwoPhaseCommitSinkFunction。它提取了两阶段提交协议的通用逻辑,使得通过Flink来构建端到端的Exactly-Once程序成为可能。同时支持: 数据源(source) 和输出端(sink) 包括Apache Kafka 0.11及更高版本。它提供抽象层

    2024年02月05日
    浏览(10)
  • 分布式事务(4):两阶段提交协议与三阶段提交区别

    分布式事务(4):两阶段提交协议与三阶段提交区别

    1 两阶段提交协议 两阶段提交方案应用非常广泛,几乎所有商业OLTP数据库都支持XA协议。但是两阶段提交方案锁定资源时间长,对性能影响很大,基本不适合解决微服务事务问题。 缺点: 如果协调者宕机,参与者没有协调者指挥,则会一直阻塞。、 如下图: 第一阶段: 准

    2024年02月11日
    浏览(7)
  • 【源码解析】flink sql执行源码概述:flink sql执行过程中有哪些阶段,这些阶段的源码大概位置在哪里

    【源码解析】flink sql执行源码概述:flink sql执行过程中有哪些阶段,这些阶段的源码大概位置在哪里

    本文大致分析了flink sql执行过程中的各个阶段的源码逻辑,这样可以在flink sql执行过程中, 能够定位到任务执行的某个阶段的代码大概分布在哪里,为更针对性的分析此阶段的细节逻辑打下基础,比如create 的逻辑是怎么执行的,select的逻辑是怎么生成的,优化逻辑都做了哪

    2024年02月04日
    浏览(13)
  • 【Flink】Flink提交流程

    【Flink】Flink提交流程

    我们通常在学习的时候需要掌握大数据组件的原理以便更好的掌握这个大数据组件,Flink实际生产开发过程中最常见的就是提交到yarn上进行调度,模式使用的 Per-Job模式,下面我们就给大家讲下Flink提交Per-Job任务到yarn上的流程,流程图如下  (1)客户端将作业提交给 YARN 的资

    2024年02月11日
    浏览(10)
  • 【Flink】详解Flink任务提交流程

    【Flink】详解Flink任务提交流程

    通常我们会使用 bin/flink run -t yarn-per-job -c com.xxx.xxx.WordCount/WordCount.jar 方式启动任务;我们看一下 flink 文件中到底做了什么,以下是其部分源码 可以看到,第一步将相对地址转换成绝对地址;第二步获取 Flink 配置信息,这个信息放在 bin 目录下的 config. sh 中;第三步获取 JV

    2024年02月14日
    浏览(12)
  • 深入理解 Flink(六)Flink Job 提交和 Flink Graph 详解

    深入理解 Flink(六)Flink Job 提交和 Flink Graph 详解

    深入理解 Flink 系列文章已完结,总共八篇文章,直达链接: 深入理解 Flink (一)Flink 架构设计原理 深入理解 Flink (二)Flink StateBackend 和 Checkpoint 容错深入分析 深入理解 Flink (三)Flink 内核基础设施源码级原理详解 深入理解 Flink (四)Flink Time+WaterMark+Window 深入分析 深入

    2024年01月16日
    浏览(15)
  • 工作实践篇 Flink(一:flink提交jar)

    工作实践篇 Flink(一:flink提交jar)

    flink 模式 – standalone 备注: -c 填写存在main的类名。 查看包中是否有对应的主类名。 主类,没有写全。 DetectAndDefenseEventLogNormal 这个虽然是主类,但是必须写全名,加上包名。 提交到flink上,有报错。 https://www.google.com/search?q=cannot+assign+instance+of+org.apache.commons.collections.map.l

    2024年02月04日
    浏览(8)
  • 【flink】使用flink-web-ui提交作业报错

    【flink】使用flink-web-ui提交作业报错

    使用WebUI提交作业出现错误。 错误截图:  弹框信息: 在弹框中是无法看到具体错误信息的。 需要去 job-manager/logs中看详细信息: Failed to create checkpoint storage at checkpoint coordinator side 无法在检查点协调器端创建检查点存储  怎么还没有办法创建呢???? 看一下我的StateBa

    2024年02月14日
    浏览(7)
  • flink作业提交流程

    flink作业提交流程

    目录 作业提交流程 独立模式 YARN模式 会话模式 单作业模式 应用模式 (1) 一般情况下,由客户端(App)通过分发器提供的 REST 接口,将作业提交给JobManager。 (2)由分发器启动 JobMaster,并将作业(包含 JobGraph)提交给 JobMaster。 (3)JobMaster 将 JobGraph 解析为可执行的 Exec

    2024年02月12日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包