Google Dataflow 定价流模式

Posted

技术标签:

【中文标题】Google Dataflow 定价流模式【英文标题】:Google Dataflow Pricing Streaming Mode 【发布时间】:2021-08-24 09:43:00 【问题描述】:

我是 Dataflow 的新手。 我想使用 Dataflow 流媒体模板“Pub/Sub Subscription to BigQuery”来传输一些消息,比如每天 10000 条。 我的问题是关于定价,因为我不明白如何为流模式计算它们,无论是否启用流引擎。 我使用了谷歌计算器,它要求以下内容: 机器类型、作业使用的工作节点数、流式作业或批处理作业、永久磁盘 (PD) 的 GB 数、作业每月运行的小时数。

考虑最简单的情况,因为我不需要很多资源,即

机器类型:n1-standard1 最大工人数:1 工作类型:流媒体 价格:在 us-central1

案例 1:流引擎禁用

使用 vCPU 的小时数 = 730 小时(1 个月始终处于活动状态)。流媒体模式总是如此吗?或者在流式传输模式中可能存在使用率较低的情况? 永久磁盘:430 GB HDD,这是默认值。

所以我会付钱的:

(vCPU)730 x $0.069(成本 vCPU/小时)= $50.37 (PD) 730 x $0.000054 x 430 GB = $16.95 (RAM) 730 x $0.003557 x 3.75 GB = $9.74 总计:77.06 美元,由计算器确认。

案例 2 流媒体引擎已启用。

使用 v CPU 的小时数 = 730 小时 永久磁盘:30 GB HDD,这是默认值

所以我会付钱的:

(vCPU)30 x $0.069(成本 vCPU/小时)= $50.37 (PD) 30 x 0.000054 美元 x 430 GB = 1.18 美元 (RAM)30 x 0.003557 美元 x 3.75 GB = 9.74 美元 总计:61.29 美元外加处理的数据量(流媒体引擎是额外的)

考虑到 1024 字节的消息,我们的流量为 1024 x 10000 x 30 字节 = 0.307 GB,额外费用为 0.307 GB x 0.018 美元 = 0.005 美元(几乎为零)。

实际上,有了这种流量,我在使用 Streaming Engine 时会节省大约 15 美元。 我对么?我的假设和计算是否还有其他需要考虑或有问题的地方? 另外,考虑到数据量少,Dataflow真的适合这种用途吗?还是我应该以不同的方式解决这个问题?

提前谢谢你!

【问题讨论】:

【参考方案1】:

这不是假的,但并不完全准确。

在流式传输模式下,您的 Dataflow 始终侦听 PubSub 订阅,因此您需要全时监听。

在批处理中,您通常启动批处理,它执行其工作,然后停止。

在您的比较中,您认为有一个全时运行的批处理作业。这并非不可能,但我认为它不适合您的用例。


关于流式处理和批处理,一切都取决于您对实时性的需求。

如果您想在 BigQuery 中以低延迟(几秒内)提取数据以获得实时数据,流式传输是不错的选择 如果数据仅每小时或每天更新一次,批处理是更合适的解决方案。

最新评论,如果您的任务只是从 PubSub 获取消息并将流式写入 BigQuery,您可以考虑在 Cloud Run 或 Cloud Functions 上自行编写代码。每天只有 10k 条消息,它将是免费的!

【讨论】:

感谢您的宝贵回复,它给了我关于使用 Cloud Functions 的不同实现的一个很好的提示。但是,回到 Dataflow,我所指的 Streaming Engine 选项是在流模式中,我没有考虑批处理模式。看看(cloud.google.com/dataflow/docs/guides/…)。批处理模式可能更适合我的用例,但我一直在寻找模板化解决方案,从 Pub/Sub 导入的唯一模板是流模式下的模板。告诉我! 是的,当前模板仅在流中。但是,如果您想停用流式传输或对其进行自定义,您可以从 source 开始编写自己的代码。 嗨@guillaumeblaquiere,我尝试了云功能的可能性。它有效,非常适合我。但是我想将它与 Dataflow 中的批处理解决方案进行比较,编辑 PubSubToBigQuery.java 模板。我仍然有引用here 的问题,读取FromSubscription 方法返回一个PCollection,但我需要一个UnboundedSource。然后将其转换为 BoundedSource 并将管道应用于有限数量的数据。你能给我一些提示吗?提前致谢! 以前(几年前)可以将流参数设置为 false 并批量使用 PubSub。我今晚又测试了,已经不行了:(

以上是关于Google Dataflow 定价流模式的主要内容,如果未能解决你的问题,请参考以下文章

现代流式计算的基石:Google DataFlow

尝试在 Dataflow 中使用 Apache Beam 将数据从 Google PubSub 写入 GCS 时出错

使用 Google 的 Cloud HSM 签署可执行文件

谷歌钱包应用内付款:未捕获的 ReferenceError:未定义 goog。 google.payments 与 goog.payments

浅谈Flink的基石——Google Dataflow模型

如何在 google-dataflow 中读取 cassandra