4

图像处理系统。

用户将照片上传到 S3。图像处理应用程序从 S3 获取照片并开始对其进行处理并返回输出。

处理: Webserver 正在向队列发送带有图像信息的 SQS 消息,图像处理服务器获取 SQS 消息并开始处理该图像。图像处理完成后,它将图像上传回 S3 并将 SQS 消息返回到队列。图像处理引擎位于 EC2 服务器上。

这是一个问题:网络服务器如何从图像处理服务器发送的队列中获取返回的 SQS 消息?

4

1 回答 1

7

不要将图像处理视为远程过程调用,其中有请求和响应——将其视为分布式系统中不同组件执行的一系列任务。用两个队列解决这个问题:uploaded-imagesprocessed-images

Web 服务器接受图像,将其放入 S3 中,并向uploaded-images队列发送一条消息,表明需要对其进行处理。

您的图像处理 EC2 实例等待消息到达uploaded-images队列,然后从 S3 检索图像,进行一些处理,并将结果放入 S3。然后他们向processed-images队列发送一条消息,表明图像已被处理。

您的 Web 服务器会轮询processed-images,并在处理完图像后执行它们需要做的任何事情:更新数据库、在短期缓存中设置一个条目以指示图像已完成处理等。

于 2012-11-27T21:19:48.700 回答