【问题标题】:Expected problems and limitations of implementing Kafka Producer in Azure Function在 Azure Function 中实现 Kafka Producer 的预期问题和限制
【发布时间】:2023-01-14 09:21:01
【问题描述】:

我有一个相当高级的架构问题,可能没有 100% 明确的答案。我们目前正在考虑在 Azure Functions 中实现 Kafka Producer,而不是在某个容器中运行专用的 Producer 客户端。 Azure Functions 将由一些包含有效负载的 REST API 调用来调用。替代解决方案需要类似的东西,Producer 应用程序将通过一些基于 Java 的框架公开一些自定义 API 端点以获取数据,然后通过 Producer API 将数据传递给 Kafka - 在某些容器上持续运行的 Java 应用程序(如果需要的话) ,对于并行性来说是多余的)。

我的直觉告诉我这种使用 Azure Functions 的方法可能不是一个好的做法,因为据我所知,Kafka 中的 Producer 概念更多的是“连续”的东西,而不是“每条记录”实例化的东西,而不是短暂的作为 Azure Function,它可能在短时间内被实例化数千次。这种方法对我来说似乎不直观,因为我们会为每个传入记录调用整个生产者生命周期,为我们的 Kafka 集群生成大量额外的网络流量,并可能导致消息排序任意(对于某些用例可以忽略不计),忽略事实这可能是一个非常昂贵的解决方案。

但我也可能完全错了,也许这是好的/最佳实践,并且对于我提到的问题没有明显的缺点。从技术上讲,Azure Functions 方法应该更容易扩展,并且根据负载,调用 X Azure Functions 实际上比拥有 24/7 运行的生产者更便宜,但这在很大程度上取决于用例。此外,“自定义生产者”案例中的操作也是需要考虑的,无服务器不需要这种关于操作/部署/维护的考虑。

对此有什么想法或经验吗?

【问题讨论】:

    标签: apache-kafka architecture azure-functions


    【解决方案1】:

    不,生产者不一定是连续的。如果您使用过kafka-console-producer,那么您就会知道这一点。 Lambda/Function 方法也不例外。

    另外,Java 不是必需的。为自己节省一些成本/速度,并且不要在无服务器函数中触发 JVM 启动。或者,如果这样做,则使用 GraalVM 编译本机二进制文件(Quarkus 或 Spring Native 可以提供帮助)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 2019-09-23
      • 1970-01-01
      • 2019-04-23
      • 2016-03-16
      相关资源
      最近更新 更多