state - 有人可以为我提供一些技巧,告诉我如何在 Flink 中实现给定的分布式流算法吗?
问题描述
我正在尝试在 Flink 中实现这篇科学论文(https://www.cse.ust.hk/~yike/pods10-cdsample.pdf)中的算法 2(第 4 页),如果有人帮助我,我会很高兴关于如何处理此任务的一些提示(我应该使用哪个 State,也许是 Mapstate?,如何在 Flink 中实现广播等)。
解决方案
这些算法需要协调者和工作人员之间的双向通信。要使用 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 可能是最好的选择(假设我已经大致正确地理解了算法)。
推荐阅读
- rabbitmq - 消息代理 - .NET Core 中的多供应商架构
- java - 仅当我选择一个选项时才显示角度显示按钮和区域
- apache-spark - 使用 stackdriver 分析 gcloud spark-submit
- python - 如何使用 Scrapy 在多个链接中抓取内容
- php - Laravel 一对一关系从数据库中返回所有相关资源?
- nginx - Nginx 重启后没有获取有效的 SSL 证书
- javascript - 使用 Pupeteer 的网页自动化没有通过
- sql - Oracle 12c - 插入到选择查询中的不明确列,ORA-00918
- ios - 如何将数据从 UIViewsController 传递到 UIView,Swift
- java - javax.xml.ws.服务。
(Service.java:82) 空指针异常