首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云数据流故障恢复

云数据流故障恢复
EN

Stack Overflow用户
提问于 2016-02-15 02:16:09
回答 1查看 1.5K关注 0票数 4

我想使用Google创建会话窗口,如数据流模型纸中所解释的那样。我想将我的未绑定数据发送到Pub/Sub,然后以流式方式在Cloud中读取它。我想使用大超时的会话窗口(30分钟到120分钟)。

我的问题是:

1)如果数据流进程失败,会发生什么情况?

2)是否丢失了存储在窗口中但仍未超时的所有数据?

3)数据流提供了哪些恢复机制?

示例:

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

代码语言:javascript
复制
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对?

还有一个相关的问题--如果我取消数据流作业并启动一个新的作业,我想新的作业不会有前一个作业的状态。有没有办法把国家转移到新的工作岗位上?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-15 19:40:26

云数据流透明地处理故障。例如,它只会在Cloud中对消息进行处理并持久地提交结果之后,才会“破坏”消息。如果数据流进程失败(假设您指的是一个工人JVM的崩溃,然后将自动重新启动,而不是整个作业的完全失败),重新启动时它将再次连接到Pubsub,所有未加标记的消息都将被重新传递和重新处理,包括分组到windows等。在失败时,窗口状态也会被持久地保存,所以在这种情况下,它应该会生成7 -> 140

如果您对此持久性的实现感兴趣,请参阅磨轮纸 -它的日期早于Dataflow,但是Dataflow在流运行程序中使用相同的持久性层。

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

目前,在作业之间发生状态转移的唯一情况是在管道更新操作期间。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35400529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档