本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
什么是 Amazon Simple Queue Service?
Amazon Simple Queue Service (AmazonSQS) 提供安全、耐用且可用的托管队列,可让您集成和分离分布式软件系统和组件。Amazon SQS 提供常见的结构,例如死信队列和成本分配标签。它提供了一种通用 Web 服务API,您可以使用 Amazon SDK支持的任何编程语言访问该服务。
使用 Amazon 的好处 SQS
-
安全 — 您可以控制谁可以向 Amazon SQS 队列发送消息和接收来自该队列的消息。您可以选择通过使用默认的 Amazon SQS 托管服务器端加密 (SSE) 或使用在 () 中管理的自定义SSE密钥来保护队列中的 Amazon Key Management Service 消息内容来传输敏感数据。Amazon KMS
-
耐久性 — 为了您的消息安全,Amazon 将其SQS存储在多台服务器上。标准队列支持at-least-once 消息传送,FIFO队列支持精确一次的消息处理和高吞吐量模式。
-
可用性 — Amazon SQS 使用冗余基础设施提供对消息的高度并发访问,并为生成和使用消息提供高可用性。
-
可扩展性 — Amazon SQS 可以独立处理每个缓冲请求,透明地扩展以应对任何负载增加或峰值,无需任何配置指令。
-
可靠性 — Amazon 在处理期间SQS锁定您的消息,因此多个生产者可以同时发送消息,多个消费者可以同时接收消息。
-
自定义 – 您的队列不必完全相同,例如,您可以设置队列的默认延迟。您可以使用亚马逊简单存储服务 (Amazon S3) Service 或 Amazon DynamoDB 存储大于 256 KB 的消息内容,SQS亚马逊持有指向 Amazon S3 对象的指针,也可以将大消息拆分为较小的消息。
基本的亚马逊SQS架构
本节概述了分布式消息系统的各个部分,并解释了 Amazon SQS 消息的生命周期。
分布式队列
分布式消息系统有三个主要部分:分布式系统的组件、队列(分布在 Amazon SQS 服务器上)和队列中的消息。
在以下场景中,您的系统有多个创建者(向队列发送消息的组件)和使用者(从队列接收消息的组件)。队列(存放消息 A 到 E)将消息冗余存储在多SQS台 Amazon 服务器上。
消息生命周期
以下场景描述了队列中 Amazon SQS 消息从创建到删除的生命周期。
创建者(组件 1)将消息 A 发送到队列,消息以冗余方式分布在 Amazon SQS 服务器上。
使用者(组件 2)准备好处理消息时,就从队列使用消息,然后返回消息 A。在处理消息 A 期间,它仍保留在队列中,并且在可见性超时期间不返回至后续接收请求。
使用者(组件 2)从队列中删除消息 A,以阻止该消息在可见性超时过期后被再次接收和处理。
注意
Amazon 会SQS自动删除队列中已超过最大消息保留期限的消息。默认的消息保存期为 4 天。不过,您可使用 SetQueueAttributes
操作将消息保存期设为介于 60 秒和 1209600 秒(14 天)之间的值。
亚马逊SQS、亚马逊 MQ 和亚马逊之间的区别 SNS
Amaz on SQS SNS、Ama
Amaz SQS on 将分布式软件系统和组件分离并扩展为队列服务。它通常通过单个订阅用户来处理消息,非常适合对顺序和防止消息丢失有严格要求的工作流程。为了实现更广泛的分发,Amazon SQS 与Amazon集成SNS可以实现粉丝传送消息模式
Amazon SNS 允许出版商通过主题向多个订阅者发送消息,这些主题充当沟通渠道。订阅者使用支持的终端节点类型接收已发布的消息,例如 Amazon Amazon Data FirehoseSQS、Lambda HTTP、、电子邮件、移动推送通知和移动短信 () SMS。该服务非常适合需要即时通知的场景,例如实时用户参与或警报系统。为防止订阅者离线时消息丢失,将 Amazon SNS 与 Amazon SQS 队列消息集成可确保一致传送。
Amazon MQ 最适合希望从传统消息代理迁移的企业,支持AMQP和等标准消息协议,以及 Apache Active
下表概述了每种服务的资源类型:
资源类型 | Amazon SNS | Amazon SQS | Amazon MQ |
---|---|---|---|
同步 | 否 | 否 | Yes |
异步 | 是 | 是 | Yes |
队列 | 否 | 是 | Yes |
发布/订阅消息收发 | Yes | 否 | Yes |
消息代理 | 否 | 否 | Yes |
对于可以从几乎无限的可扩展性和简单性中受益的新应用程序,建议同时使用Amazon SNS 和Amazon APIs。SQS他们通常以其 pay-as-you-go定价为大批量应用程序提供更具成本效益的解决方案。我们建议 Amazon MQ 从依赖于与APIs诸如JMS高级消息队列协议 (AMQP)、MQTT、 OpenWire和简单文本消息协议 () 之类的协议兼容的现有消息代理中迁移应用程序。STOMP