关于Lambda到DynamoDB的吞吐量问题

0

【以下的问题经过翻译处理】 给我发以下电子邮件的IHAC:

我正在努力将Lambda作为我们的主要计算环境。到目前为止,这相当于通过API Gateway注入的数据分流到各个端点(通常类似于AWS IoT规则引擎),并使用DynamoDB存储配置数据。

我目前正在努力克服的障碍是DynamoDB的吞吐量限制。在标准操作中,我们有一个缓慢,稳定的请求流,根本不会接近我们的限制。然而,在罕见的情况下,我需要添加一个大的数据存储库。按照目前的设置,这意味着会有大量近乎同时的请求进入DynamoDB。然而,我们没有延迟要求。在合理的范围内,我并不在意这个操作何时完成,只要它完成。如果我可以花时间分配这些请求以保持低于我们的限制,问题就会得到解决。

实质上,我希望我们的爆发响应按时间分布负载,而不是扩大我们的系统。

最初,我尝试设置一个调度程序,一个我可以通过CloudWatch事件调用的函数,只需说“再次在X.Y分钟内尝试该lambda函数”,但我遇到了另一个限制,即每秒仅能进行5个CloudWatch API请求。我没有解决吞吐量问题,而是将其移动到不同的服务中。

对于解决这个具体问题,我有几种不同的方法,但是总体的调度设计模式是我非常感兴趣的。

我最初的想法是在API Gateway前端lambda之间引入SQS。那个lambda会将有效载荷写入SQS,

1 回答
0

【以下的回答经过翻译处理】 我建议您先将数据发送到 SQS,然后从 SQS 中可以将新摄取的信息收集在一起并发送到 DynamoDB。 通过这个系统,您可以在 SQS 中排队处理消息的高峰期,然后使用更稳定的吞吐量将它们上传到 DynamoDB。 SQS可以起到很好的削峰填谷作用,希望能满足你的需求。

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则