如果Dataflow失败,Dataflow如何处理pubsub确认?

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

我试图了解Dataflow将确认pubsub消息的过程,以及我处理所有数据的保证,无论是否存在故障。

我知道Dataflow在将它保存到某种持久存储时会发出消息,但我不确定它到底会是什么时候。

以一个简单的管道为例,从Pubsub读取消息,对消息类型进行小的转换以转换为易于写入的内容(pardo),并保存到GCS中的文本文件中。从StackDriver仪表板看,Dataflow一旦进入管道就会成为Acking消息,并且只在写入文件的最后一个窗口时才会备份。 Unacked message dashboard

有了这个,我知道当消息发生错误时,流数据流作业将继续运行,直到消息正常工作,或管道更新as mentioned here。但是,由于存储消息的可靠性需求,在Dataflow本身或Beam遇到导致管道崩溃的内部错误的情况下会发生什么。如果消息被写入某种持久性存储(而不是我的最终GCS存储桶),新管道是否能够选择这些存储?

TLDR:在Dataflow本身完全失败的情况下会发生什么。这些似乎在它们进入时会被取消的消息会丢失还是被替代品接收?

注意:我读了here给出的答案,但这似乎是在完全失败之前谈论失败案例。

google-cloud-dataflow
1个回答
0
投票

Streaming Dataflow将重试失败的工作项,因此如果某个工作程序由于某种原因而失败,Dataflow将重试相同的工作,并应从故障点恢复而不会丢失数据。

如前面提到的答案中所述,目前没有办法在两个管道之间传输状态(除非它是更新),所以如果管道完全失败(这应该是非常罕见的)并且你启动一个新的管道,那么第二个管道将从PubSub主题中的最后一条未确认消息中获取。

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