Pub/Sub 是一种异步消息传递服务,可将产生事件的服务与处理事件的服务分离开。
您可以将 Pub/Sub 用作消息传递的中间件,或是用在流式分析流水线上提取和传送事件。
Pub/Sub 能够长时间存储消息,并能够大规模实时传送消息,而且可用性高,性能稳定。Pub/Sub 服务器可在全球所有 Google Cloud 区域运行。
要立即开始使用,不妨试试从快速入门:使用 Cloud Console开始。如需了解更全面的介绍,请参阅构建一个正常运行的 Pub/Sub 系统。
核心概念
- 主题:发布者向其发送消息的已命名资源。
- 订阅:代表从单个特定主题传送到订阅应用的消息流的已命名资源。 如需详细了解订阅和消息传送语义,请参阅订阅者指南。
- 消息:发布者向主题发送并最终传送给订阅者的数据和(可选)特性的组合。
- 消息特性:发布者可以为消息定义的键值对。例如,可以将键
iana.org/language_tag
和值en
添加到消息中,将消息标记为可供英语订阅者阅读。
发布者-订阅者关系
发布者应用创建主题并将消息发送到主题。订阅者应用创建对主题的订阅以便从其接收消息。 通信可以是一对多(扇出)、多对一(扇入)和多对多,如下图所示。
Pub/Sub 消息流
下图概括介绍了 Pub/Sub 系统的组件以及消息如何在各组件之间传送:
- 发布者应用在 Pub/Sub 服务中创建主题,并向该主题发送消息。消息包含载荷和描述载荷内容的可选特性。
- 该服务确保系统为订阅保留已发布的消息。已发布的消息会一直保留,直到有通过该订阅使用消息的任何订阅者确认为止。
- Pub/Sub 将消息逐个从主题转发到其所有订阅。
- 订阅者通过以下方式接收消息:Pub/Sub 将消息推送到订阅者的所选端点,或订阅者从服务中拉取消息。
- 对于其收到的每条消息,订阅者向 Pub/Sub 服务发送确认信息。
- Pub/Sub 服务会从相关订阅的消息队列中移除已确认的消息。
发布者和订阅者端点
发布者可以是能向 pubsub.googleapis.com 发出 HTTPS 请求的任何应用:App Engine 应用、托管在 Google Compute Engine 或任何其他第三方网络中的 Web 服务、桌面设备或移动设备上安装的应用,甚至可以是浏览器。
拉取订阅者也可以是能向 pubsub.googleapis.com 发出 HTTPS 请求的任何应用。
推送订阅者必须是可以通过 HTTPS 接受 POST 请求的 Webhook 端点。
常见使用场景
- 平衡网络集群中的工作负载。例如,可以在多个工作器(例如 Google Compute Engine 实例)之间高效地分配大量任务。
- 实现异步工作流。例如,订单处理应用可以对某主题下订单,由一个或多个工作器处理该订单。
- 分发事件通知。例如,每当新用户注册时,接受用户注册的服务可以发送通知,并且下游服务可以订阅以接收该事件的通知。
- 刷新分布式缓存。例如,应用可以发布无效化事件以更新发生更改的对象的 ID。
- 将日志记录到多个系统。例如,Google Compute Engine 实例可以将日志写入到监控系统、数据库(方便以后查询)等等。
- 来自各种进程或设备的数据流。例如,住宅传感器可以将数据流式传输到托管在云端的后端服务器。
- 改进可靠性。例如,单地区 Compute Engine 服务可以通过订阅一个公用主题来在其他地区中运行,以便在地区或区域中发生故障时恢复服务。
Pub/Sub 集成
下图展示了 Pub/Sub 如何集成 Google Cloud 的众多组件。
自行试用
如果您是 Google Cloud 新手,请创建一个帐号来评估 Pub/Sub 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
免费试用 Pub/Sub