TwoPhaseCommitSinkFunction二阶段提交
1,什么是二阶段提交?
TwoPhaseCommitSinkFunction
Flink 已经为我们提供了实现 Exactly-Once 的 FlinkKafkaProducer 类。如下图所示:它实现了 TwoPhaseCommitSinkFunction
类,并重写了其中的方法,通过 2PC (Two Phase Comit) 二阶提交的方式,实现了 Exactly-Once。
使用关系型数据库 MySQL,开启 CheckPoint 机制的前提下,为了保证前一次 CheckPoint 成功后到这次 CheckPoint 成功之前这段时间内的数据不丢失,如果执行到一半过程任务失败了,从而导致前一次CheckPoint成功后到任务失败前的数据已经存储到了MySQL,然而这部分数据并没有写入到 CheckPoint。如果任务重启后,前一次CheckPoint成功后到任务失败前的数据便会再次写入MySQL,从而导致数据重复的问题。
这种情况,便使用到了 TwoPhaseCommitSinkFunction
类,以此来实现 MySQL 关系型数据库的二阶提交。
2,需要什么条件?
sink对象需要支持事务,很可惜大部分都不支持,那怎么办呢?
目前解决方案就是不停重复的写,或者写入缓存,或者写入外部。
JBDC案例:
public class MySqlTwoPhaseCommitSink extends TwoPhaseCommitSinkFunction<String>,Connection,Void> {
主要实现TwoPhaseCommitSinkFunction 函数。
3,Flink写入doris实现二阶段提交。
目前不支持,doris stream load是原子性的,它是自动提交事务的。
参考文章:
https://blog.bcmeng.com/post/meituan-doris.html#%E5%8F%98%E5%8C%96%E7%BB%B4%E8%A1%A8-join
https://blog.bcmeng.com/post/kafka-to-doris.html#doris-stream-load-%E5%8E%9F%E7%90%86
https://blog.csdn.net/lzb348110175/article/details/104534095
https://blog.51cto.com/simplelife/2401521
TwoPhaseCommitSinkFunction二阶段提交相关推荐
- 分布式理论 二阶段提交 2PC 3PC 端到端一致性 分布式事务
一.临界知识对我们学习的巨大帮助 临界知识这个概念,是我上个月读<好好学习:个人知识管理精进指南>这本书学到的概念,真的有被启发到,现在觉得它对于我们深刻了解世界有着非常大的作用. 所谓临 ...
- RocketMQ源码分析之RocketMQ事务消息实现原理上篇(二阶段提交)
在阅读本文前,若您对RocketMQ技术感兴趣,请加入 RocketMQ技术交流群 根据上文的描述,发送事务消息的入口为: TransactionMQProducer#sendMessageInTra ...
- 分布式事务理论-二阶段提交(Two-phase Commit)
1 2PC 两阶段提交协议为了保证分布在不同节点上的分布式事务的一致性,我们需要引入一个协调者来管理所有的节点,负责各个本地资源的提交和回滚,并确保这些节点正确提交操作结果,若提交失败则放弃事务. 2 ...
- java 二阶段提交,二阶段提交协议(Two Phase Commitment Protocol)
一.典型的分布式事务实例 跨行转账问题是一个典型的分布式事务,用户A向B的一个转账1000,要进行A的余额-1000,B的余额+1000,显然必须保证这两个操作的事务性. 类似的还有,电商系统中,当有 ...
- 漫话:如何给女朋友解释什么是2PC(二阶段提交)?
周末晚上,正在家里面看综艺节目,突然女朋友跑过来找我打<王者荣耀>. 打了几把游戏,终于可以歇息一会了,准备继续看我的综艺,可是女朋友过来找我给他讲讲到底什么是二阶段提交. 分布式一致性 ...
- 漫画:如何给女朋友解释什么是2PC(二阶段提交)?
作者|漫话编程 本文经授权转载自漫话编程(ID:mhcoding) 周末晚上,正在家里面看综艺节目,突然女朋友跑过来找我打<王者荣耀>. 打了几把游戏,终于可以歇息一会了,准备继续看我的综 ...
- 《从paxos到zookeeper分布式一致性原理与实践》读书笔记--第二章一致性协议--二阶段提交
在分布式系统中,每一台机器节点虽然能够知道自己在进行事务操作过程中的结果是成功还是失败但无法直接获取其他分布式系欸但的操作结果.因此,当一个事务需要跨越多个分布式节点的时候为了保持事务的ACID特性, ...
- 关于2PC(二阶段提交)和3PC(三阶段提交)的理解
分布式系统和分布式一致性问题 分布式系统,即运行在多台不同的网络计算机上的软硬件系统,并且仅通过消息传递来进行通信和协调. 分布式一致性问题,即相互独立的节点之间如何就一项决议达成一致的问题. 2PC ...
- 正确理解二阶段提交(Two-Phase Commit)
文章目录 明确问题 草稿方案 原子提交协议希望实现的2个特性 正确的二段提交协议(Two-Phase Commit) 二阶段提交协议如何满足安全性(Safety) 二阶段提交协议如何满足存活性( Li ...
- mysql三阶段提交_二阶段提交和三阶段提交
一.2PC 2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase).提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提交阶段 整个事务 ...
最新文章
- iOS开发网络数据之AFNetworking使用
- 从U盘无人值守安装linux操作系统
- ECSHOP去版权标志删除Powered by ECShop(转)
- 乐视欠122亿的图标给后浪的启示
- MySQL-处理重复数据[20180517]
- java基础运算符、键盘录入
- Linux系统启动流程图
- JavaScript 中常用的弹窗
- 【校招】SHL 的 General Ability (GA, 通用能力测试)
- 摄像模组中光学相关知识(四)
- STM32——MPU6050六轴传感器
- python scrapy框架 简书_7、Python Scrapy框架,简单学习
- 路在何方 路在脚下 -- !!
- “兴趣爱好”,蜜糖or砒霜?
- Chaosblade 混动工程之网络延迟实践
- Android 9.0系统源码_SystemUI(六)滑动锁屏的创建
- 工信部:未来三年我国处于5G发展导入期,要适度超前建设
- cobaltstrike域前置
- 区块链详细应用举例(一)
- 租传奇手游服务器网站,传奇手游服务端