ens*_*are 10 python amazon-web-services amazon-dynamodb
我正在寻找使用Python将大型高分辨率图像目录(数百万)转换为缩略图.我有一个DynamoDB表,用于存储S3中每个图像的位置.
我不想在一个EC2实例上处理所有这些图像(需要数周时间),而是想使用一堆实例编写分布式应用程序.
我可以使用哪些技术编写一个队列,允许节点从数据库中"检出"图像,调整大小,并使用生成的缩略图的新维度更新数据库?
具体来说,我担心原子性和并发性 - 如何防止两个节点同时使用DynamoDB检出同一个作业?
nst*_*ehr 11
您可以采用的一种方法是将Amazon的简单队列服务(SQS)与DynamoDB结合使用.因此,您可以做的是将消息写入队列,其中包含类似DynamoDB中图像条目的哈希键的内容.每个实例都会定期检查队列并关闭消息.当一个实例从队列中获取一条消息时,它会在给定的时间内对其他实例不可见.然后,您可以查找并处理图像并从队列中删除该消息.如果由于某种原因处理图像出现问题,则不会删除该消息,并且其他实例可以抓取该消息.
另一种可能更复杂的方法是使用DynamoDB的条件更新机制来实现锁定方案.例如,您可以向数据模型添加"beingProcessed"属性,即0或1.实例可以做的第一件事是对此列执行条件更新,如果初始值为0,则将值更改为1这里可能还有更多的事情可以让它成为一个合适/强大的锁定机制....
| 归档时间: |
|
| 查看次数: |
7580 次 |
| 最近记录: |