

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 亚马逊 SQS、亚马逊 SNS 还是亚马逊？ EventBridge
<a name="sns-or-sqs-or-eventbridge"></a>

**了解差异并选择适合您的差异** 


|  |  | 
| --- |--- |
|  **目的**  |  了解亚马逊 SQS 和亚马逊 SNS 之间的区别， EventBridge 并确定哪种服务最适合您的需求。  | 
|  **上次更新**  |  2024 年 7 月 31 日  | 
|  **承保服务**  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/decision-guides/latest/sns-or-sqs-or-eventbridge/sns-or-sqs-or-eventbridge.html)  | 

## 简介
<a name="introduction"></a>

 在其上构建应用程序时 AWS，您可能需要帮助来选择正确的服务来处理消息传递、事件驱动架构和解耦组件。 AWS 为此提供了三项关键服务：亚马逊简单队列服务 (Amazon SQS)、亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 和 EventBridge 亚马逊（以前称为活动）。 CloudWatch 
+  Amazon SQS 是一项完全托管的消息队列服务，支持微服务、分布式系统和无服务器应用程序的解耦和扩展。
+  Amazon SNS 是一项高度可用、耐用且安全的 pub/sub 消息服务，允许分离的应用程序使用发布-订阅模式相互通信。
+  Amazon EventBridge 是一款无服务器事件总线，允许您使用来自各种来源的数据连接应用程序并将其路由到目标，从而更轻松地构建事件驱动架构。 AWS Lambda

虽然这三种服务都促进了分离组件之间的通信，但它们的底层架构、用例和功能有所不同。

以下是这些服务之间主要区别的高级视图，可帮助您入门。


|  **类别**  |  **Amazon SQS**  |  **Amazon SNS**  |  **EventBridge**  | 
| --- | --- | --- | --- | 
|  通信模型  |  基于拉取（消费者轮询队列中的消息）  |  基于推送（订阅者在发布时会收到消息）  |  基于推送的。事件驱动（规则匹配事件并路由到目标）  | 
|  Persistence  |  消息会一直持续到消费或过期  |  消息不会持续存在；实时发送给订阅者  |  事件不会持续存在；实时处理  | 
|  交货保障  |  At-least-once交货  |  At-least-onceHTTP/S 配送，Lambda 和 Amazon SQS 只送一次  |  At-least-once交货  | 
|  消息排序  |  FIFO（先进先出）队列确保严格的排序  |  亚马逊 SNS FIFO 主题担保令  |  没有订购保证  | 
|  消息筛选  |  Amazon SQS 无法根据消息来决定消费者。使用亚马逊 SNS 消息筛选和亚马逊 SQS 来实现。 |  使用基于邮件元数据的订阅筛选策略进行邮件过滤，对于 FIFO 主题，邮件内容  |  复杂事件模式匹配和基于内容的过滤  | 
|  支持的订阅者  |  基于拉取的消费者（例如亚马逊或 EC2 Lambda）  |  HTTP/S 终端节点、电子邮件、短信、移动推送、Lambda、Amazon SQS  |  AWS 服务、Lambda、API 目的地、其他 s 中的事件总线 AWS 账户 | 
|  典型用例  |  解耦微服务、缓冲请求、异步处理任务  |  Fanout 通知、 pub/sub 消息、移动推送通知  |  事件驱动架构、实时流处理、跨账户事件共享  | 
|  与其他人集成 AWS 服务  |  Lambda、、 CloudWatch、 AWS KMS IAM  |  Lambda、亚马逊 SQS、Mobile Push、IAM AWS KMS |  Lambda、Step Functions、亚马逊 SQS、亚马逊 SNS、Kinesis、AI、IAM SageMaker CloudWatch  | 

## 差异详情
<a name="differences"></a>

 探索亚马逊 SQS、亚马逊 SNS 之间 EventBridge 以及八个关键领域的差异。其中包括通信模型、持久性、消息排序、筛选、集成、用例、可扩展性和定价。

------
#### [ Communication model ]

**Amazon SQS**
+ 基于拉取的模型，使用者可以主动轮询队列中的消息，从而可以精细控制消息处理速率和独立扩展使用者。

**Amazon SNS**
+ 基于推送的模型，订阅者在消息发布时实时接收消息，从而可以将消息立即传送给多个订阅者。

