什么是 Pub/Sub 和 Pub/Sub Lite?

本页面有助于您了解 Pub/Sub、企业为何需要 Pub/Sub,以及 与类似技术相比,Pub/Sub 具有哪些优势。此外,您还可以了解核心 包含术语“主题”“发布者”和“订阅者”的 Pub/Sub 概念。

Pub/Sub 是一种异步且可伸缩的消息传递服务, 通过处理这些消息的服务来生成消息。

Pub/Sub 允许服务异步通信, 大约为 100 毫秒

Pub/Sub 用于流式分析和数据集成流水线,以提取和分发数据。它与 面向消息传递的中间件,用于服务集成或作为并行任务的队列。

通过 Pub/Sub,您可以创建事件提供方和使用方的系统,称为发布者订阅者。发布者通过广播事件而不是同步远程过程调用 (RPC) 与订阅者异步通信。

发布商将事件发送到 Pub/Sub 服务,而不考虑 处理这些事件的方式或时间。然后 Pub/Sub 将事件传递给对其做出响应的所有服务。在通信系统中 则发布者必须等待订阅者接收数据。不过, Pub/Sub 中的异步集成可提高灵活性 整个系统的稳定性和稳健性。

要开始使用 Pub/Sub,请查看 快速入门:使用 Google Cloud 控制台。 如需更全面的介绍,请参阅构建 Pub/Sub 消息传递系统

常见使用场景

  • 提取用户互动和服务器事件。要使用用户 来自最终用户应用的互动事件或来自您系统的服务器事件,您可能需要 将它们转发到 Pub/Sub然后,您可以使用流处理 工具(如 Dataflow),它会将事件传递给数据库。 此类数据库的示例包括 BigQuery、Bigtable 和 Cloud StoragePub/Sub 可让您从多个 客户端。

  • 实时事件分布。事件,无论是原始事件还是经过处理的事件, 可供整个团队和组织的多个应用使用, 处理时间。Pub/Sub 支持“企业事件总线”和 事件驱动型应用设计模式通过 Pub/Sub 与将事件导出到 Pub/Sub 的许多 Google 系统集成。

  • 在数据库之间复制数据。Pub/Sub 分发来自数据库的更改事件。这些事件可用于 构建包含数据库状态和状态历史记录的视图, BigQuery 和其他数据存储系统。

  • 并行处理和工作流。你可以高效地分配 使用 Pub/Sub 消息在多个工作器之间执行任务 连接到 Cloud Functions。例如压缩文本 文件、发送电子邮件通知、评估 AI 模型以及重新设置格式 图片。

  • 企业事件总线。您可以创建整个企业范围内的实时数据 共享总线、分配业务事件、数据库更新和分析 活动。

  • 来自应用、服务或 IoT 设备的数据流。例如, SaaS 应用可以发布实时事件 Feed。或家用传感器 可将数据流式传输到 Pub/Sub,以便在其他 Google Cloud 产品中使用 通过 Dataflow 流水线。

  • 刷新分布式缓存。例如,应用可以发布 失效事件,以更新已更改对象的 ID。

  • 进行负载均衡来实现可靠性。 例如,服务的实例可能是 部署在 Compute Engine 上的多个可用区中,但订阅了同一个主题。 当服务在任何可用区出现故障时,其他可用区可以继续承担负载 。

Pub/Sub 服务类型

Pub/Sub 包含两项服务:

  • Pub/Sub 服务。此消息传递服务是默认的 是绝佳选择它提供最高的可靠性和 拥有最大的集成功能以及自动化容量管理功能。 Pub/Sub 保证将所有数据同步复制到 并尽最大努力复制到第三个额外可用区。

  • Pub/Sub Lite 服务。单独但类似的广告内容 专为降低成本而打造的服务它的可靠性低于 Pub/Sub。它提供可用区级或区域级主题存储。 可用区级精简版主题仅存储在一个 可用区。区域级精简版主题每秒将数据复制 以异步方式访问可用区此外,Pub/Sub Lite 需要您预预配和管理存储空间和吞吐量容量。 建议将 Pub/Sub Lite 用于 但费用低廉,就说明您需要完成一些额外的运营工作, 可靠性。

有关 Pub/Sub 与 Pub/Sub Lite,请参阅 选择 Pub/Sub 或 Pub/Sub Lite

将 Pub/Sub 与其他消息传递技术进行比较

