首页 > 解决方案 > Apache flink - 如何让源函数等待回填状态

问题描述

我们使用 flink 通过连接流来丰富我们的数据流。

例如:我们的数据流可能是出租车,我们的丰富可能是出租车司机。

考虑这样的拓扑:

BroadcastStream<TaxiDrivers> taxiDrivers = env.addSource(enrichments)
                                              .broadcast(MAP_DESCRIPTOR)

env.addSource(taxiRidesSource())
   .connect(taxiDrivers)
   .process(enrichWithTaxiDrivers())
   .output(someOutput())

如果由于某种原因我们应该丢失我们的 Flink 状态,我们可以将消息重新发布到 taxDriver 源以再次恢复状态。

那么出了什么问题呢?

当新的taxiRides 在我们完成回填状态之前到达时,就会出现像这样回填我们的状态的问题。

我们已经考虑过缓冲enrichWithTaxiDrivers()函数的丰富性,或者将我们的源函数扩展到pause但感觉都不是一个干净的解决方案。

什么是让主流(出租车)等待或暂停直到回填完成的好方法?

标签: apache-flinkflink-streaming

解决方案


推荐阅读