本文档可帮助您根据业务需求选择适当类型的 Pub/Sub 订阅。
准备工作
- 了解订阅。
Pub/Sub 订阅比较表
下表提供了一些指导来帮助您为应用选择适当的传送机制:
Pub/Sub 订阅支持的功能 | |
---|---|
使用场景 |
拉取订阅
|
推送通知订阅
|
|
导出订阅
|
|
端点 |
拉取订阅
互联网上具有授权凭据的任何设备都能调用 Pub/Sub API。 |
推送通知订阅
|
|
导出订阅
|
|
负载平衡 |
拉取订阅
|
推送通知订阅
推送端点可以是负载平衡器。 |
|
导出订阅
Pub/Sub 服务会自动平衡负载。 |
|
配置 |
拉取订阅
不需要进行配置。 |
推送通知订阅
|
|
导出订阅
|
|
流控制 |
拉取订阅
订阅者客户端控制传送速率。订阅者可以动态修改确认时限,从而允许将处理消息所用时间设为任意长度。 |
推送通知订阅
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 流式传输消息。
后续步骤
了解每种订阅类型的工作流程: