选择 Pub/Sub 或 Pub/Sub Lite

本文档旨在帮助您在 Pub/Sub 和 Pub/Sub Lite 之间进行选择。若要阅读本文档,您需要熟悉 Pub/Sub 的基本概念,例如主题和订阅。如果您刚接触 Pub/Sub,请先阅读什么是 Pub/Sub

Pub/Sub 和 Pub/Sub Lite 都是可横向伸缩代管式消息传递服务。这些服务可以处理大量数据,并支持较大的存储需求。Pub/Sub 通常是大多数应用集成和分析使用场景的默认解决方案。它功能丰富且全代管式。对于消息传递吞吐量更稳定、工作负载可以从基于分区的系统中受益且成本至关重要的应用,建议使用 Pub/Sub Lite。

Pub/Sub 提供了更多功能,即按消息并行处理、全局路由和自动伸缩资源容量。在消息复制方面,Pub/Sub 保证同步复制。

Pub/Sub Lite 是一种基于分区的解决方案,可通过牺牲运营工作负载、全球可用性和某些功能来实现经济高效。Pub/Sub Lite 要求您手动预留和管理资源容量。在 Pub/Sub Lite 中,您可以选择可用区级或区域级 Lite 主题。区域性 Lite 主题的可用性服务等级协议 (SLA) 与 Pub/Sub 主题相同。

请注意这两项服务在消息复制方面的可靠性差异。Pub/Sub 支持同步数据复制,并使用三个可用区。区域性精简版主题会将数据复制到辅助可用区。区域性精简版主题仅在一个可用区中复制数据。

业务要求核对清单

以下问题有助于您选择合适的 Pub/Sub 消息传递服务:

  • 可靠性、最低的运维成本和易于开发是您的首要考虑因素吗?使用 Pub/Sub。

  • 您是否愿意在管理主题容量方面承担一些额外的运维开销,是否能应对区域性服务固有的可用性风险,以及是否需要低成本? 使用可用区级精简版主题。

  • 您是否需要针对可用区故障采取一些保护措施,是否愿意在管理主题容量方面承担额外的运营开销,以及是否需要尽可能降低每吞吐量费用?使用区域级精简版主题。

如需详细了解 Pub/Sub 和 Pub/Sub Lite 之间的费用差异,请参阅价格页面。

功能对比表

功能 Pub/Sub Pub/Sub Lite
Access Transparency
容量 自动供应 使用前供应
客户端库语言 Java、Python、Go、Node.js、C++、C#、PHP、Ruby、SAP、ABAP Java、Python、Go
跨项目订阅
客户管理的加密密钥
死信主题
仅传送一次
集成
消息过滤 是(对于消息属性)
信息复制
信息路由 全球 可用区级或区域级
消息架构验证
单个地区中的多个区域 单个区域中的单个可用区或双可用区
有序传送 按键排序 每个分区的排序
消息确认跟踪 每条消息 每个分区游标
价格 用多少,付多少 支付您供应的容量
REST 端点
资源命名空间 全球 可用区级或区域级
保留期限 最长 31 天 无限制
Service 端点 全球和地区 区域
存储 无限制 无限制
订阅

数据复制

Pub/Sub 主题会将数据复制到一个区域内的三个可用区。如需详细了解 Pub/Sub 数据复制,请参阅主题中的数据复制

区域性 Pub/Sub Lite 主题会将数据复制到一个区域内的两个可用区。可用区级 Pub/Sub Lite 主题会将数据存储在某个区域内的单个可用区中。如需详细了解 Pub/Sub Lite 数据复制,请参阅Lite 主题中的数据复制

信息路由

Pub/Sub 和 Pub/Sub Lite 都可以从所有区域(甚至 Google Cloud 之外)发布和订阅。

Pub/Sub 在全球范围内路由消息。托管在任何区域中的应用都可以将消息发布到单个主题。这些消息在组织政策允许的最近区域内处理并转发给订阅者,无论来源为何。

Pub/Sub 精简版会在区域或可用区内路由消息。订阅者必须连接到主题所在区域中的服务实例。因此,发布者和订阅者必须保持与同一个区域的网络连接才能通信。发布商可以从任何地方向任何主题发布数据,但这可能需要连接到远程区域,从而增加网络延迟时间。如果订阅者需要将汇总数据发布到不同位置的主题,则必须连接到每个相关的本地服务实例才能读取消息。

资源命名空间

Pub/Sub 主题和订阅是全球性资源。Pub/Sub 服务可以将消息存储在主题存储政策允许的任何区域中。此外,主题和对该主题的订阅可以存储在不同的项目中,从而实现精细的结算和访问权限控制。最后,无论订阅者使用哪个服务端点连接到 Pub/Sub 或者数据发布者使用哪个服务端点,订阅者都会获得相同的数据。

地区性精简版主题和订阅是地区性资源。这些资源必须位于同一 Cloud 项目和区域中。

地区性精简版主题和订阅是区域性资源。 这些资源必须位于同一 Cloud 项目和区域中。

如需查看 Pub/Sub Lite 支持的区域和可用区列表,请参阅 Pub/Sub Lite 位置

容量管理

Pub/Sub 自动扩缩。 系统会自动预配消息发布的容量,因此您可以按任意速率发送和接收消息,最高可达您为项目配置的配额。

Pub/Sub 精简版需要手动预配。您必须配置每个精简版主题的分区数量。您还必须预配存储和吞吐量容量。可以使用精简版预留预配吞吐量容量。

分发模式

Pub/Sub 支持多种消息传送模式。这些模式包括 Pull(传统轮询)、Push (HTTPS POST)、StreamingPull(双向 RPC,实现最短延迟时间和最高效率)以及通过 HTTP REST 和 gRPC 拉取。

Pub/Sub 精简版仅支持流式传输 gRPC 拉取消息传送。为了请求消息,订阅者需要为每个分区建立双向流式传输连接。

最大并行数量

Pub/Sub 使用按消息并行处理。这样可以针对单个订阅并行处理来自一个或数千个客户端的任意数量的消息。

Pub/Sub 精简版使用基于分区的并行性。 这会强制客户端在单个客户端实例上以线性顺序处理每个数据分区。这将客户端实例的最大数量限制为最多分区数量。

流处理流水线

Pub/Sub 和 Pub/Sub 精简版会与 Dataflow 集成,以进行无服务器流处理和数据集成。Pub/Sub 可让 Dataflow 更灵活地扩缩,并支持 Dataflow SQL

如需开始使用 Dataflow 和 Pub/Sub 或 Pub/Sub 精简版,请尝试学习以下教程: