写点什么

亚马逊简单队列服务(SQS)添加了 FIFO 队列

2017 年 1 月 04 日

亚马逊的简单队列服务(SQS)最近添加了 FIFO(先入先出)队列,“确保消息是按照它们发送的顺序处理的,每个消息只被处理一次,而且不会出现重复消息”。AWS 在美国东部(俄亥俄州)和美国西部(俄勒冈州)地区推出了这种新的队列类型,并“计划在 2017 年初在其他地方推广”。

亚马逊的 SQS 被描述为一个“快速、可靠、可扩展、完全托管的消息队列服务,旨在解耦云应用程序的组件,并能传输任意大小的数据,而不会丢失消息或要求其他的依赖服务始终可用”。

SQS 服务的一个显著的特点是它去掉了“标准”队列在伸缩性方面的限制,因此用户可以创建一个无限数量的队列,每个队列默认提供“近乎无限的吞吐量”。然而,这种简便的伸缩模式所要求的消息处理架构只能保证消息的尽力排序(best-effort ordering)和至少一次传递。

根据 AWS 的观察结果,“客户告诉我们 FIFO 应用的吞吐量通常较低,每秒 10 条消息甚至更低”,新型的 FIFO 队列现在弥补了标准 SQS 队列在这方面存在的不足,它用无限制的扩展换取更健壮的消息排序和处理保障。FIFO 队列的特点有:

  • 先进先出:严格维持消息发送和接收的顺序。
  • 只处理一次:消息只发送一次并一直保持可用直到消费者处理和删除该消息。在 5 分钟的去重间隔中,队列不会引入重复消息。
  • 有限的吞吐量:每秒 300 条事务(TPS)。

一篇关于亚马逊SQS FIFO API 的工作原理的技术博文更加详细地描述了底层架构取舍和相应的约束。该文作者强调,尽管“许多应用使用SQS 的传统的超级可扩展、至少一次的消息处理方式表现良好”,但是有一些应用场景需要排序或者只处理一次消息,例如“价格更新事件流”或者“交互式shell 会话中的命令”。

“如果网络连接掉线的时间不会超过几分钟,并且消息都有唯一的标识符”,那么FIFO 队列的默认设置应该就足够实现严格的排序和只处理一次的目标。至于其它粒度方面的需求,可以使用消息组(属于同一组的消息按顺序处理)和专门的去重ID (否则默认为消息内容的SHA256 哈希值)。

微软Azure 的服务总线队列可以保证 FIFO 消息排序和只发送一次。相比之下,谷歌云平台(Google Cloud Platform)的云Pub/Sub 服务既不支持FIFO 消息排序,也不支持只发送一次,因为谷歌认为“实际要求严格排序的应用场景少之又少”。

亚马逊SQS 文档包含一份开发人员指南 API 参考。开发人员指南里有一个章节是关于 FIFO 队列的,它提供了一个从标准队列迁移到新型队列需要注意的事项列表。还有一份单独的 FAQ 。SQS 是按 API 的请求数来定价的(而不是消息,一个请求可以包含多达10 条消息),新的FIFO 队列的定价方式和标准队列之前的定价方式类似。标准队列的定价已经降低了百分之二十。亚马逊SQS 论坛为该服务提供支持。

查看英文原文: Amazon Simple Queue Service (SQS) Gains FIFO Queues


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017 年 1 月 04 日 18:001698
用户头像

发布了 33 篇内容, 共 86583 次阅读, 收获喜欢 7 次。

关注

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布
暂无评论
发现更多内容

Alibaba首发的《Java技术成长笔记》简直太牛了,从基础到架构所有的知识点都有,绝对是渴望提升自己的程序员的必备宝典!

Java成神之路

Java 程序员 架构 面试 编程语言

精选算法面试-链表(判断环)

李孟

算法 链表 28天写作

OOP: DIP与LSP

Iris

面向对象 架构训练营

架构师训练营 第十二周作业

文江

学习安卓开发!View的这些基础知识你必须要知道,Android岗

欢喜学安卓

android 程序员 面试 移动开发

架构师训练营第十二周作业

丁乐洪

网卡分身技术,你 Get 了吗

Linux云计算网络

网络

智能合约DAPP软件APP开发|智能合约DAPP系统开发

开發I852946OIIO

系统开发

价值 - 风险管理(二)

石云升

读书笔记 风险管理 28天写作 价值

架构师训练营 1 期:大作业(二)

piercebn

架构师训练营第 1 期

MySQL慢查询(中):正确的处理姿势,你get到了吗?

架构精进之路

MySQL MySQL优化 MySQL架构 28天写作

多熟悉一门编程语言看法

superman

MMMDeFi智能合约系统开发方案

薇電13O25249123

区块链 智能合约

京东T7团队技术4面:线程池+索引+Spring +分布式锁+Mysql+项目等

Java架构之路

Java 程序员 架构 面试 编程语言

独角兽余额宝(Java现场面试48题):性能调优+索引+Mysql+缓存+HashMap+GC

Java架构之路

Java 程序员 架构 面试 编程语言

花了两个月肝完美团架构师总结整理的这份《Java面试复习笔记》我成功拿到了阿里P6级offer。

Java成神之路

Java 程序员 架构 面试 编程语言

Go的声明语法为什么是这样

Rayjun

go

移动开发属于哪个领域!2021年Android春招面试经历,详细的Android学习指南

欢喜学安卓

android 程序员 面试 移动开发

架构师第 6 课作业及学习总结

小诗

「架构师训练营第 1 期」

同城快递系统架构

Jacky.Chen

阿里P8级架构师总结整理的这份火爆全网的《Java架构成长笔记:深入内核,拒绝蒙圈》终于免费开放下载了!

Java成神之路

Java 程序员 架构 面试 编程语言

面试大揭秘!从技术面被“虐”到征服CTO,全凭这份强到离谱的pdf

Java架构之路

Java 程序员 架构 面试 编程语言

用 flomo 管理自己的奇思妙想瀑布流

Guanngxu

美团P4推出的Java程序性能优化手抄本,让你的Java程序更快更稳定

Crud的程序员

Java 程序员 架构 性能调优

惊艳!四份SpringSecurity笔记带你玩转金三银四的面试题集!

996小迁

Java 架构 面试 springsecurity 笔记

消失的同事

石君

时代发展 28天写作

芯片破壁者(二十五):从全球贸易网络看芯片博弈

脑极体

链上数据存储,区块链底层技术落地

t13823115967

区块链落地

京东T8Java架构师呕心沥血总结整理的《15w字的Java面试手册》免费开放分享给大家复习。

Java成神之路

Java 程序员 架构 面试 编程语言

面向对象设计总结

Iris

面向对象

智慧警务,大数据分析决策平台建设方案

t13823115967

智慧警务大数据系统开发

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

亚马逊简单队列服务(SQS)添加了FIFO队列-InfoQ