【问题标题】:Which service has a lower response time? SQS vs DynamoDB哪个服务的响应时间较短? SQS 与 DynamoDB
【发布时间】:2019-04-24 09:48:20
【问题描述】:

好吧,我之前使用 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 本身处于相同的上下文中,因此它的响应时间与请求它的时间不同从其他机器。

如果这个问题的答案是:

  • 直接在 DynamoDB 上插入更快
  • 直接在 DynamoDB 上插入并不快,但差异可以忽略不计

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

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

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-dynamodb amazon-sqs


    【解决方案1】:

    您问的是 SQS 是否比 DynamoDB 便宜,但在您的流程中,您同时使用两者...当然,只做 API Gateway (1) → Lambda Function (2) → DynamoDB (3) 会更便宜。

    就性能而言,众所周知,DynamoDB 对于小型、频繁的写入速度很快,所以我不会太担心。

    SQS 和 DynamoDB 响应时间之间的差异应该非常相似,除非您的 DynamoDB 容量未正确配置,在这种情况下您可能会遇到限制问题。如果您不关心预置容量,那么我建议在您的 Lambda 函数中使用计时器(或使用 AWS x-ray)测试 SQS 和 DynamoDB,并确定性能差异是否值得添加 SQS 和一个额外的 Lambda 函数

    【讨论】:

    • 是的,我同时使用这两种方法是因为请求在第一个 Lambda 函数处返回,因此如果 SQS 的响应时间较短,使用它然后在后台发送到 DynamoDB 会更快。跨度>
    • 已编辑答案。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      +1 对 Deiv 和cementblocks 的回复。

      让我分享以下其他观点,以帮助您改进您提出的设计。

      如果您需要严格遵守异步处理,即将请求处理与响应分离,请坚持使用基于 SQS 的解决方案。

      如果请求处理延迟是一致的并且对于 API 端点的消费者来说是可接受的,那么我会推荐 Diev 推荐的解决方案来处理请求、持久化到 DynamoDB 并将响应返回给客户端。作为奖励,您将获得更低的 AWS 账单(如上所述)。

      DynamoDB 旨在提供“一致的”P99(即第 99 个百分位)延迟,单项读取

      希望这会有所帮助!

      【讨论】:

      • 感谢您的回答。我实际上不一定需要在后台处理请求。我只想尽快返回请求。这就是我提出这个问题的原因。显然,DynamoDB 的速度足够快,可以直接使用,所以我打算将设计更改为这种更简单、更便宜的方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 2018-03-05
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多