选择订阅类型

本文档可帮助您根据业务需求选择合适的 Pub/Sub 订阅类型。

准备工作

Pub/Sub 订阅对比表

下表提供了一些有关为您的应用选择合适的传送机制的指导:

Pub/Sub 订阅支持的功能
使用场景 拉取订阅
  • 大量消息(每秒 GB)。
  • 消息处理的效率和吞吐量至关重要。
  • 在这样的环境中,无法设置具有非自签名 SSL 证书的公共 HTTPS 端点。
推送订阅
  • 必须由同一 webhook 处理的多个主题。
  • App Engine 标准环境和 Cloud Functions 订阅者。
  • 无法设置 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 订阅必须存在 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。

但是,在将数据存储在 Google Cloud 资源(如 BigQuery 表或 Cloud Storage 存储桶)中之前,我们仍建议对 Pub/Sub 系统使用 Dataflow 流水线。

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

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

后续步骤

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