亚马逊AWS官方博客

Amazon SQS 新增功能 – 更新 AWS SDK 以减少延迟



借助 Amazon SQS,您可以在任何规模的软件组件之间发送和接收消息。这是我最早使用的 AWS 服务之一,作为一名解决方案架构师,我曾帮助许多客户利用消息队列实现异步通信。事实上,Amazon SQS 自 2006 年 7 月起就已正式上线,并在后台一直使用基于 XML 的相同有线协议(我们称之为 AWS 查询协议)。

今天,我很高兴宣布,Amazon SQS 现在支持所有 API 使用基于 JSON 的有线协议。AWS JSON 协议避免了 AWS 查询协议的许多缺点。

AWS JSON 比之前的基于 XML 的协议更高效,可以减少发送和接收 SQS 消息时的延迟和客户端 CPU 使用率。例如,对于发送简单的“hello world”消息的请求,使用旧的 AWS 查询协议的响应主体大小约为 400 字节。使用新的 AWS JSON 协议的相同 SendMessage 响应的内容长度不到以前的 1/3。

在 Amazon SQS 中使用新的基于 JSON 的协议
这是本次发布最精彩的部分! 要使用 AWS JSON 协议获益,只需将 AWS SDK 更新到最新版本。在构建这一新功能时,SQS 团队非常小心,确保无需更改代码即可使用新的基于 JSON 的有线协议。

例如,我们使用适用于 Java 的 AWS SDK 运行了一项基准测试,来比较新旧有线协议。我们期望其他 AWS SDK 也可以得到类似的结果。基于 AWS 对 5KB 消息有效负载的性能测试,适用于 Amazon SQS 的 JSON 协议最多可减少 23% 的端到端消息处理延迟,并减少应用程序客户端 CPU 和内存使用率。这些数字取决于实际的实现,可能与您在自己的应用程序中看到的数字不同。

可用性和定价
目前,在所有提供 SQS 的 AWS 区域Amazon SQS 均支持新的 JSON 协议。所有公开发行的 AWS SDK 现在都支持适用于 SQS API 的 AWS JSON。要从这种优化中获益,只需将 AWS SDK 更新到最新版本。

使用 AWS JSON 协议时,定价没有更改。有关更多信息,请参阅 Amazon SQS 定价

如果您对 AWS 协议如何工作的更多细节感兴趣,可以查看 Smithy,这是我们在 AWS 定义服务和 SDK 的语言。

在正式上线将近 17 年之后,我们正在对我们最早的服务进行改进和创新。就在几个月前,我们为新建队列引入了默认使用 Amazon SQS 托管的加密密钥(SSE-SQS)进行服务器端加密,增加了 FIFO 队列高吞吐量模式的默认配额,并宣布支持使用队列标签进行基于属性的访问控制(ABAC)。最近,Amazon SQS 增加了新的 API,以编程方式管理死信队列(DLQ)重新传输。在 AWS,每天都是新的开始!

更新 AWS SDK 以提高 CPU 和内存使用率并减少使用 Amazon SQS 时的延迟。

Danilo