价格

Pub/Sub 的价格取决于以下因素:

  • 消息提取和传送
  • 跳转功能相关的消息存储:快照和保留的已确认消息

消息提取和传送

消息传送价格

消息提取和传送的费用取决于一个日历月内传输的数据量。每月免费传输前 10 GB 数据。超过 10 GB 之后,消息提取和传送的价格为每 TiB $40。

消息的数据量是以下各项的总和:

  • 编码的消息正文字符串的字节数
  • 每个特性的键和值的大小
  • 时间戳为 20 个字节
  • message_id 字符串的大小
  • 其他可选字段,例如与抢先体验版 API 和其他访问受限 API 相关联的字段。

无论消息大小是多少,每个发布、推送或拉取请求最低按 1000 字节计算。因此,对于小于 1000 字节的消息,在单个请求中对多条此类消息进行批处理费用会更低。

只有发布请求和使用 pull、streamingPull 或 push 操作传送的数据会收取提取和传送费用。其他操作均可免费使用。

如果您使用非美元货币付费,请参阅 Google Cloud SKU 上以您的币种列出的价格。其中列出的是每 TiB(240 字节,约为 1.01 万亿字节)数据的价格。

数据区域出站流量费用

互联网出站流量和 GCP 区域之间的消息传送费用与 Compute Engine 网络费率一致,但存在以下区别:

  • 使用 Pub/Sub 无需支付地区出站流量费用。
  • 流向 Google 产品的出站流量不能免除出站流量费用。

例如,如果将 1 MiB 的消息发布在 us-west1 中并传送给 europe-west1 中的订阅者,则两个不同的 SKU 均会产生费用:

  • 2 MiB 的基础消息传送流量(发布和传送的数据量各为 1 MiB)
  • 从美洲到欧洲、中东和非洲的 1 MiB 区域间数据传送流量

如需查看用量,您可以将结算数据导出到 BigQuery。进行相应设置后,您便可执行如下查询来查看您的用量:

SELECT TIMESTAMP_TRUNC(usage_start_time, day) as usage_date,
  sku.description,
  usage.unit,
  sum(usage.amount) as egress_volume
FROM `BILLING_EXPORT_TABLE`
WHERE
  _PARTITIONTIME >= TIMESTAMP("2019-01-01")
  AND service.description = "Cloud Pub/Sub"
  AND (sku.description like "Internet data%"
      OR sku.description like "Inter-region data%")
GROUP BY usage_date, sku.description, usage.unit;

示例:消息提取和传送

为了举例说明您可能需要支付的操作总费用,假设有这样一个应用,该应用向具有两个订阅的主题发布 1024 KB 消息,传送速率为 1 MiB/秒。假设订阅者能够及时接收,且 Pub/Sub 的提取速率为 1 MiB/秒、传送速率为 2 MiB/秒,总数据传输速率为 3 MiB/秒。经过一个月(30 天)后,产生的数据量是 3 MiB/second x 3600 seconds/hour x 24 hours/day x 30 days/month x 1 month/(2^20 MiB/TiB) = 7.416 TiB。在扣除免费的前 10 GB 后,有 7.406 TiB 的数据需按每 TiB $40 计费,费用为 $296.24。

跨项目计费

如果您在多个项目中使用 Pub/Sub,Pub/Sub 使用费会计入包含所请求资源的项目中:

  • 发布费用计入包含主题的项目中。
  • 订阅费用计入包含订阅的项目中。

例如,如果订阅在项目 A 中,则会对项目 A 收取从订阅中拉取的数据的相关费用,即使该订阅关联的主题属于项目 B 也是如此。

如果项目 A 中的授权服务帐号使用了项目 B 中某个订阅的消息,则会对项目 B 收取从订阅中拉取的数据的相关费用。

价格

以下情形的消息存储费用为每月每 GiB $0.27:

  • 订阅配置为保留已确认的消息,以便使用跳转功能来重新处理此类消息。在此情况下,会对保留的已确认消息收取存储费用。
  • 创建了订阅的快照。在此情况下,会对快照的未确认消息收取消息存储费用。此外,如果在创建快照时,订阅有积压的未确认消息,则会收取一次性费用,金额相当于将相应积压数据存储七天的费用。

与保留所有已确认消息相比,快照是保留消息以供重放的更经济的方法,因为单个快照可以用于多个订阅。快照的可计费数据量通常较小,但会随着快照使用时间的增加而逐渐增大。配置为保留已确认消息的订阅会保留固定期限的消息数据(处于稳定状态),但可能更方便。

示例:保留已确认消息的订阅

假设某主题具有单个订阅且符合以下条件:- 主题具有稳定的 1MiB/秒传入数据速率。- 订阅者可以及时接收订阅数据,以 1 MiB/秒的速度消耗数据,而且新消息积压量可忽略不计。- 订阅配置为将已确认的消息保留 7 天。

在此设置中,已确认的消息量增长速度为 1 MiB/second x 3600 seconds/hour x 24 hours/day = 86.4 GiB/day

7 天后,保留的已确认消息开始过期,存储的已确认消息总量稳定在 7 days x 86.4 GiB/day = 605 GiB。存储此数量的消息每月总费用约为 605 GiB-month x $0.27/GiB-month = $163

示例:快照消息存储费用

快照消息存储费用由发布到快照主题的新消息增量费用以及创建时的一次性费用构成。假设有一个会保留已确认消息的如下订阅快照。除非提前删除快照,否则快照的生命周期为七天,其周期自据以创建该快照的订阅没有积压的未确认消息开始算起。第一分钟发布的数据 (60 MiB) 会存储 7 天 - 1 分钟,第二分钟发布的数据将存储 7 天 - 2 分钟,依此类推。在这种情况下,快照到期时会积压 605 GiB 的数据量(相当于使用了 1/2 x 605 GiB x 7 days = 2118 GiB-days 存储量),这样一个月(30 天)的费用为 2118 GiB-days x (1/30 months/day) x $0.27/GiB-month = $19。因此,使用快照可能要比保留已确认消息更经济。

示例:存在积压消息的订阅快照

如果在创建快照时,订阅有积压的未确认消息,则会收取一次性费用,金额相当于将相应积压数据存储七天整的费用。例如,假设某个订阅积压了 10 GiB 未确认消息。创建快照时的一次性费用为 10 GiB x 7 days / 30 days/month x 0.27/GiB-month = $0.63

资源位置限制的影响

如果消息存储政策强制数据离开某 Google Cloud 区域,则可能会产生额外的区域出站流量(网络)费用。以具备下述特点的消息为例:

  • 发布于 A 区域中
  • 路由到 B 区域中加以存储
  • 传送到 C 区域中的订阅者客户端

在此示例中:

  • 将对包含主题的项目收取从 A 区域到 B 区域的网络出站流量费用。
  • 将对包含订阅的项目收取从 B 区域到 C 区域的出站流量费用。

仅当所发布消息的存储区域与发布区域不同(即 B 区域与 A 区域实际上是两个不同的区域)时,才会对包含主题的项目收取出站流量费用。 仅当所发布消息的存储区域与订阅者客户端所在的区域不同(C 区域与 B 区域是两个不同的区域)时,才会对包含订阅的项目收取出站流量费用。