gpt4 book ai didi

google-cloud-dataflow - Cloud Dataflow 故障恢复

转载 作者:行者123 更新时间:2023-12-01 12:29:47 34 4
gpt4 key购买 nike

我想使用 Google Cloud Dataflow 创建 session 窗口,如 dataflow model paper 中所述。 .我想将我的未绑定(bind)数据发送到 Pub/Sub,然后以流式方式在 Cloud Dataflow 中读取它。我想使用具有大超时(30 分钟到 120 分钟)的 session 窗口。

我的问题是:

1)如果数据流过程失败会发生什么?

2) 我是否会丢失存储在尚未超时的 Windows 中的所有数据?

3) Dataflow 提供哪些恢复机制?

例子:

假设我有一个 Sessions 窗口,超时时间为 30 分钟,每分钟都会触发一次累积处理时间。假设该值是一个整数,我只是将窗口中的所有值相加。假设这些键值对来自 Pub/Sub:

7 -> 10 (at time 0 seconds)
7 -> 20 (at time 30 seconds)
7 -> 50 (at time 65 seconds)
7 -> 60 (at time 75 seconds)

我想在 60 秒时窗口会触发,它会产生一个 7 -> 30一对。我还假设在 120 秒时窗口会再次触发,它会产生 7 -> 140配对,因为它触发累积。

我的问题是如果在 70 时数据流失败会发生什么?我想在第 70 秒之前收到的 3 条消息已经被确认到 Pub/Sub,所以它们不会被重新传递。

当 Dataflow 重新启动时,它会以某种方式使用键 7 恢复窗口的状态,以便在 120 秒时它可以产生 7 -> 140对,否则只会产生 7 -> 60一对?

还有一个相关问题 - 如果我取消数据流作业并开始一个新作业,我想新作业不会具有前一个作业的状态。有没有办法将状态转移到新工作?

最佳答案

Cloud Dataflow 透明地处理故障。例如。它只会在 Cloud Pubsub 中的消息经过处理并持久提交后“确认”消息。如果 Dataflow 进程失败(我假设您指的是工作 JVM 崩溃,然后会自动重新启动,而不是整个作业完全失败),重新启动时它将再次连接到 Pubsub 并且所有未确认的消息将被重新传递和重新处理,包括分组到窗口等。窗口状态也可以在故障中持久保存,因此在这种情况下它应该产生 7 -> 140 .

如果您对这种持久性的实现感兴趣,请参阅 Millwheel paper - 它早于 Dataflow,但 Dataflow 在流运行器中使用相同的持久层。

Dataflow 中没有面向用户的恢复机制,因为编程模型将您与处理故障的必要性隔离开来,并且运行器负责所有必要的恢复;失败可见的唯一方法是通过记录可以多次处理这一事实,即如果您在 DoFn 中执行任何副作用,则这些副作用必须是幂等的。

目前,作业之间发生状态转移的唯一情况是在 pipeline update operation 期间。 .

关于google-cloud-dataflow - Cloud Dataflow 故障恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35400529/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com