首页 > 解决方案 > Apache Flink 中的有状态函数远程模块

问题描述

当我检查状态函数模块时,我发现了以下结果。

https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.0/sdk/python.html -> 支持 Python SDK 作为远程模块。

https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.0/sdk/java.html -> 支持 Java SDK 作为嵌入式模块。

https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.0/sdk/modules.html -> 此模块类型可以支持任意数量的语言 SDK。远程模块通过 YAML 配置文件向系统注册。

Stateful Function 应用程序使用 http 与 Apache Flink 运行时通信。Python SDK 附带一个 RequestReplyHandler,它会根据 RESTful HTTP POSTS 自动分派函数调用。RequestReplyHandler 可以使用任何 HTTP 框架公开。

如何在 JAVA 中处理请求?是否有 Java SDK 的示例远程功能?

我还可以混合嵌入式和同位/远程功能吗?例如,如果我将客户的统计信息(总和、计数、平均等)输出到另一个 kafka 主题,然后我进入该主题,我可以使用 python sdk 的远程函数。远程功能包括可更新的场景,但嵌入式功能是客户的核心统计数据,无需更新这些功能。

标签: javastateapache-flinkflink-statefun

解决方案


是否有远程 Java SDK

今天没有 Java 远程 SDK,但我希望很快就会看到基于 Apache Flink 开发邮件列表上的讨论。

远程 SDK(如 python)是通用 Http 接口的有效包装器。我的意思是 statefun 运行时中没有特定于 python 的逻辑,因此您今天可以用任何语言实现远程函数。显然,flink 社区不想将其强加于人们,因此正在为未来的版本开发新的远程 sdk。

我还可以混合嵌入式和同位/远程功能吗?

是的,没有什么特别的魔法。只需将两个模块都包含在一个部署中即可。任一模块中的函数都可以任意相互发送消息。

您可以参考这个模型服务示例,其中包含嵌入式 java 函数和远程 python 函数。

https://github.com/ververica/flink-statefun-workshop


推荐阅读