BT

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

作者 Steffen Opel ,译者 王纯超 发布于 2017年1月5日 | 欲知区块链、VR、TensorFlow等潮流技术和框架,请锁定QCon北京站!

亚马逊的简单队列服务(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)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论
提供反馈
错误报告
商务合作
内容合作
Marketing
InfoQ.com及所有内容,版权所有 © 2006-2016 C4Media Inc. InfoQ.com 服务器由 Contegix提供, 我们最信赖的ISP伙伴。
北京创新网媒广告有限公司 京ICP备09022563号-7 隐私政策
BT

我们发现您在使用ad blocker。

我们理解您使用ad blocker的初衷,但为了保证InfoQ能够继续以免费方式为您服务,我们需要您的支持。InfoQ绝不会在未经您许可的情况下将您的数据提供给第三方。我们仅将其用于向读者发送相关广告内容。请您将InfoQ添加至白名单,感谢您的理解与支持。