**Amazon EventBridge**
+ 事件驱动模型，其中事件根据预定义的规则进行匹配，然后路由到目标服务进行处理，从而便于构建被动的、事件驱动的架构。

------
#### [ Persistence and delivery guarantees ]

**Amazon SQS**
+ 消息会一直保留在队列中，直到被消耗或过期，从而确保消息不会丢失。提供传 at-least-once送，保证每条消息至少传送一次，并且有可能出现重复消息。

**Amazon SNS**
+ 消息不会永久保存，而是实时发送给订阅者。为 HTTP/S 订阅者提供 at-least-once配送服务，为 Lambda 和 Amazon SQS 订阅者提供一次性配送。

**Amazon EventBridge**
+ 事件不是持久化的，而是实时处理的。确保精确处理一次，保证每个事件只由目标服务处理一次。

------
#### [ Message ordering ]

**亚马逊 SQS 和亚马逊 SNS**
+ Amazon SQS FIFO 队列和 Amazon SNS FIFO 主题支持 First-In-First-Out有保证的消息顺序，因此适用于需要顺序处理的场景。[有关使用 Amazon SNS 和 Amazon SQS 进行消息排序的更多信息，请参阅 FIFO 主题的消息订购详情](https://docs.aws.amazon.com/sns/latest/dg/fifo-topic-message-ordering.html)。

**Amazon EventBridge**
+ EventBridge 不提供消息顺序保证，而是按任意顺序向目标传送事件。

------
#### [ Message filtering and routing ]

**Amazon SQS**
+ 通过可见性超时（防止重复处理）和死信队列（处理失败的消息）提供基本的筛选功能。

**Amazon SNS**
+ 使用订阅筛选策略提供邮件过滤，允许订阅者根据消息属性有选择地接收消息。

**Amazon EventBridge**
+ 支持高级事件模式匹配和基于内容的过滤，从而实现基于事件内容的精细事件处理和路由。

------
#### [ Supported subscribers and integrations ]

**Amazon SQS**
+ 支持基于拉取的使用者，例如 Amazon EC2 实例或 Lambda 函数，它们可以主动从队列中检索消息。

**Amazon SNS**
+ 支持各种订阅者，包括 HTTP/S 终端节点、电子邮件、短信、移动推送通知、Lambda 函数和 Amazon SQS 队列。

**Amazon EventBridge**
+ 与 Lambda AWS 服务、Step Functions、Amazon SQS、Amazon SNS、Kinesis SageMaker 和 AI 等众多集成，允许基于预定义规则进行事件路由。 EventBridge还内置了与第三方产品的集成 PagerDuty，例如、 DataDog、 NewRelilc。要查看完整列表，请访问 [Amazon EventBridge 目标](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html)。

------
#### [ Typical use cases ]

**Amazon SQS**
+ 通常用于解耦微服务、缓冲请求和异步处理任务，从而实现独立扩展和优雅的故障处理。

**Amazon SNS**
+ 通常用于分组通知、 pub/sub 消息和移动推送通知，便于同时向多个订阅者广播消息。

**Amazon EventBridge**
+ 非常适合构建事件驱动架构、实时流处理和跨账户事件共享，允许跨多个服务构建响应式系统。

------
#### [ Scalability and performance ]

**Amazon SQS**
+ 高度可扩展，可根据消息数量和使用者数量自动扩展，为消息处理提供高吞吐量。

**Amazon SNS**
+ 高度可扩展，能够向大量订阅者传送消息，并可弹性扩展以应对不断增长的发布和订阅需求。

**Amazon EventBridge**
+ 根据传入的事件流量自动扩展，提供低延迟的事件处理和近乎实时的目标交付。

------
#### [ Pricing ]

**Amazon SQS**
+ 定价基于 API 请求数量和传输的数据量，免费套餐包括每月免费 API 请求和数据传输限额。

**Amazon SNS**
+ 定价基于 API 请求数量、发送的通知数量和传输的数据量。Amazon SNS 短信通过 AWS 最终用户消息收费。

**Amazon EventBridge**
+ 根据发布的事件数量和目标调用次数进行定价，免费套餐包括每月的免费事件和调用限额。

------

## 使用
<a name="use"></a>

------
#### [ Amazon SQS ]
+  **开始使用亚马逊 SQS** 

  获取 step-by-step有关设置和使用 Amazon SQS 的说明。它涵盖了创建队列、发送和接收消息以及配置队列属性等主题。

  [浏览指南](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) 
+  **亚马逊 SQS 教程** 

  介绍使用 Amazon SQS 解耦简单应用程序组件的实际示例。它演示了如何使用创建队列、向队列发送消息以及如何处理来自队列的消息 AWS SDKs。

  [浏览教程](https://aws.amazon.com/getting-started/hands-on/send-messages-distributed-applications/) 
+  **编排基于队列的微服务** 

  学习如何设计和运行用于编排基于消息队列的微服务的无服务器工作流程。

  [浏览教程](https://aws.amazon.com/tutorials/orchestrate-microservices-with-message-queues-on-step-functions/) 
+  **发送 Fanout 活动通知** 

  了解如何使用亚马逊 SQS 和 Amazon SNS 实现分组消息场景。

  [浏览教程](https://aws.amazon.com/getting-started/hands-on/send-fanout-event-notifications/)

------
#### [ Amazon SNS ]
+  **开始使用亚马逊 SNS** 

  设置和使用 Amazon SNS 的 step-by-step演练。它涵盖了创建主题、为终端节点订阅主题、发布消息和配置访问权限等主题。

  [浏览指南](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)  
+  **使用亚马逊 SNS 和 Amazon SQS 筛选发布到主题的消息** 

  了解如何使用 Amazon SNS 的邮件筛选功能

  [浏览教程](https://aws.amazon.com/tutorials/filter-messages-published-to-topics/) 
+  **亚马逊 SNS-故障排除** 

  了解如何查看配置信息、监控流程和收集有关 Amazon SNS 的诊断数据。

  [探索课程](https://explore.skillbuilder.aws/learn/course/external/view/elearning/14124/amazon-simple-notification-service-amazon-sns-troubleshooting)

------
#### [ EventBridge ]
+  **亚马逊 EventBridge 用户指南** 

  这份全面的文档涵盖了创建事件总线、定义事件规则、设置目标以及与各种事件集成的主题 AWS 服务。

   [浏览指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html)
+  **亚马逊 EventBridge 教程** 

  该 AWS 文档提供了一系列教程，引导用户了解使用 Amazon 的不同用例和场景 EventBridge。这些教程涵盖了诸如安排自动任务、对 AWS 资源变化做出反应以及与 AWS 服务集成等主题。

   [浏览教程](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-tutorial.html)
+  **AWS 无服务器研讨会-事件驱动架构**

  使用 Ama EventBridge zon 和其他 AWS 无服务器服务构建事件驱动型架构。该研讨会指导参与者完成创建事件总线、定义事件规则和根据事件触发操作的过程。

  [探索工作坊](https://event-driven-architecture.workshop.aws/)
+  **AWS 在线技术讲座-亚马逊简介 EventBridge** 

  获取 Amazon 简介 EventBridge，解释关键概念、功能和用例。技术讲座包括演示和实际示例，以帮助用户了解如何在应用程序 EventBridge 中充分利用。

  [观看视频](https://www.youtube.com/watch?v=TXh5oU_yo9M)
+  **使用 Amazon 构建事件驱动型应用程序 EventBridge** 

  这篇博文探讨了使用 Amazon 构建事件驱动型应用程序的过程。 EventBridge它提供了有关创建事件总线、定义事件模式和设置处理事件的目标的 step-by-step指南。

   [阅读博客文章](https://aws.amazon.com/blogs/compute/building-an-event-driven-application-with-amazon-eventbridge/)
+  **使用 Amazon EventBridge Pipes 在活动制作人和消费者之间创建 Point-to-Point集成** 

  Exp EventBridge lore Amazon Pipes EventBridge ，该功能提供了一种一致且经济实惠的方式来创建活动制作者和使用者之间的 point-to-point集成，无需编写无差异的粘合代码，从而使您可以更轻松地构建事件驱动的应用程序。

   [阅读博客文章](https://aws.amazon.com/blogs/aws/new-create-point-to-point-integrations-between-event-producers-and-consumers-with-amazon-eventbridge-pipes/)

------