首页 > 解决方案 > 哪个服务的响应时间较短?SQS 与 DynamoDB

问题描述

好吧,我之前使用 AWS Lambda 构建了一个无服务器应用程序。我目前的申请流程如下:

API Gateway (1) → Lambda Function (2) → SQS (3) → Lambda Function (4) → DynamoDB (5)

现在,有一些考虑:

  1. 客户端将向我的 API (1) 发送请求。
  2. API 事件附加了一个 lambda 函数 (2),因此它将接收 API 请求并对其进行处理。
  3. 现在,这里是问题的来源。处理请求后,此处理的结果必须插入 DynamoDB (5)。目前,我将它发送到SQS(3)并返回客户端发送的HTTP请求的响应。
  4. 尽管请求已完成并得到响应,但 SQS (3) 消息将由另一个 lambda 函数 (4) 进行事件拉取,该函数将在 DynamoDB (5) 上插入处理后的消息。

当我第一次对这个流程进行原型设计时,我有一个假设:向 SQS 发送消息比在 DynamoDB 上插入消息要快。但是,我从未做过真正的基准测试或类似的事情,所以我的假设只是武断的。

最后的问题是: 哪个动作更快?将处理后的请求发送到 SQS 还是直接发送到 DynamoDB?

考虑到,在这两种情况下,它都将在 lambda 函数 (2) 中执行,因此,从理论上讲,由于它与 AWS 本身处于相同的上下文中,它的响应时间与从其他机器请求它的响应时间不同.

如果这个问题的答案是:

我可以同时删除 SQS (3) 和第二个 lambda 函数 (4),从而实现更简单和更直接的流程。

但是,如果通过先发送到 SQS 有更长的响应时间,我可能会保持这个流程。

标签: amazon-web-servicesaws-lambdaamazon-dynamodbamazon-sqs

解决方案


如果您在调用之间保持连接打开,我发现 DynamoDB 响应时间低于 10 毫秒。我没有关于 SQS 延迟的数据。

关于成本,您基本上将您的 lambda 成本加倍,并添加任何 SQS 成本。如果您使用按需写入,SQS 的成本比 DynamoDB 高出约 33%。


推荐阅读