我正在建立一个基于网络的照片库。使用Amazon EC2,我希望能够在负载较高时“旋转”机器以生成缩略图,并在负载较低时将其旋转。
我在想的是拥有一个需要生成缩略图的图像数据库表,其中的字段如下所示:
image_id (32-char string)
thumbs_generated (true or false)
currently_generating (true or false)
s3_key (32-char string)
当新的EC2实例旋转时,它将连接到数据库并检索其中thumbs_generated和current_generating都设置为false的图像。检索图像后,current_generating将设置为true。生成完成后,thumbs_generated设置为true,脚本将以新图像重复。
这是一个好策略吗?从经验中记住的任何改进或事项?
这是亚马逊简单消息服务的一个很好的用例,还是没有必要?
提前致谢。
答案 0 :(得分:2)
您可以使用Amazon SQS(简单队列服务)执行此操作。
您必须将缩略图生成分解为2个,一个向SQS队列发送消息,生成拇指的图像(以及该图像存在的位置)以及在不同机器上运行的工作进程队列,生成拇指并将成功报告给报告结果所需的任何机制(可以是其他队列或其他同步机制)。
这样,当您在不同的计算机上拥有工作进程时,可以根据队列的大小设置自动扩展规则。
查看this post,了解做类似事情的人。