【问题标题】:Run lambda parallely or better approach并行运行 lambda 或更好的方法
【发布时间】:2020-09-12 05:16:01
【问题描述】:

我有一个这样的问题陈述:

我有大约 40 台服务器,我想在其中同时运行一个存储过程,彼此之间没有依赖关系。 服务器信息存储在数据库中。 为了实现这一点,我正在考虑实施以下方式:

  • lambda 将从数据库中获取有关服务器的所有信息。让我们说 这是“lambda1”。
  • 把所有这些信息放到SQS中,就会有一个lambda 附加到将处理请求的 SQS。让我们说 “lambda2”。

    我想知道是否会有尽可能多的实例 “lambda2”,作为 SQS 中的消息数。 或者还有比这更好的方法吗?

【问题讨论】:

  • 您为什么要使用 AWS Lambda?如果您希望在 Amazon EC2 实例上运行命令,可以使用 AWS Systems Manager Run Command。它可以在多个实例上同时运行命令(甚至在您自己的计算机上!),并将整理每个实例的结果。

标签: amazon-web-services aws-lambda architecture amazon-sqs


【解决方案1】:

当您 create a trigger 从 SQS 到 Lambda 时,您将 Batch size 属性设置为最大 10。

当收到 10 条消息(如果队列中的消息很少,则更少)时,将调用 Lambda 并接收该批消息。

【讨论】:

  • 我有一个问题,如果我将批量大小设置为 1,SQS 中的每个味精是否会有 1 个 lambda。如果我将批量大小设置为 5,则可能连接到第四台服务器需要时间,并且 lambda 会发生 15 mint 超时
  • 嗨,如果您设置为 1,则每条消息将是 1 个 Lambda。如果有任何超时,您可以配置 SQS 死信队列:docs.aws.amazon.com/AWSSimpleQueueService/latest/…
  • 您好,这实际上取决于您的用例,但配置批量大小为 10 的 SQS 队列和 DLQ 可提供弹性。请记住,如果第一个使用者最初失败,则会重试 Lambdas
  • @mokugo-devops "如果您设置为 1,则每条消息 1 个 Lambda。" 不,这不准确。每个 Lambda 将有 1 条消息,而不是每条消息 1 条 Lambda,除非消息数量非常少。 Lambda/SQS 集成开始时只有 5 个内部侦听器轮询队列并同步调用 Lambda,最多可将批处理大小中的消息数量传递给 Lambda 函数调用。
  • 嗨@Michael-sqlbot 感谢您的关注。我为评论写了这些错误的方式:(
猜你喜欢
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 2019-03-07
相关资源
最近更新 更多