AICon 深圳站 Keynote 嘉宾官宣!共探AI价值转化的实践路径 了解详情
写点什么

Amazon SQS 公平队列:一种实现多租户弹性的新方法

  • 2025-08-04
    北京
  • 本文字数:1428 字

    阅读完需:约 5 分钟

大小:721.24K时长:04:06
Amazon SQS公平队列:一种实现多租户弹性的新方法

AWS 最近为其 Amazon Simple Queue Service(SQS)引入了所谓的公平队列,该功能可以减轻多租户系统中“嘈杂邻居”的影响。公司将这一功能描述为增强应用程序的弹性并简化操作。

 

SQS是 AWS 中的一个完全托管的消息队列服务,使开发人员能够轻松地解耦和扩展微服务、分布式系统和无服务器应用程序。队列可以充当缓冲区,允许服务以自己的速度异步处理工作。然而,在多租户架构中,当一个租户成为嘈杂邻居时,它会通过过度使用系统资源来影响其他租户。AWS 计算博客的作者解释说

 

常规队列首先传递旧消息,这增加了此类场景中所有租户的消息驻留时间。当邻居吵闹时,Amazon SQS 公平队列可以帮助其他租户保持较低的驻留时间。这是透明的,不需要更改现有的消息处理逻辑。用户定义系统中的租户,Amazon SQS 负责处理复杂的协调工作,以减轻噪声对邻居的影响。

 

根据文档,当单个租户大量使用资源时,Amazon SQS 公平队列会将其视为嘈杂邻居,并为其他租户优先处理消息。这确保了更安静的租户(B、C、D)的驻留时间较短,而租户 A 的消息驻留时间更高,直到积压工作被清除。

 

正如 Enlear 的技术负责人 Chameera Dulanga 在 LinkedIn 上强调的,这种新能力意味着开发人员现在“无需复杂的重构,就能同时获得标准队列和 FIFO 队列的最佳组合——高性能和组级公平。”

 

99X 的高级技术负责人 Sidath Munasinghe 进一步强调这一功能的重要性,他在 LinkedIn 上写道

 

Amazon SQS 现在支持公平队列——这是一个强大的增强功能,解决了多租户环境中经典的“嘈杂邻居”问题。当一个客户端用大量或长时间处理消息淹没共享队列时,它可能会造成其他客户端的延迟。有了公平队列,SQS 智能地平衡租户间的消息流,确保没有单个发送者占主导地位,并为每个人保持一致的服务品质。最好的部分是,你可以通过简单地设置消息组 ID 来从这个功能中受益。

 

(来源:AWS 计算博客文章

 

要开始使用 Amazon SQS 公平队列,开发人员需要通过向他们的消息中添加租户标识符(MessageGroupId)来启用该功能,这允许在不更改消费者代码的情况下自动应用新的公平功能。此外,他们可以使用 Amazon CloudWatch 指标来监控公平队列的行为,这些指标区分嘈杂和安静的消息组,从而帮助识别潜在的队列公平问题。Contributor Insights 可以通过分析与消息处理相关的应用程序日志输出,进一步帮助定位导致负载增加的特定租户。

 

虽然“噪声邻居”问题是多租户云环境中的一个常见挑战,但 AWS 的 SQS 公平队列引入了一种直接的、队列级的机制来减轻其影响。其他主要的云提供商,如带有服务总线的微软 Azure 和带有 Pub/Sub 的谷歌 cloud,也提供了解决方案,尽管通常是通过不同的架构模式或功能。例如,Azure Service Bus通常通过以下策略来解决噪音邻居:为每个租户部署单独的队列或主题,利用优质层来通过弹性扩展消息单元来实现更强的隔离,或者使用客户端速率限制和分区来实现消息亲和性。类似地,Google Cloud Pub/Sub在设计上提供了自动扩展和每条消息的并行性,本质上有助于分配负载并减少单个高容量生产者的影响。然而,这不同于 SQS 公平队列的显式机制。与 SQS 的方法不同,这些平台通常依赖更明确的架构决策或由开发人员进行外部控制,以确保租户的公平性并防止资源垄断。SQS 的方法可以降低噪音租户的优先级,从而为更安静的租户维持较低的驻留时间。

 

最后,希望在多租户解决方案中利用公平队列的开发人员可以查看Amazon SQS开发人员指南。此外,GitHub上有一个示例

 

原文链接:

https://www.infoq.com/news/2025/07/amazon-sqs-fair-queues/

2025-08-04 17:001

评论

发布
暂无评论

测试右移与自动化测试

刘冉

自动化测试 测试右测

题目二:架构设计题

arctec

创业自研技术团队筹建需要注意什么?

boshi

创业 团队管理

2021 年 Node.js 的发展趋势

CRMEB

毫米波 5G 比公共 Wifi 快近 30 倍,但覆盖范围相似

吴脑的键客

网络

微信小程序开发:使用字体图标的方法

三掌柜

11月日更

技术架构+应用场景揭秘,为什么高斯Redis比开源香?

华为云开发者联盟

数据库 redis 开源 云原生 高斯Redis

详细剖析Kafka架构及组件

五分钟学大数据

11月日更

如何使用 Prometheus Kafka Adapter 向 Kafka 推送 Prometheus 数据

耳东@Erdong

kafka Prometheus Adapter 11月日更

AI辅助测试与自动化测试

刘冉

AI 自动化测试

极客时间架构实战营作业八

jjn0703

架构实战营

题目三、简述HDFS的读写流程

arctec

【Flutter 专题】08 图解页面小跳转 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

openLooKeng v1.4.1 上线,OmniData Connector 来了

LooK

大数据 openLooKeng

模块三

DevOps为何在中国发展滞后?

飞算JavaAI开发助手

架构实战模块作业八

Yina🌝很浪🌊

架构实战课

用vscode创建第一个flutter项目

坚果

flutter 11月日更

Flink CDC 2.0 数据处理流程全面解析

大数据技术指南

11月日更

[ CloudWeGo 微服务实践 - 08 ] Nacos 服务发现扩展 (1)

baiyutang

golang 微服务 11月日更

模块三作业-外包学生管理系统

二手攻城师

「架构实战营」

懒人畅听网,有声小说类目数据采集,多线程速采案例,Python爬虫120例之23例

梦想橡皮擦

11月日更

如何在 JavaScript 中操作二维数组

devpoint

JavaScript array 数组操作 11月日更

架构训练营 - 模块三作业

VegetableBird

架构训练营 架构实战营

体验内容更新,MindSpore轻松掌握

Geek_6cdeb6

模块三作业 外包学生管理系统详细架构设计

小朱

架构实战营

Go语言,测试功能详解-上

微客鸟窝

Go 语言 11月日更

大数据训练营学习总结

arctec

敏捷开发专家一席谈:云原生技术下的华为云DevOps实践之路

华为云开发者联盟

DevOps 敏捷开发 华为云 devcloud

设计消息队列存储消息数据的MySQL表格

毛先生

如何“拼”出一个页面-游戏中心模块化实践

vivo互联网技术

开发 组件化 产品方法论

Amazon SQS公平队列:一种实现多租户弹性的新方法_云计算_Steef-Jan Wiggers_InfoQ精选文章