首页 > 解决方案 > 有人可以为我提供一些技巧,告诉我如何在 Flink 中实现给定的分布式流算法吗?

问题描述

我正在尝试在 Flink 中实现这篇科学论文(https://www.cse.ust.hk/~yike/pods10-cdsample.pdf)中的算法 2(第 4 页),如果有人帮助我,我会很高兴关于如何处理此任务的一些提示(我应该使用哪个 State,也许是 Mapstate?,如何在 Flink 中实现广播等)。

标签: stateapache-flinkflink-streamingdata-stream

解决方案


这些算法需要协调者和工作人员之间的双向通信。要使用 DataStream API 实现这一点,您需要在工作人员和协调员之间建立某种发布-订阅通道,以便工作人员可以向协调员发送消息,然后协调员可以将其更新广播给工作人员。

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

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

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


推荐阅读