当我检查状态功能模块时,我发现以下结果。
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配置文件在系统中注册。
状态函数应用程序使用http与Apache Flink运行时进行通信。 Python SDK随附有一个RequestReplyHandler,它基于RESTful HTTP POSTS自动调度函数调用。可以使用任何HTTP框架公开RequestReplyHandler。
如何在JAVA中处理请求?有Java SDK的示例远程功能吗?
我还可以混合使用嵌入式和共置/远程功能吗? 例如,如果我将诸如客户(总和,计数,平均等)的统计信息导出到另一个kafka主题,然后将该主题引入,则可以将远程功能与python sdk一起使用。远程功能包括可更新的方案,但嵌入式功能是客户的核心统计信息,无需更新这些功能。
答案 0 :(得分:1)
是否有远程Java SDK
今天没有Java远程SDK,但基于Apache Flink开发人员邮件列表的讨论,我希望很快能看到。
诸如Python之类的远程SDK实际上是围绕通用Http接口的便捷包装。我的意思是,statefun运行时中没有特定于python的逻辑,因此您现在可以可以以任何语言实现远程功能。显然,flink社区不想强加于人,因此正在为将来的发行版开发新的远程sdk。
我还可以混合使用嵌入式和共置/远程功能吗?
是的,没有特殊的魔法。只需将两个模块都包含在一个部署中,您就可以使用了。任何一个模块中的功能都可以任意相互发送消息。
您可以参考此模型服务示例,其中包含嵌入式Java函数和远程python函数。