Flink-两阶段提交(two-phase-commit,2PC)

news/2024/11/30 5:39:13/

前面提到的各种实现exactly-once的方式,多少都有点缺陷;而更好的方法就是传说中的两阶段提交(2PC)。

顾名思义,它的想法是分成两个阶段:先做“预提交”,等检查点完成之后再正式提交。这种提交方式是真正基于事务的,它需要外部系统提供事务支持。

具体的实现步骤为:

①当第一条数据到来时,或者收到检查点的分界线时,Sink任务都会启动一个事务。

②接下来接收到的所有数据,都通过这个事务写入外部系统;这时由于事务没有提交,所以数据尽管写入了外部系统,但是不可用,是“预提交”的状态。

③当Sink任务收到JobManager发来检查点完成的通知时,正式提交事务,写入的结果就真正可用了。

当中间发生故障时,当前未提交的事务就会回滚,于是所有写入外部系统的数据也就实现了撤回。这种两阶段提交(2PC)的方式充分利用了Flink现有的检查点机制:分界线的到来,就标志着开始一个新事务;而收到来自JobManager的checkpoint成功的消息,就是提交事务的指令。每个结果数据的写入,依然是流式的,不再有预写日志时批处理的性能问题;最终提交时,也只需要额外发送一个确认信息。所以2PC协议不仅真正意义上实现了exactly-once,而且通过搭载Flink的检查点机制来实现事务,只给系统增加了很少的开销。

Flink提供了TwoPhaseCommitSinkFunction接口,方便我们自定义实现两阶段提交的SinkFunction的实现,提供了真正端到端的exactly-once保证。

不过两阶段提交虽然精巧,却对外部系统有很高的要求。这里将2PC对外部系统的要求列举如下:

  1. 外部系统必须提供事务支持,或者Sink任务必须能够模拟外部系统上的事务。
  2. 在检查点的间隔期间里,必须能够开启一个事务并接受数据写入。
  3. 在收到检查点完成的通知之前,事务必须是“等待提交”的状态。在故障恢复的情况下,这可能需要一些时间。如果这个时候外部系统关闭事务(例如超时了),那么未提交的数据就会丢失。
  4. Sink任务必须能够在进程失败后恢复事务。
  5. 提交事务必须是幂等操作。也就是说,事务的重复提交应该是无效的。

可见,2PC在实际应用同样会受到比较大的限制。具体在项目中的选型,最终还应该是一致性级别和处理性能的权衡考量。


http://www.ppmy.cn/news/751405.html

相关文章

新年贺卡php,幼儿新年贺卡内容 元旦贺卡图片手工制作

1、诚实守信,做事冷静,有原则,什么样的阶段,做什么样的事情,现阶段是读过这本书,当然,也要加强身体的每一天,新的一年的到来的母亲祝你新年快乐!永远健康安全&#xff01…

通天阁塔机器人图片_世界最大双足机器人亮相世博大阪馆

世界上最大的双足机器人“通天阁机器人”昨天亮相大阪案例馆的“特别日”活动。早报世博记者 高剑平 图 昨天正逢世博会城市最佳实践区大阪案例“特别日”,世界最大的双足机器人“通天阁机器人”惊艳亮相大阪馆,其可爱的动作、动听的歌声吸引了不少游客围…

通天阁塔机器人图片_世界最大双足机器人亮相大阪馆 会唱歌会鼓掌[图]

世界上最大的双足机器人“通天阁机器人”昨天亮相大阪案例馆的“特别日”活动 东方网7月29日消息:据《东方早报》报道,昨天正逢世博会城市最佳实践区大阪案例“特别日”,世界最大的双足机器人“通天阁机器人”惊艳亮相大阪馆,其可…

萌萌机器人布娃娃图片_你家中的新成员 养一只萌萌的小机器人

提起机器人你能想到谁?是酷酷的终结者,还是萌萌的瓦力?如果你对瓦力情有独钟的话,这里有一个好消息。一款名为Jibo的家用机器人正在Indiegogo众筹平台上筹款,目前已筹得超过28万美元,售价大约499美元&#…

赖美云的认证照_赖美云 | 可爱是最高级别的赞美

可爱,是大家见到赖美云的第一印象,反差感是她身上鲜明的特质。 很多人赞她有着御姐般的声音,“女儿”般的面庞。 纱裙拼接提花西装外套 Moschino 3D 打印立体发卡 Yvmin 这次的十一月刊封面拍摄我们选在了望京的一个影棚中。 虽然是一周中的首…

xlistview获取图片与文字

1.布局 &#xff08;1&#xff09; <?xml version"1.0" encoding"utf-8"?> <RelativeLayoutxmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools&…

【引用】揭秘男女之间如何磨合(很可爱的图片)

分割线....哦哦.............. 健康 生活 吃斋饭的老总&#xff08;图&#xff09; 灾难時 年轻人首选何种逃生物(组图) 教你怎么化妆才不伤害皮肤 组图:北大漂亮mm亲身示教你实用化妆术 无需美瞳&#xff0c;玩转实用大眼裸色调&#xff01; 五大招数 网购化妆品不吃亏 …

python课堂笔记手抄图片报_漂亮的手抄报版面设计图大全,简单又实用(8张)...

一个好的手抄报版面设计可是在整个手抄报的制作中起到很好的作用的&#xff0c;相信很多小朋友都在为手抄报版面设计发愁吧!下面查字典板报网小编为您带来漂亮的手抄报版面设计图大全&#xff0c;简单又实用&#xff0c;都是可以通用的设计图哦&#xff0c;希望你们喜欢! 1&…