Spark streaming as event processing/handling 解决方案(微服务)
Spark streaming as event processing/handling solution (micro-services)
Spark 批处理为我们的业务带来了很多价值,因为它非常容易横向扩展(我们使用 AWS EMR 和 YARN)。
但是,由于我们最新的专有解决方案遵循微服务架构,因此出现了新的挑战。到目前为止,有 ~230 个微服务充当生产者,其中事件存储在 Kafka 中(这意味着约 230 个 Kafka 主题)。
虽然我们已经设法验证了使用 Spark Streaming 作为事件处理来构建对象的最新状态,我说的对吗我需要每个 Kafka 主题一个 Spark Streaming 应用程序(所以,~230应用)?
如果是这样,我们的集群具有 48 个 vCPU 和 192GiB 内存 只能同时处理 52 个流处理应用程序。这听起来太少了,因为这些应用程序(需要 运行 24 小时)做的不多,因为它们只是每 5 秒提取一次事件并对我们的数据存储执行 CRUD 操作。
我是否怀念使用 Spark 流?您还有什么其他方法或框架 take/use?
这听起来不对,您的微服务不需要 230 个主题,也不需要 230 个 Spark 流应用程序,但是您将为每个分区使用 1 个任务,这意味着您需要 230*(每个主题的分区)核心 运行 您决定构建的 230 或 1 个应用程序,请注意,这取决于流量,但您最好的选择可能是只有一个主题或一组较小的主题,过滤消费。您可以订阅任意数量的主题。
至于用什么建state store,可以看kafka streams或者akka streams。我根本不建议将 Spark Streaming 用于生产应用程序(此声明符合自以为是)。 Akka 流是使用 IMO 最简单的 API,您可能需要对您的商店进行编码,然后 API 在其之上。
Spark 批处理为我们的业务带来了很多价值,因为它非常容易横向扩展(我们使用 AWS EMR 和 YARN)。
但是,由于我们最新的专有解决方案遵循微服务架构,因此出现了新的挑战。到目前为止,有 ~230 个微服务充当生产者,其中事件存储在 Kafka 中(这意味着约 230 个 Kafka 主题)。
虽然我们已经设法验证了使用 Spark Streaming 作为事件处理来构建对象的最新状态,我说的对吗我需要每个 Kafka 主题一个 Spark Streaming 应用程序(所以,~230应用)?
如果是这样,我们的集群具有 48 个 vCPU 和 192GiB 内存 只能同时处理 52 个流处理应用程序。这听起来太少了,因为这些应用程序(需要 运行 24 小时)做的不多,因为它们只是每 5 秒提取一次事件并对我们的数据存储执行 CRUD 操作。
我是否怀念使用 Spark 流?您还有什么其他方法或框架 take/use?
这听起来不对,您的微服务不需要 230 个主题,也不需要 230 个 Spark 流应用程序,但是您将为每个分区使用 1 个任务,这意味着您需要 230*(每个主题的分区)核心 运行 您决定构建的 230 或 1 个应用程序,请注意,这取决于流量,但您最好的选择可能是只有一个主题或一组较小的主题,过滤消费。您可以订阅任意数量的主题。 至于用什么建state store,可以看kafka streams或者akka streams。我根本不建议将 Spark Streaming 用于生产应用程序(此声明符合自以为是)。 Akka 流是使用 IMO 最简单的 API,您可能需要对您的商店进行编码,然后 API 在其之上。