什么是 Pub/Sub?

Pub/Sub 是一种可伸缩的异步消息传递服务,它将生成消息的服务与处理这些消息的服务分离开来。

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

Pub/Sub 用于流式分析和数据集成流水线,以加载和分发数据。它作为面向消息传递的中间件(用于服务集成)或用于并行处理任务的队列同样有效。

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

发布商将事件发送到 Pub/Sub 服务,与处理这些事件的方式或时间无关。然后,Pub/Sub 会将事件传送给做出响应的所有服务。在通过 RPC 进行通信的系统中,发布者必须等待订阅者接收数据。但是,Pub/Sub 中的异步集成提高了整个系统的灵活性和稳健性。

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

常见使用场景

  • 注入用户互动和服务器事件。如需使用最终用户应用中的用户互动事件或您系统中的服务器事件,您可以将这些事件转发到 Pub/Sub。然后,您可以使用 Dataflow 等流处理工具将事件传递到数据库。此类数据库的示例包括 BigQuery、Bigtable 和 Cloud Storage。 利用 Pub/Sub,您可以同时从多个客户端收集事件。
  • 实时事件分布。原始或已处理的事件可提供给您团队和组织的多个应用,以进行实时处理。Pub/Sub 支持“企业事件总线”和事件驱动型应用设计模式。Pub/Sub 可让您与许多用于将事件导出到 Pub/Sub 的系统集成。
  • 在数据库之间复制数据。Pub/Sub 通常用于从数据库分发更改事件。这些事件可用于构建 BigQuery 和其他数据存储系统中数据库状态和状态历史记录的视图。
  • 并行处理和工作流。您可以使用 Pub/Sub 消息与工作器进行通信,从而在多个工作器之间高效分配多项任务。此类任务的示例包括压缩文本文件、发送电子邮件通知、评估 AI 模型以及重新设置图片格式。
  • 企业事件总线。您可以创建企业范围的实时数据共享总线,在整个组织中分发业务事件、数据库更新和分析事件。
  • 来自应用、服务或 IoT 设备的数据流。 例如,SaaS 应用可以发布实时的事件 Feed。或者,住宅传感器可以通过数据处理流水线将数据流式传输到 Pub/Sub,以便在其他 Google Cloud 产品中使用。
  • 刷新分布式缓存。例如,应用可以发布失效事件以更新已更改的对象的 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 上的数据湖中。Google Cloud 控制台的 Pub/Sub 和 Dataflow 界面提供了用于将数据从 Pub/Sub 移动到 Cloud Storage、BigQuery 和其他产品的 Dataflow 模板。您也可以使用与 Apache Spark 的集成,尤其是在使用 Dataproc 进行管理时。使用 Data Fusion 可以直观呈现 Spark + Dataproc 上运行的集成和处理流水线。
  • Monitoring、提醒和日志记录。由 Monitoring 和 Logging 产品支持。
  • Authentication 和 IAM。Pub/Sub 依赖于其他 Google Cloud 产品使用的标准 OAuth 身份验证,并且支持精细的 IAM,从而支持对各个资源进行访问权限控制。
  • API -Pub/Sub 使用标准的 gRPC 和 REST 服务 API 技术以及多种语言的客户端库
  • 触发器、通知和网络钩子。Pub/Sub 提供基于推送的消息,以 HTTP POST 请求的形式发送到 webhook。您可以使用 Cloud Functions 或其他无服务器产品实现工作流自动化。
  • 编排。Pub/Sub 可以声明方式集成到多步骤无服务器 Workflows 中。大数据和分析编排通常由支持 Pub/Sub 触发器的 Cloud Composer 完成。您还可以将 Pub/Sub 与 Application Integration预览版)集成,后者是一个集成式平台即服务 (iPaaS) 解决方案。Application Integration 提供 Pub/Sub 触发器来触发或启动集成。
  • 集成连接器。预览版)您可以使用这些连接器连接到各种数据源。connectors借助连接器,您可以通过透明的标准接口向集成公开 Google Cloud 服务和第三方业务应用。对于 Pub/Sub,您可以创建 Pub/Sub 连接,以便在集成中使用。

后续步骤