首页 > 解决方案 > 责任更大的单个 AWS lambda 与责任更少的多个 lambda

问题描述

我目前正在开发一个索引组件,它根据客户端配置在不同的数据库表(DynamoDB、ElasticSearch 等)中创建索引。

可能有 100 多个客户需要不同的索引记录,系统的 TPS 为 700。目前我有两种方法,

  1. 让一个 lambda 监听 SQS(订阅事件)并从源中提取数据并为每个客户端构建索引记录,并将索引并行放入数据库中。
  2. 或者,在上述方法中,执行时间会更长——因为并行计算取决于可用内核的总数。因此,有一个小的 lambda 复制带有少量客户端的传入事件(假设对于 1 条传入消息,此 lambda 将创建 10 条新消息,其中包含 10 个客户端的名称)并将其推送到另一个 SQS。另一个订阅它的 lambda 将监听这些消息并为每个客户端构建索引记录,并将索引并行放入数据库中。

所以,这两种方法都有一些缺点,

  1. 执行时间更长,但 lambda 调用更少。更高的内存和更高的CPU。
  2. 更少的执行时间,但更多的 lambda 调用。更少的内存和中等高的CPU。

所以,我想要一个成本效益高的解决方案,我可以在其中实现索引组件的最大扇出,以便为多个客户端构建索引。另外,每个 AWS lambda 实例可以实现的最大并行化是多少?

标签: amazon-web-servicesparallel-processingaws-lambda

解决方案


推荐阅读