什么是 pub/sub 消息收发?

发布-订阅消息收发是一种异步通信模型,可让开发人员在云中轻松构建功能强大且结构复杂的应用程序。在现代云架构中,应用程序被分解为多个规模较小且独立的构建块,称为服务。Pub/sub 消息收发可以为这些分布式系统提供即时事件通知。它支持独立软件模块之间可扩展和可靠的通信。

Pub/sub 消息收发如何运作?

发布-订阅(pub/sub)系统有四大组件。

消息

消息是指从发送者发送到接收者的通信数据。消息数据类型多种多样,可以是字符串、复杂的对象表示文本、视频、传感器数据、音频,甚至其他数字内容。

主题

每条消息都有与之关联的主题。主题所发挥的作用类似于发送者和接收者之间的中间渠道。它维护着对该主题相关消息感兴趣的接收者名单。

订阅者

订阅者是消息的接收方。订阅者必须注册(或订阅)感兴趣的主题。他们可以使用消息并行执行不同的功能或其他工作。

发布者

作为其中一个组成部分的发布者会发送消息。他们会创建关于某主题的消息,然后仅将这些消息一次性发送给该主题的所有订阅者。发布者和订阅者之间的这种交互是一对多关系。发布者无需知道谁在使用广播的信息,而订阅者也无需知道消息来自哪里。

Pub/sub 消息收发系统有哪些功能?

使用发布-订阅(pub/sub)模式开发的应用程序有独立的应用程序及通信逻辑。消息收发基础设施与发布者和订阅者之间的消息传输解耦,并异步向不同的订阅者进行广播。

Pub/sub 通信系统有以下主要功能。

推送

Pub/sub 消息收发会在消息发布到消息主题时即时推送异步事件通知。订阅者会在消息可用时收到通知。

多个传输协议

主题可以连接到多种类型的端点,例如消息队列、无服务器函数、HTTP 服务器和电子邮件地址。

阅读有关 AWS 消息队列的信息 »

扇出

当消息被发送至主题且被复制和推送到多个端点时,会出现扇出情况。扇出提供异步事件通知,这种通知反过来支持并行处理。

筛选

筛选功能让订阅者可以制定消息筛选策略。因此,他们只会收到感兴趣的通知,而不是接收发布到该主题的每一条消息。

复用

在有些情况下,发布者也可以是订阅者。您可以复用消息流,并以内部一致的方式创建相互关联的系统。

Pub/sub 消息收发有哪些好处?

发布-订阅(pub/sub)模型实现了多种现代应用程序中所需的事件驱动型架构。您可以使用事件进行触发和在解耦的服务之间进行通信。事件指的是状态的改变或更新,例如在购物车中放置一件商品。

在构建依赖实时事件的应用程序时,pub/sub 消息收发可为开发人员提供巨大优势。下面概述了一些优点。

消除轮询

消息主题允许即时基于推送的传输,使消息使用者不必再定期检查或轮询新的信息和更新。这可以缩短响应时间和传输延迟,尤其在无法容许延迟的系统中,这两个问题十分令人头疼。

动态定向

Pub/sub 模式让服务的发现变得更简单、更自然,而且不易出错。应用程序在发送消息时不需要再维护对等方名单,发布者将直接发布消息到某个主题。然后,任何感兴趣的一方都可以通过自身端点订阅该主题,并开始接收这些消息。多个订阅者可以更改、升级或消失,而系统会动态进行调整。

独立解耦和扩展

Pub/sub 使软件变得更灵活。发布者和订阅者可以解耦并各自独立运作,这使您可以独立地对其进行开发和扩展。您可以决定在某月采用一种方式处理订单,然后在下个月改用另一种方式。添加或更改功能不会在系统中产生连锁反应,因为 pub/sub 允许您灵活调整各个组件的协同方式。

简化通信

通信和集成所用的代码名列最难写的代码。发布-订阅模型通过使用消息主题的单一连接移除所有的点对点连接,从而降低了它们的复杂程度。主题将管理订阅,决定哪些消息应传送到哪些端点。回拨的减少实现了松耦合,而且代码也更容易维护与扩展。

