在开发apache flink有状态函数时,使用python或java有哪些优点和缺点。性能有什么不同吗?对于相同的操作,哪一个更有效?我们能完全在python上开发应用程序吗?一个支持哪些功能,另一个不支持哪些功能。
5ssjco0h1#
statefun支持嵌入式功能和远程功能。嵌入式函数被捆绑并部署在运行flink的jvm进程中。因此,它们必须用jvm语言(如java)实现,而且它们的性能最好。缺点是对函数代码的任何更改都需要重新启动flink集群。远程函数是在一个单独的进程中执行的函数,flink集群会为发送给它们的每个传入消息调用这些函数。因此,预期它们的性能不如嵌入式功能,但它们在以下方面提供了极大的灵活性:选择实现语言快速放大和缩小故障时快速重启。滚动升级我们能完全在python上开发应用程序吗?是否可以完全用python开发应用程序,请参见pythongreeter示例。一个支持哪些功能,另一个不支持哪些功能。当前只有java sdk支持当前功能:从入口到函数的更丰富的路由逻辑。您可以通过代码描述的任何路由逻辑。几乎没有更多的状态类型,如表和缓冲区。暴露现有的flink源和汇作为入口和出口。
1条答案
按热度按时间5ssjco0h1#
statefun支持嵌入式功能和远程功能。
嵌入式函数被捆绑并部署在运行flink的jvm进程中。因此,它们必须用jvm语言(如java)实现,而且它们的性能最好。缺点是对函数代码的任何更改都需要重新启动flink集群。
远程函数是在一个单独的进程中执行的函数,flink集群会为发送给它们的每个传入消息调用这些函数。因此,预期它们的性能不如嵌入式功能,但它们在以下方面提供了极大的灵活性:
选择实现语言
快速放大和缩小
故障时快速重启。
滚动升级
我们能完全在python上开发应用程序吗?
是否可以完全用python开发应用程序,请参见pythongreeter示例。
一个支持哪些功能,另一个不支持哪些功能。
当前只有java sdk支持当前功能:
从入口到函数的更丰富的路由逻辑。您可以通过代码描述的任何路由逻辑。
几乎没有更多的状态类型,如表和缓冲区。
暴露现有的flink源和汇作为入口和出口。