【发布时间】:2019-02-19 17:58:18
【问题描述】:
我正在使用 SQS 和 lambda 来处理一些特定的请求。每个请求可以包含从 1 条消息到数十万条消息的消息。它工作正常,唯一的问题是小请求有时必须等待那些已经在队列中的大请求(因为所有并发 lambda 都被占用,我不想增加我的 lambda 并发)。所以我想有两个队列,一个用于小请求,一个用于大请求,这样可以更快地处理小请求。但挑战在于如何将 lambda 并发数分配给每个队列。现在我将 lambda 并发设置为 30,但如果有一个大请求进来,所有 30 个 lambda 都会很忙。有什么方法可以根据触发它的 SQS 队列告诉 lambda 部分使用并发 lambda(比如说 20 表示大请求,10 表示小请求)?还是有其他最佳实践来实现这种要求?
【问题讨论】:
-
为什么要限制 Lambda 并发?如果有工作要做,为什么不早点完成呢?推迟工作没有任何价格优势。
-
原因是 lambda 函数写入 DynamoDB,如果不限制并发性,那么我会在 DynamoDB 上受到限制。
标签: amazon-web-services aws-lambda amazon-sqs