首页 > 解决方案 > 为什么 AWS SQS 不通过长连接提供推送机制?

问题描述

AWS SQS 提供了长轮询和短轮询,但为什么它不提供推送机制,比如 RabbitMQ?

应用程序可以建立长期连接,并使用从 SQS 队列推送的消息。

标签: amazon-web-servicesamazon-sqs

解决方案


这是一种设计选择,在考虑为其设计 SQS 的用例时是有意义的。

  1. 无服务器计算:在设计无服务器架构时,SQS 是一项核心服务。在这样的系统中,没有“持久服务器”的概念,因此不需要长寿命的连接。这也是为什么 SQS 的定价模型主要基于 API 调用的原因。

  2. REST API 访问与连接:对我来说,这说明了一切。当在无服务器环境中需要微服务的 REST API 时。这是因为我无法围绕何时配置和取消配置计算节点进行编程,例如,在 lambda 中,这些操作没有挂钩。这意味着我要么必须引入一个新层 - 连接池,要么必须忍受悬空连接。如果不是,我将最终为每个操作(或 lambda 调用)打开和关闭连接,这首先不会给我带来“连接”的任何好处。在这里拥有 REST API 是有意义的。
    这也是为什么 DynamoDB(数据库)可以通过 REST API 访问,而 Aurora 现在有一个无服务器替代方案,正如您所猜测的那样,它有 REST API。

  3. 长连接的开销:长连接的开销,在任何一端都足够昂贵,并且需要完全不同的架构。这再次与上述没有服务器来保持连接打开的观点有关。

免责声明:这个答案来自我在 AWS 上构建架构的经验。


推荐阅读