我们使用flink通过连接的流来丰富我们的数据流。
例如:我们的数据流可能是出租车,而我们的丰富数据可能是出租车司机。
考虑这样的拓扑:
BroadcastStream<TaxiDrivers> taxiDrivers = env.addSource(enrichments)
.broadcast(MAP_DESCRIPTOR)
env.addSource(taxiRidesSource())
.connect(taxiDrivers)
.process(enrichWithTaxiDrivers())
.output(someOutput())
如果由于某些原因我们丢失了Flink State,则可以将消息重新发布到taxiDriver源,以再次恢复该状态。
那怎么了?
当我们完成回填状态之前新的士到达时,发生回填状态的问题。
我们曾考虑过缓冲enrichWithTaxiDrivers()
函数的丰富性,或将源函数扩展到pause
,但都不是一个干净的解决方案。
什么是让主流(出租车)等待或暂停直到回填完成的好方法?