选择订阅类型

本文档可帮助您选择合适的 Pub/Sub 类型 提供更符合您业务需求的订阅方案。

准备工作

Pub/Sub 订阅比较表

下表提供了一些指导来帮助您为应用选择适当的传送机制:

Pub/Sub 订阅支持的功能
使用场景 拉取订阅
  • 大量消息(每秒 GB)。
  • 消息处理的效率和吞吐量至关重要。
  • 具有公共 HTTPS 端点的 无法设置非自签名 SSL 证书。
推送通知订阅
  • 必须由同一个 Webhook 处理的多个主题。
  • App Engine 标准环境和 Cloud Run 函数订阅者。
  • 无法设置 Google Cloud 依赖项(如凭据和客户端库)的环境。
导出订阅
  • 大量消息,可扩展到多个用户 每秒处理数百万条消息。
  • 消息会直接发送到 Google Cloud 资源 而无需进行任何其他处理
端点 拉取订阅

互联网上任何拥有授权凭据的设备都能 来调用 Pub/Sub API

推送订阅
  • 可通过 上的非自签名证书访问的 HTTPS 服务器 公共网络。
  • 接收端点可以与 通过 Pub/Sub 订阅 订阅发送到单个端点。
导出订阅
  • BigQuery 数据集和表, BigQuery 订阅。
  • Cloud Storage 的 Cloud Storage 存储桶 订阅。
负载平衡 拉取订阅
  • 多个订阅者可以对同一个应用进行拉取调用 “已共享”订阅。
  • 每个订阅者都会收到一部分消息。
推送通知订阅

推送端点可以是负载平衡器。

导出订阅

Pub/Sub 服务会自动平衡负载。

配置 拉取订阅

不需要进行配置。

推送通知订阅
  • App Engine 应用无需配置 与订阅者属于同一项目。
  • 不需要在 Google Cloud 控制台中进行推送端点验证。
  • 端点必须支持使用 DNS 名称进行访问,并且安装有 SSL 证书。
导出订阅
  • BigQuery 订阅必须具有 BigQuery 数据集和表,并且已配置适当的权限。
  • 必须为存储分区 Cloud Storage 订阅,已配置 相关权限。
流控制 拉取订阅

订阅者客户端控制传送速率。订阅者可以动态修改确认时限,从而允许将处理消息所用时间设为任意长度。

推送通知订阅

Pub/Sub 服务器会自动实现流控制。无需在客户端处理消息流。 不过,可以通过传回 HTTP 错误来指示客户端无法处理当前消息负载。

导出订阅

Pub/Sub 服务器会自动实现流控制,以优化向 Google Cloud 资源写入消息的操作。

效率和吞吐量 拉取订阅

通过在 CPU 和带宽较低时实现高吞吐量, 批量传送、确认和大规模并行 。如果使用积极的轮询来最大限度缩短消息传送时间,则可能效率低下。

推送订阅

每个请求传送一条消息, 未完成的消息。

导出订阅

可伸缩性由 Pub/Sub 服务器动态处理。

何时使用导出订阅

如果没有导出订阅,您需要拉取或推送订阅以及订阅者(例如 Dataflow)来读取消息并将其写入 Google Cloud 资源。如果消息在存储之前不需要额外处理,则无需运行 Dataflow 作业的开销。

导出订阅具有以下优势:

  • 部署简单。您可以通过 Google Cloud CLI、客户端库 或 Pub/Sub API

  • 费用低。降低类似产品获得的额外费用和延迟时间 包含 Dataflow 作业的 Pub/Sub 流水线。 此费用优化适用于不需要在存储前进行额外处理的消息传递系统。

  • 监控最少。导出订阅是多租户 Pub/Sub 服务的一部分,您无需运行单独的监控作业。

  • 灵活性。BigQuery 订阅可以使用 主题的架构,此架构无法通过 基本 Dataflow 模板,用于从 Pub/Sub 到 BigQuery。同样,Cloud Storage 订阅会根据文件大小和经过的时间提供可配置的文件批处理选项,这些选项无法在基本 Dataflow 模板中配置,无法用于从 Pub/Sub 写入 Cloud Storage。

不过,Dataflow 流水线 推荐用于某些数据的 Pub/Sub 系统 必须先进行转换,然后才能将数据存储在 Google Cloud 资源,例如 BigQuery 表或 Cloud Storage 存储桶。

如需了解如何使用 Dataflow 将经过转换的数据从 Pub/Sub 流式传输到 BigQuery,请参阅从 Pub/Sub 流式传输到 BigQuery

如需了解如何使用 Dataflow 将经过转换的数据从 Pub/Sub 流式传输到 Cloud Storage,请参阅使用 Dataflow 从 Pub/Sub 流式传输消息

后续步骤

了解每种订阅类型的工作流程: