我如何在 Apache Flink Serverless Java 中运行 Web 套接字

问题描述

  1. 我有一个 Java 程序可以在 AWS 的 Apache flink 中运行,我想运行 通过网络套接字实时通信我如何在 Apache flink Java 中集成无服务器网络套接字??? 谢谢你

解决方法

Flink 旨在帮助您在存储或流媒体解决方案之间连续处理和移动数据。由于以下原因,它不打算也不能直接与 websockets 一起工作:

  • 提交作业时,运行时会序列化您的逻辑并将其移动到其他 TaskManager 实例,以便它可以并行化它们。 这些可以完全在另一台机器上。现在,如果您打算使用该代码为 websocket 提供服务,它只是移到别处了!

  • TaskManagers 可以停止和重新启动(缩放事件,从检查点/保存点恢复等)。这就是您的 websocket 连接将被切断的地方。

  • 此外,如果有助于处理,Flink 规划器可以决定您的源函数需要读取两次。这意味着您的 websocket 需要维护接收到的消息的历史记录,并确保它们被发送到每个操作员实例一次。


这就是说,你可以有一个网络服务器来管理 websocket,将消息来回传送到 Kafka 主题,然后 Flink 可以对其进行操作。

既然您在谈论 AWS,我建议您了解他们的 Websocket API Gateway service。我相信这些可以通过 Kinesis 轻松连接,Flink can read from and write to easily