Amazon Simple Queue Service
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

什么是 Amazon Simple Queue Service?

Amazon Simple Queue Service (Amazon SQS) 提供了可靠的、高度可扩展的托管队列,以在消息在应用程序或微型服务之间移动时存储消息。它在分布式应用程序组件之间移动数据并帮助您分离这些组件。Amazon SQS 提供熟悉的中间件构造,如死信队列和毒丸管理。它还提供了一个泛型 Web 服务 API 并且可通过 AWS 开发工具包支持的任何编程语言访问。Amazon SQS 支持标准队列和 FIFO 队列

Amazon SQS 有哪些用途?

当您需要每个唯一消息仅在如下类似的情况中使用一次时,请使用 Amazon SQS:

  • 解耦应用程序的组件 – 您有一个工作项目队列,并且想要独立地跟踪每个项目的成功完成。Amazon SQS 将跟踪 ACK/FAIL 结果,因此应用程序不必保留永久检查点或游标。在配置的可见性超时过后,Amazon SQS 将删除已确认的消息并重新传递失败的消息。

  • 配置单个消息延迟 – 您有一个作业队列,并且您需要为各个作业计划延迟。利用标准队列,您可配置各个消息,使之具有长达 15 分钟的延迟。

  • 动态增加读取时的并发或吞吐量 – 您有一个工作队列,并且想要添加更多使用者直至清除了积压。Amazon SQS 不需要预先预置。

  • 透明地扩展 – 您缓冲请求,并且负载由于偶尔的负载峰值或业务的自然发展而发生变动。由于 Amazon SQS 可独立地处理每个缓冲的请求,因此 Amazon SQS 可透明地扩展来处理负载,而不必有来自您的任何预置指示。

我需要哪种类型的队列?

标准队列 FIFO 队列

在所有区域中可用。

高吞吐量 – 标准队列具有近乎无限的每秒事务数量 (TPS)。

至少传递一次 – 至少传递消息一次,但偶尔传递消息的多个副本。

最大努力排序 – 消息偶尔可能按不同于其发送时的顺序传递。

先进先出传递 – 严格保持消息的发送和接收顺序。

仅传输一次处理 – 消息传递一次并在使用者处理并删除它之前保持可用。不会将重复项引入到队列中。

有限吞吐量 – 每秒 300 个事务 (TPS)。

当吞吐量很重要时,请在应用程序之间发送数据,例如:

  • 将实时用户请求从密集型后台工作中分离:让用户在调整媒体大小或对媒体编码时上传媒体。

  • 将任务分配给多个工作程序节点:处理大量信用卡验证请求。

  • 将消息分批以便进一步处理:计划要添加到数据库的多个条目。

当事件的顺序重要时,请在应用程序之间发送数据,例如:

  • 确保按正确的顺序执行用户输入的命令。

  • 通过按正确的顺序发送价格修改来显示正确的产品价格。

  • 防止学员在注册账户之前参加课程。

Amazon SQS 的主要功能是什么?

Amazon SQS 提供以下主要功能:

  • 冗余基础设施 – 标准队列支持至少一次消息传送,而 FIFO 队列仅支持一次消息处理。Amazon SQS 提供对消息的高度并发的访问以及对创建和使用消息的高可用性。

  • 多个创建者和使用者 – 您的系统的多个部分可以同时发送或接收消息。Amazon SQS 在处理期间锁定消息,防止您的系统的其他部分同时处理消息。

  • 每个队列的设置均可配置 – 并非您的所有队列都要完全相同. 例如,可以针对比其他消息需要更长处理时间的消息优化一个队列。

  • 可变消息大小 - 您的消息大小最大可以为 262144 字节 (256 KB)。您可以使用 Amazon Simple Storage Service (Amazon S3) 或 Amazon DynamoDB 存储大消息的内容,Amazon SQS 将保留指向 Amazon S3 对象的指针。有关更多信息,请参阅通过 Amazon S3 管理 Amazon SQS 消息。您也可以将一条大消息拆分成多条小消息。

  • 访问控制 - 您可以控制谁可以从队列发送和接收消息。

  • 延迟队列 - 您可以在队列中设置默认延迟,以便将所有已排队消息的传送推迟指定的一段时间。使用 CreateQueue 创建队列时您可以设置延迟值,您也可以用 SetQueueAttributes 更新该值。 如果您更新该值,新的值仅影响更新后排队的消息。

  • PCI 合规性

  • HIPAA 合规性

Amazon SQS 的基础架构是什么?

整个系统中有三个主要的参与者:

  • 分布式系统的组件

  • 队列

  • 队列中的消息

在下图中,您的系统有多个向队列发送消息以及从队列接收消息的组件。该图显示,具有消息 (A-E) 的单一队列冗余地保存在多台 Amazon SQS 服务器中。