队列类型

Amazon SQS 针对不同的应用程序要求提供两种队列类型:

标准队列

无限吞吐量:标准队列支持使每个 API 操作的每秒事务数 (TPS) 几乎不受限制。

至少一次交付:一条消息至少交付一次,但偶尔会传送消息的多个副本。

最优排序:有时,邮件的交付顺序可能与发送顺序不同。

FIFO 队列

高吞吐量:默认情况下,FIFO 队列每秒最多支持 300 条消息(每秒 300 次发送、接收或删除操作)。如果每次操作批处理 10 条消息(最多),FIFO 队列每秒最多可支持 3,000 条消息。如果您需要更高的吞吐量,可以在 Amazon SQS 控制台上为 FIFO 启用高吞吐量模式,该模式将支持每秒多达 24,000 条消息(使用批处理),或者在不进行批处理的情况下每秒最多支持 2,400 条消息。

“正好一次”处理:消息只交付一次,在使用者处理并删除它之前一直可用。队列中不会引入重复项。

先进先出交付:严格保持消息的发送和接收顺序(即先进先出)。 

您可以在许多情况下使用标准消息队列,只要您的应用程序可以处理多次到达且无序的消息,例如:

  • 将实时用户请求与密集的后台工作分离:让用户在调整媒体大小或编码媒体的同时上传媒体。
  • 将任务分配给多个 Worker 节点:处理大量信用卡验证请求。
  • 批处理消息以供将来处理:计划将多个条目添加到数据库中。

FIFO 队列用于在操作和事件的顺序至关重要或重复内容不可接受时增强应用程序之间的消息收发,例如:

  • 确保以正确的顺序执行用户输入的命令。
  • 以正确的顺序发送价格修改,以显示正确的产品价格。
  • 阻止学生在注册账户之前注册课程。

功能

  • 无限的队列和消息:在任何区域中创建无限数量的 Amazon SQS 队列并附带无限数量的消息
  • 有效负载大小:消息有效负载最多可包含 256KB 任何格式的文本。有效负载中每 64KB 的“数据块”按 1 次请求计费。例如,对 256KB 有效负载的单次 API 调用将按四次请求计费。
  • 批处理:批量发送、接收或删除消息,最多 10 条消息或 256KB。批处理的成本与单条消息相同,这意味着 SQS 对于使用批处理的客户而言更具成本效益。
  • 长轮询减少无关轮询,在尽快接收新消息的同时最大限度地降低成本。当队列为空时,长轮询请求在下一条消息到达前最多等待 20 秒钟。长轮询请求的成本与常规请求的成本相同。
  • 队列中的消息最多可保留 14 天。
  • 同时发送和读取消息。
  • 消息锁定:收到消息后,消息在处理过程中变为“锁定”状态。这样可以防止其他计算机同时处理消息。如果消息处理失败,锁定状态将过期,消息将再次可用。
  • 队列共享:匿名或与特定的亚马逊云科技账户安全共享 Amazon SQS 队列。队列共享也可能受到 IP 地址和时间限制。
  • 服务器端加密 (SSE):使用 Amazon Key Management Service (Amazon KMS) 中托管的密钥保护 Amazon SQS 队列中的消息内容。一旦 Amazon SQS 收到消息,SSE 就会对其进行加密。这些消息以加密形式存储,Amazon SQS 仅在这些消息发送给授权使用者时才对其进行解密。
  • 死信队列 (DLQ):使用死信队列处理使用者未成功处理的消息。当消息超过最大接收计数时,该消息将被移动到与原始队列关联的 DLQ 中。为 DLQ 设置单独的使用者进程,这有助于分析和理解消息卡住的原因。DLQ 的类型必须与源队列的类型相同(标准队列或 FIFO)。

将 Amazon SQS 与其他亚马逊云科技基础设施 Web 服务结合使用

Amazon SQS 消息队列可以与其他亚马逊云科技服务一起使用,例如 AAmazon RedshiftAmazon DynamoDBAmazon Relational Database Service (RDS)Amazon Elastic Compute Cloud (EC2)Amazon Elastic Container Service (ECS)Amazon LambdaAmazon S3,使分布式应用程序更具可扩展性和可靠性。以下是一些常见的设计模式:

  • 工作队列:解耦分布式应用程序的组件,这些组件可能无法同时处理相同的工作量。
  • 缓冲区和份批操作:增加架构的可扩展性和可靠性,让临时的卷峰值更加平滑,且不会丢失消息或增加延迟。
  • 请求卸载:通过对请求进行排队,将慢速操作从交互式请求路径中移出。
  • 扇出将 SQS 与 Simple Notification Service (SNS) 结合使用,将消息的相同副本并行发送到多个队列。
  • 优先级:使用单独的队列来确定工作的优先级。
  • 可扩展性:由于消息队列将您的进程解耦,因此可以轻松地扩大消息的发送或接收速率 – 您只需添加另一个进程即可。
  • 弹性:当系统的一部分出现故障时,您不需要关闭整个系统。消息队列使系统的组件解耦,因此,如果从队列中读取消息的进程失败,则消息仍然可以添加到队列中,以便在系统恢复时进行处理。

开始使用亚马逊云科技免费构建

开始使用亚马逊云科技免费构建

关闭
热线

热线

1010 0766
由光环新网运营的
北京区域
1010 0966
由西云数据运营的
宁夏区域