【发布时间】:2016-01-07 18:46:34
【问题描述】:
我有一个 Lambda 工作函数列表(比如 1000 个),每个函数同时运行并完成其工作。为了能够弄清楚所有工人的最终结果,我提出了这个想法。
在开始工作和生成 Lambda 工作函数之前,我在 DynamoDB 中保存了一条记录,例如两个属性:
total_number_of_jobs-
jobs_completed(初始设置为 0)
在每个 Lambda 工作函数完成后,它会将属性 jobs_completed 加一。然后读取记录并检查total_number_of_jobs是否等于jobs_completed,如果是,则将记录放入SQS。
我的问题是:
- 这是个好主意吗?
- 更新是一致的和原子的吗?会不会有比赛条件?
- 还有比这更好的解决方案吗?
我会在这样的 UpdateItem API 调用中更新计数器 jobs_completed:
SET jobs_completed = jobs_completed + :incr_by 其中incr_by 将等于1。
【问题讨论】:
标签: amazon-web-services amazon-dynamodb aws-lambda