关于弗林克仅一次功能

问题描述 投票:0回答:1

我在阅读有关弗林克仅一次功能here的文档。我不太明白一些句子:

  1. 经过一个成功的预提交,提交必须保证最终获得成功 - 无论是我们的运营商,我们的外部系统需要作出这种保证。如果提交失败(例如,由于间歇性的网络问题),整个弗林克应用程序失败,根据用户的重启策略重启,还有另一个提交尝试。这个过程是至关重要的,因为如果承诺没有成功,最终,会发生数据丢失。

这是说,如果承诺没有成功,最终发生数据丢失。我把它解释为:该承诺能成功,但它只是发生在持续失败,因为某些原因,每次重新启动。在这种情况下,弗林克只能放弃属于此提交数据。所以,如果数据丢失是不可接受的,应用程序应该重新启动,直至提交成功?

  1. 我们知道,如果有任何故障,弗林克应用程序恢复到最新的成功检查点的状态。一个潜在的缺点是在罕见的情况下,当故障发生后成功预提交,但该事实的通知之前(提交)达到我们的运营商。在这种情况下,我们弗林克操作恢复到已经被预先承诺但尚未提交的状态。

我不太明白这里,无论是。这是什么通知一下,这是不是上面提到的?并执行所述的操作指的是沉操作?此外,由于我解释它,如果确认成功,只有所谓的通知失败,它会导致恢复到COMMITED前的状态后的数据复制?

如果这个问题本身是无效的,请大家指正。任何帮助表示赞赏。

apache-flink flink-streaming
1个回答
1
投票

弗林克的端至端仅一次机制是基于两个阶段提交(2PC)等协议。该协议被用来协调,要么没有或程序的所有汇提交输出到外部系统。

如果有宿任务说:“我准备提交”(预提交),它给人的保证,它能够执行提交。水槽任务然后等待从其中如果所有片上的任务是准备提交同意只发送协调收到执行通知。如果收到通知之前,申请未能通过担保也必须持有。在这种情况下,接收任务必须能够恢复开放(还未提交)的事务,并收到一个通知时,执行它。在多重故障的情况下,接收器必须不断地尝试,直到提交成功。然而,必须只执行一次交易,即使是在一个(或多个)故障的情况下。

这是什么意思

经过一个成功的预提交,提交必须保证最终获得成功

如果水槽的任务是不能够最终承诺,它预先提交的数据,该数据将丢失。

© www.soinside.com 2019 - 2024. All rights reserved.