amazon-web-services - Amazon DynamoDB 原子写入

标签 amazon-web-services amazon-dynamodb aws-lambda

我有一个 Lambda 工作函数列表(比如 1000 个),每个函数同时运行并完成其工作。为了能够计算出所有 worker 的最终结果,我提出了这个想法。

在开始作业和生成 Lambda 工作函数之前,我在 DynamoDB 中保存了一条记录,例如两个属性:

  • total_number_of_jobs
  • jobs_completed(初始设置为 0)

在每个 Lambda 工作函数完成时,它将去并将属性 jobs_completed 递增 1。然后读取记录并检查 total_number_of_jobs 是否等于 jobs_completed,如果是,则将记录放入 SQS。

我的问题是:

  1. 这是个好主意吗?
  2. 更新是否一致且原子化?是否存在竞争条件?
  3. 还有比这更好的解决方案吗?

我会在这样的 UpdateItem API 调用中更新计数器 jobs_completed:

SET jobs_completed = jobs_completed + :incr_by 其中 incr_by 等于 1

最佳答案

只要您使用 DynamoDB 原子计数器(如示例所示),并且检查 UpdateItem 调用的返回值而不是运行单独的查询,那么您建议的解决方案应该可以正常工作。

关于amazon-web-services - Amazon DynamoDB 原子写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34662834/

相关文章:

javascript - 空字符串验证异常 - DynamoDB

java - 使用来自 java aws sdk 的 DynamoDb 增强客户端,如何使用复合 keyConditionExpression 进行查询?

powershell - 在 Powershell 中,如何获取本地 zip 文件的 Base64 编码内存流?

javascript - Auth0 授权者拒绝来自服务的 JWT token - "jwt issuer invalid. expected: https://myservice.auth0.com"

mysql - AWS RDS MySQL 如何限制对单个 EC2 实例的数据库访问

ios - AWS S3 iOS 开发工具包 : How to resume upload after connection is interrupted?

amazon-web-services - 从列表 Terraform 中提取子网 ID

amazon-web-services - AWS Amplify React GET 请求错误 - 缺少身份验证 token

python-2.7 - BatchWriteItem 操作 : The provided key element does not match the schema

c# - 使用 .net 核心 2.0 的 aws lambda