有人可以为我提供一些技巧,说明如何在Flink中实现给定算法进行分布式流传输吗?

问题描述

我正在尝试在Flink中实施此科学论文(https://www.cse.ust.hk/~yike/pods10-cdsample.pdf)中的算法2(第4页),如果有人帮助我提供了一些有关如何完成此任务的提示(我应该在哪个州应该我使用了Mapstate吗?如何在Flink中实现广播等。

解决方法

这些算法需要协调员与工作人员之间的双向通信。要使用DataStream API达到此目的,您需要在工作人员与协调者之间建立某种发布订阅通道,以便工作人员可以向协调者发送消息,然后协调者可以将更新内容广播给工作人员。

希望在https://github.com/ververica/flink-training-exercises/blob/master/src/main/java/com/ververica/flinktraining/examples/datastream_java/broadcast/BroadcastState.java;中有一个使用Flink的广播状态模式的示例,希望可以帮助您入门。

或者,通过Flink的Stateful Functions API实现此用例可能更自然。每个工人都可以向协调员进行注册,协调员可以记住他们的地址,然后根据需要向他们发送消息。

对于协调器应使用的状态类型,是的,我认为MapState可能是最好的选择(假设我大致正确地理解了算法)。