【问题标题】:AWS - Lambda Scheduler to invoke multiple lambda instancesAWS - 用于调用多个 lambda 实例的 Lambda 调度程序
【发布时间】:2018-09-30 06:44:39
【问题描述】:

我需要每 5 分钟轮询一次数据库,从数据库中获取 id 列表,并对每个 id 的外部服务进行服务调用,以获取更多信息并将数据存储在数据库中。我想构建一个 lambda 调度程序,它会从 db 中获取 id 列表,并为从 db 中获取的每个 id 调用 1 个 lambda 实例。调度程序调用的 lambda 实例将为它从调度程序接收到的特定 id 调用外部服务,并将信息保存在数据库中。这是解决问题的可行模式还是有任何其他模式可用于在 aws 中实现此用例?

【问题讨论】:

  • 您使用的是什么类型的数据库?如果您使用 DynamoDB,则可以使用 DynamoDB Streams 为每个 id 直接触发一个 Lambda。

标签: java amazon-web-services amazon-ec2 aws-lambda amazon-swf


【解决方案1】:

我的设计是使用 cloudwatch 事件规则,每 5 分钟触发第一个 lambda 函数以收集 id 列表。

该 lambda 函数将为需要处理的每个 id 发送一条消息到 SNS 主题,然后我会将第二个 lambda 函数订阅到该 SNS 主题,以便它接收 id/消息并执行所需的工作.

https://docs.aws.amazon.com/sns/latest/dg/sns-lambda.html

【讨论】:

  • 谢谢。我是否应该有一个 lambda 消费者来实例化几个 lambda 作品来完成实际工作?第一个 lambda 可以将 id 捆绑成 10 个批次吗?我希望我的 lambda 使用者仅在处理第一条消息后才读取下一条消息。我想有一些节流机制来确保我不会使数据库过载。
  • @PunterVicky 在处理 SNS 消息时,无需通过另一个 lambda 函数来协调扇出来增加复杂性 - 最好保持简单,并为 1 个 SNS 通知提供 1 个 Lambda。您可以为 Lambda 函数配置允许的最大并发数,如果您希望 SNS 消息被串行处理,您可以将最大并发数设置为 1。
猜你喜欢
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
相关资源
最近更新 更多