【发布时间】:2019-04-24 09:48:20
【问题描述】:
好吧,我之前使用 AWS Lambda 构建了一个无服务器应用程序。我目前的申请流程如下:
API Gateway (1) → Lambda Function (2) → SQS (3) → Lambda Function (4) → DynamoDB (5)
现在,有一些注意事项:
- 客户端将向我的 API (1) 发送请求。
- API 事件附加了一个 lambda 函数 (2),因此它将接收 API 请求并对其进行处理。
- 现在,问题出现了。处理请求后,此处理的结果必须插入 DynamoDB (5)。目前,我将它发送到SQS(3)并返回客户端发送的HTTP请求的响应。
- 虽然请求已完成并得到响应,但 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