本文档旨在帮助您在 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 中,您可以选择可用区级或区域级精简版主题。区域级精简版主题提供与 Pub/Sub 主题相同的可用性 SLA。
请注意这两项服务在消息复制方面的可靠性差异。Pub/Sub 支持同步数据复制,并使用三个区域。区域级精简版主题会将数据复制到次要可用区。可用区级精简版主题仅在一个可用区中复制数据。
业务要求核对清单
以下问题可帮助您选择合适的 Pub/Sub 消息传递服务:
可靠性、最低运营成本和易于开发是否是您的首要任务?使用 Pub/Sub。
您是否愿意在管理主题容量方面产生一些额外的运营开销,是否可以应对可用区级服务固有的可用性风险,并且需要低成本?使用可用区级精简版主题。
您是否需要针对可用区级故障提供一些保护措施?您是否愿意在管理主题容量方面产生额外的运营开销,并且需要最低的每吞吐量费用?使用区域级精简版主题。
如需详细了解 Pub/Sub 和 Pub/Sub Lite 之间的费用差异,请参阅pricing页面。
功能对比表
特征 | 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 精简版主题将数据复制到一个区域内的两个可用区。可用区级 Pub/Sub 精简版主题将数据存储在单个区域内的单个区域中。如需详细了解 Pub/Sub Lite 数据复制,请参阅精简版主题中的数据复制。
信息路由
Pub/Sub 和 Pub/Sub Lite 都可以从所有区域甚至 Google Cloud 外部进行发布和订阅。
Pub/Sub 在全球范围内路由消息。托管在任何区域中的应用都可以将消息发布到单个主题。这些消息会在组织政策允许的最近区域进行处理,并且独立于来源之外转发给订阅者。
Pub/Sub Lite 在一个区域或可用区内路由消息。订阅者必须连接到主题所在区域中的服务实例。因此,发布者和订阅者必须保持与同一区域的网络连接才能进行通信。发布者可以从任何位置向任何主题发布数据,但这可能需要连接到远程区域,因而会增加网络延迟。如果订阅者需要将汇总数据发布到不同位置的主题,则必须连接到每个相关的本地服务实例才能读取消息。
资源命名空间
Pub/Sub 主题和订阅是全球性资源。Pub/Sub 服务可以将消息存储在主题存储政策允许的任何区域中。此外,主题和对该主题的订阅可以存储在不同的项目中,从而实现精细的结算和访问权限控制。最后,无论订阅者使用哪个服务端点连接到 Pub/Sub,或数据发布者使用哪个服务端点,订阅者都将获得相同的数据。
可用区级精简版主题和订阅是可用区级资源。这些资源必须位于同一 Cloud 项目和可用区中。
区域级精简版主题和订阅属于区域级资源。这些资源必须位于同一 Cloud 项目和区域中。
如需查看 Pub/Sub Lite 支持的区域和地区的列表,请参阅 Pub/Sub Lite 位置。
容量管理
Pub/Sub 自动扩缩。 系统会自动预配消息发布的容量,因此您可以按任意速率发送和接收消息,最高可达您为项目配置的配额。
Pub/Sub 精简版需要手动预配。您必须配置每个精简版主题的分区数量。您还必须预配存储和吞吐量容量。可以使用精简版预留预配吞吐量容量。
分发模式
Pub/Sub 支持多种消息传送模式。包括拉取(传统轮询)、推送 (HTTPS POST)、StreamingPull(双向 RPC,可实现最低延迟和最高效率),以及拉取 HTTP REST 和 gRPC。
Pub/Sub Lite 仅支持流式 gRPC 拉取消息传送。为了请求消息,订阅者与每个分区建立双向流式传输连接。
并行数量
Pub/Sub 使用按消息并行处理。这样可以针对单个订阅并行处理来自一个或数千个客户端的任意数量的消息。
Pub/Sub 精简版使用基于分区的并行性。 这会强制客户端在单个客户端实例上以线性顺序处理每个数据分区。这将客户端实例的最大数量限制为最多分区数量。
流处理流水线
Pub/Sub 和 Pub/Sub 精简版会与 Dataflow 集成,以进行无服务器流处理和数据集成。Pub/Sub 可让 Dataflow 更灵活地扩缩,并支持 Dataflow SQL。
如需开始使用 Dataflow 和 Pub/Sub 或 Pub/Sub 精简版,请尝试学习以下教程: