单个AWS Lambda承担更大的责任,而多个Lambda承担更少的责任

时间:2019-02-15 11:14:20

标签: amazon-web-services parallel-processing aws-lambda

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

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

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

所以,这两种方法都没有什么缺点,

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

因此,我希望有一个经济高效的解决方案,在其中我可以实现索引组件的最大扇出,从而可以为多个客户端建立索引。另外,每个AWS Lambda实例可以实现的最大并行化程度是什么?

0 个答案:

没有答案