本文档可帮助您选择适合您业务需求的 Pub/Sub 订阅类型。
Pub/Sub 提供以下类型的订阅:
拉取订阅 使用订阅者客户端从 Pub/Sub 服务器请求消息。
推送订阅 使用 Pub/Sub 服务器向订阅者应用发起请求来传送消息。
导出订阅 将消息直接导出到 Cloud de Confiance by S3NS 资源。这些订阅包括:
BigQuery 订阅 将数据导出到 BigQuery 表。
Bigtable 订阅 (预览版) 将数据导出到 Bigtable 表。
Cloud Storage 订阅 将数据导出到 Cloud Storage 存储桶。
Pub/Sub 订阅比较表
下表提供了一些指导来帮助您为应用选择适当的传送机制:
| Pub/Sub 订阅支持的功能 | ||
|---|---|---|
| 使用场景 | 拉取订阅 |
|
| 推送订阅 |
|
|
| 导出订阅 |
|
|
| 端点 | 拉取订阅 | 互联网上具有授权凭据的任何设备都能调用 Pub/Sub API。 |
| 推送订阅 |
可以在公共网络上访问的具有非自签名证书的 HTTPS 服务器。 接收端点可以与 Pub/Sub 订阅分离,因而来自多个 订阅的消息可以发送到单个端点。 |
|
| 导出订阅 | 订阅写入到 Cloud de Confiance 资源,例如 BigQuery 表或 Cloud Storage 存储桶。 | |
| 负载均衡 | 拉取订阅 | 多个订阅者可以对同一个订阅进行拉取调用。 每个订阅者都将收到一部分消息。 |
| 推送订阅 |
推送端点可以充当负载平衡器。 |
|
| 导出订阅 |
Pub/Sub 服务会自动平衡负载。 |
|
| 配置 | 拉取订阅 |
不需要进行配置。 |
| 推送订阅 |
|
|
| 导出订阅 | 订阅导出到的 Cloud de Confiance 资源必须 存在,并且配置了适当的权限。 | |
| 流控制 | 拉取订阅 | 订阅者客户端控制传送速率。订阅者可以 动态修改确认时限,从而允许将处理消息所用时间设为任意长度。 |
| 推送订阅 | Pub/Sub 服务器自动实施流 控制。客户端不需要处理消息流。不过,可以通过传回 HTTP 错误来指示客户端无法处理当前消息负载。 | |
| 导出订阅 | Pub/Sub 会自动实施流控制,以 优化向目标 Cloud de Confiance 资源写入消息。 | |
| 效率和吞吐量 | 拉取订阅 | 通过批量 传送、确认和大规模并行处理,在低 CPU 和带宽下实现高吞吐量。如果使用频繁轮询来最大限度缩短消息传送时间,则可能效率低下。 |
| 推送订阅 | 每个请求传送一条消息并限制未完成消息的最大数量。 | |
| 导出订阅 | Pub/Sub 会动态处理可伸缩性。 | |
何时使用导出订阅
如果没有导出订阅,您需要拉取或推送订阅以及订阅方(例如 Dataflow)来读取消息并将其写入 Cloud de Confiance 资源。如果消息在存储之前不需要进行额外处理,则无需运行 Dataflow 作业。
导出订阅具有以下优势:
部署简单。您可以通过控制台、 Cloud de Confiance by S3NS CLI、客户端库、 或 Pub/Sub API 中的 单个工作流设置导出订阅。
费用低。减少了包含 Dataflow 作业的类似 Pub/Sub 流水线的额外费用和延迟时间。 这种费用优化对于在存储之前不需要进行额外处理的消息传递系统非常有用。
监控最少。导出订阅是多租户 Pub/Sub 服务的一部分,不需要您运行单独的监控作业。
灵活性 。导出订阅提供了 Google 提供的 Dataflow 模板中没有的功能。例如:
BigQuery 订阅可以使用其所附加主题的架构。
Cloud Storage 订阅提供基于文件大小和经过的时间的可配置文件批处理选项。
Bigtable 订阅 (预览版)具有将消息元数据写入专用列族的 内置选项。
但是,如果您的应用需要执行无法使用 单条消息转换 (SMT) 实现的数据转换,然后再将消息写入目标,那么我们建议您使用 Dataflow 流水线。
如需了解如何使用 Dataflow 将数据从 Pub/Sub 流式传输到 BigQuery 并进行转换, 请参阅 从 Pub/Sub 流式传输到 BigQuery。
如需了解如何使用 Dataflow 将数据从 Pub/Sub 流式传输到 Cloud Storage 并进行转换,请参阅 使用 Dataflow 从 Pub/Sub 流式传输消息。
后续步骤
了解每种订阅类型的工作流: