图像处理系统。
用户将照片上传到S3。图像处理应用程序从S3获取照片并开始处理并返回输出。
过程: Web服务器将带有图像信息的SQS消息发送到队列,图像处理服务器获取SQS消息并开始处理该图像。图像处理完成后,立即将图像上传回S3并将SQS消息返回队列。图像处理引擎位于EC2服务器上。
以下是问题: Web服务器如何从图像处理服务器发送的队列中获取返回的SQS消息?
答案 0 :(得分:6)
不要将图像处理视为远程过程调用,其中存在请求和响应 - 将其视为由分布式系统中的不同组件执行的一系列任务。使用两个队列解决此问题:uploaded-images
和processed-images
。
Web服务器接受图像,将其放入S3,然后将消息发布到uploaded-images
队列,指示需要处理它。
您的图像处理EC2实例等待消息到达uploaded-images
队列,然后从S3检索图像,进行一些处理,并将结果放入S3。然后,他们向processed-images
队列发送消息,指示图像已被处理。
您的网络服务器轮询processed-images
,并执行处理图像后需要执行的操作:更新数据库,在短期缓存中设置条目,指示图像已完成处理等等。