Pub/Sub 结合了 Apache KafkaPulsar, 传统消息传递中间件(如 Apache ActiveMQ 和 RabbitMQ。此类功能的示例包括死信队列和过滤。

Pub/Sub 通过消息传递中间件采用的另一项功能是 每条消息并行处理,而不是基于分区的消息传递。 Pub/Sub“租用”分别发送给订阅客户端 可跟踪指定消息是否已成功处理。

相比之下,其他可横向扩容的消息传递系统使用分区进行横向扩缩。这会强制订阅者按顺序处理每个分区中的消息,并将并发客户端的数量限制为分区数量。每条消息的处理 最大程度提高订阅者应用的并行性,并帮助确保 发布商/订阅者独立性。

比较服务间通信和服务间通信

Pub/Sub 适用于服务到服务的通信,而不是与最终用户或 IoT 客户端的通信。其他产品更好地支持其他模式:

您可以使用这些服务的组合来构建客户端 -> 服务 -> 数据库模式。例如,请参阅通过 WebSocket 流式传输 Pub/Sub 消息教程。

集成

Pub/Sub 与其他 Google Cloud 产品有许多集成,可创建一个功能齐全的消息传递系统:

  • 流处理和数据集成。Dataflow 支持,包括 Dataflow 模板SQL,它们可用于处理和 数据集成到 BigQuery 中以及 Cloud Storage 上的数据湖中。Dataflow 用于将数据从 Pub/Sub Cloud Storage、BigQuery 和其他产品 Pub/Sub 和 Dataflow 界面 Google Cloud 控制台。您也可以使用 Apache Spark 集成(特别是在使用 Dataproc 进行管理时)。集成和 可以使用 Data Fusion
  • 监控、提醒和日志记录。由 Monitoring 和 日志记录产品。
  • 身份验证和 IAM。Pub/Sub 依赖于标准 OAuth 其他 Google Cloud 产品使用的身份验证功能,并支持精细的 IAM, 对个别资源启用访问权限控制。
  • API。Pub/Sub 使用标准 gRPC 和 REST 服务 API 技术以及多种语言的客户端库
  • 触发器、通知和 webhook。Pub/Sub 提供基于推送的 以 HTTP POST 请求的形式向 webhook 传递消息。您可以使用 Cloud Functions 实现工作流自动化 或其他无服务器产品
  • 编排。Pub/Sub 可以集成到多步无服务器中 工作流程 声明。大数据和分析编排通常使用 Cloud Composer,支持 Pub/Sub 触发器。 您还可以将 Pub/Sub 应用集成预览版)即: 集成平台即服务 (iPaaS) 解决方案。应用 集成提供了一种 Pub/Sub 触发器 以触发或启动集成。
  • 集成连接器预览版)。 借助这些连接器,您可以连接到各种数据源。connectors 使用连接器时,Google Cloud 服务和第三方业务应用都会公开 通过透明的标准界面向您的集成进行集成。对于 Pub/Sub,您可以创建 Pub/Sub 连接 以便在您的集成中使用

核心概念

  • 主题 -发布者向其发送消息的已命名资源。
  • 订阅。一个已命名资源,代表来自以下来源的消息流: 传递至订阅应用的单个特定主题。 如需详细了解订阅和消息传送语义,请参阅订阅者指南
  • 消息 -数据和(可选)属性的组合, 并最终传送给订阅者。
  • 消息属性。发布商可以为广告资源定义的 消息。例如,可以将键 iana.org/language_tag 和值 en 添加到消息中,将消息标记为可供英语订阅者阅读。
  • 发布商。创建消息并向一个或多个主题发送消息的应用。
  • 订阅者 -订阅了一个或多个主题以从其接收消息的应用。
  • 确认(或“ack”)。订阅方发送到 Pub/Sub 的信号 已成功收到消息。已确认的消息会从订阅消息队列中移除。
  • 推送和拉取。两种消息传送方法。订阅者 Pub/Sub 将消息推送到订阅者 或由订阅者从服务中pulling它们。

发布者-订阅者关系可以是一对多(扇出)、多对一(扇入)和多对多,如下图所示:

发布者-订阅者关系

下图展示了如何将消息从发布者传递给订阅者。对于推送传送,在对 推送请求,而对于拉取传送,它需要单独的 RPC。

消息生命周期

后续步骤