持久性

Pub/sub 消息收发服务通过在多个服务器上存储相同消息的副本,通常可以提供非常高的持久性和“至少一次”交付。

安全性

消息主题会对尝试发布内容的应用程序进行身份验证,从而允许您使用加密的端点对通过网络传输的消息进行保护。

Pub/sub 消息收发有哪些使用案例?

下面概述了发布-订阅(pub/sub)消息收发系统的热门使用案例。

执行并行异步处理

发布到某消息主题的事件可以触发多个工作线程即时执行必要但不相关的任务。

传输应用程序和系统警报

立即向受影响的应用程序组件和您的用户传输关键更新和异步事件通知。

管理异步工作流

在应用程序中中继事件、在数据存储之间移动数据、刷新分布式缓存,或更新业务系统中的记录。

平衡工作负载

将任务分为一组以进行批处理,或把较大的任务分解成多个小任务,以及使用消息队列在多个工作线程之间拆分工作。

多个系统的日志

记录事件以供后期分析,记录操作和安全性日志,或进行存档以满足备份或合规性要求。

对复制使用扇出

在生产和开发环境之间复制数据,或使用实时数据进行开发和测试。

协调无服务器应用程序

扇出异步事件通知到分布式功能和消息队列,以便协调您的无服务器应用程序的组件。

流式传输 IoT 数据

Pub/sub 模式是非常强大的物联网(IoT)设备交互方式。设备可以轻松地将数据流式传输到后端系统或相互之间进行传输。

消息队列和 pub/sub 消息收发之间有什么区别?

消息队列是用于无服务器和微服务架构的另一种异步通信方式。消息在被处理和删除之前一直存储在队列中。消息队列要求发送者了解他们在与谁交换消息。消息排序也有可能在系统中形成瓶颈。

相比之下,发布-订阅(pub/sub)模式提供更高的灵活性。多个感兴趣的订阅者可以同步以及异步接收消息。发布者不需要知道谁是订阅者。消息处理更可扩展而且更可靠,可以提供更出色的性能。

阅读有关 AWS 上的无服务器技术的信息 »

AWS 如何满足您的 pub/sub 消息收发需求?

Amazon Web Services(AWS)提供两种适用于不同发布-订阅(pub/sub)应用程序的服务。

Pub/sub API

AWS AppSync 是一项完全托管式服务,可用于创建无服务器 GraphQL 和 pub/sub API 以简化应用程序开发。您可以创建单个端点,以便安全地查询、更新或发布数据。

使用 AWS AppSync 构建的 pub/sub API 使您能够通过无服务器 WebSocket 连接向订阅的 API 客户端发布实时数据更新。您可以为各种使用案例打造吸引人的实时体验。例如,您可以提供最新的游戏得分、财务数据、受众参与、投票,或位置感知功能,如地图和推送通知营销。

以下是一些您可以通过使用 AWS AppSync 达成的目标:

  • 只需通过单个网络请求,即可访问一个或多个源或微服务中的数据
  • 通过离线数据同步、版本控制和冲突解决方案,与数据交互(甚至是离线)并更新数据
  • 只需要为对 API 的请求和发送给已连接的客户端的任何实时消息付费

Pub/sub 消息收发

Amazon Simple Notification Service(SNS)让您可以使用 pub/sub 消息收发模型轻松地构建应用程序。您可以在您的应用程序中以可扩展而且经济高效的方式发送消息给客户或其他应用程序。

Amazon SNS 提供多项功能:

  • 分布式系统、微服务和事件驱动型无服务器应用程序之间的高吞吐量、基于推送的多对多消息收发
  • 消息加密和流量隐私
  • 跨 AWS 类别扇出功能,例如分析、计算、容器、数据库、物联网(IoT)、机器学习(ML)、安全性和存储。

立即创建免费的 AWS 账户,开始使用 AWS 上的 pub/sub。

AWS 上的后续步骤

查看其他与产品相关的资源
探索免费的物联网 
注册免费账户

立即享受 AWS 免费套餐。

注册 
开始在控制台中构建

在 AWS 管理控制台中开始构建。

登录