Google Cloud DataFlow 可以用作任务队列来并行处理多个数据吗?



我们目前正在谷歌云平台上评估我们的选项,以寻找以这种方式工作的解决方案。我们期待来自我们的应用程序的大量消息,我们打算使用谷歌云发布/订阅对这些事务进行排队。现在,一条典型的消息可以包含多个 JSON 对象,如下所示:

{
groupId: "3003030330",
groupTitle: "Multiple Payments Processing",
transactions: [
{id: "3030303" , amount: "2000" , to: "XXXX-XXX"},
{id: "3030304" , amount: "5000" , to: "XXXX-XXX"},
{id: "3030304" , amount: "5000" , to: "XXXX-XXX"},
]
}

现在我们需要使用谷歌云数据流将这些交易中的每一个同步并行地传递到我们的支付网关,然后将响应整理到不同的 PCollection 中并将其写入另一个酒吧/订阅主题。 我的困惑是,Google Cloud Dataflow是解决此问题的最有效和可扩展的解决方案,还是使用Kubernetes HorizontalPodAutoScaler根据发布/订阅队列中的消息进行扩展。任何想法和想法将不胜感激。

默认情况下,Cloud Dataflow 可以从 1 个实例自动扩展到 1000 个实例,每个实例都有 4 个 vCPU、15GB 内存和 420GB 永久磁盘,因此,如果您有足够的配额,则可以扩展到 4,000 个核心、15,000 GB 内存和 420 TB 存储使用量。

但是,目前有一个流式处理引擎的测试版,它通过将管道执行从辅助角色 VM 移动到云数据流服务后端,根据传入数据量的变化提供响应更快的自动缩放。这样,它最适合较小的工作计算机类型,并且使用更少的存储空间。

我会使用DataFlow或新的Streaming Engine,我认为它类似于Apache Spark Streaming或Apache Flink Streaming。这一切的缺点可能是GCP供应商锁定。

尽管 Kubernetes 有几种工具并且可能运行良好,但维护环境会产生额外的成本。例如。确保你的 pod/部署顺利运行等,并学习/投资在你的集群上运行 Spark/Flink 流。此外,Kubernetes 尚未在许多生产大数据管道中进行实战测试。此解决方案的优点是没有供应商锁定。

我的两分钱。

最新更新