【问题标题】:Apache Flink Stateful Functions python vs java performanceApache Flink 有状态函数 python vs java 性能
【发布时间】:2020-08-29 07:52:53
【问题描述】:

开发apache flink stateful function时使用python或java有什么优缺点。

  • 有性能差异吗?对于相同的操作,哪一种效率更高?
  • 我们可以完全在 python 上开发应用程序吗?
  • 一种支持哪些功能,另一种不支持。

【问题讨论】:

    标签: apache-flink flink-statefun


    【解决方案1】:

    StateFun支持嵌入式函数和远程函数。

    • 嵌入式函数捆绑并部署在运行 Flink 的 JVM 进程中。因此,它们必须以 JVM 语言(如 Java)实现,并且它们将是性能最高的。缺点是对功能代码的任何更改都需要重启 Flink 集群。

    • 远程函数是在单独的进程中执行的函数,由 Flink 集群针对发给它们的每个传入消息调用。因此,预计它们的性能不如嵌入式函数,但它们在以下方面提供了很大的灵活性:

      • 选择实现语言
      • 快速放大和缩小
      • 出现故障时快速重启。
      • 滚动升级

    我们可以完全在python上开发应用程序吗?

    是否可以完全用 Python 开发应用程序,请参阅 python greeter example

    一种支持哪些不支持的功能。

    当前功能目前仅支持Java SDK

    • 从入口到函数的更丰富的路由逻辑。您可以通过代码描述的任何路由逻辑。
    • 像表格和缓冲区这样的状态类型很少。
    • 将现有的 Flink 源和接收器公开为入口和出口。

    【讨论】:

    • 不确定这是否是您正在寻找的,但您是否研究过浮士德?一个原生的流式 Python 框架。
    • 这是一个非常有价值的结论。您知道 Native Java 函数的性能会提高多少吗?
    • @Mikki 在不了解更多信息的情况下很难得出结论。但是为在 Flink 进程中执行的函数开票本质上是 Java 中的方法调用,而调用远程函数则涉及 RPC。但是远程功能可以轻松扩展,而嵌入式功能则不那么容易。 (需要有状态升级)
    猜你喜欢
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2021-10-12
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多