我正在构建一个处理大量图像的应用程序,我们需要处理每个图像以应用各种转换,例如缩放/调整大小,过滤器等。我应该如何构建它以便可以像我们一样扩展成长,我不需要经历像Instagram和其他人不得不做的成长的痛苦?什么是构建可执行大量图像处理的可伸缩应用程序的好方法?
顺便说一句,我们现在使用ImageMagick处理图像。
我正在构建一个处理大量图像的应用程序,我们需要处理每个图像以应用各种转换,例如缩放/调整大小,过滤器等。我应该如何构建它以便可以像我们一样扩展成长,我不需要经历像Instagram和其他人不得不做的成长的痛苦?什么是构建可执行大量图像处理的可伸缩应用程序的好方法?
顺便说一句,我们现在使用ImageMagick处理图像。
当人们像Instagram一样快速成长时,每个人都会遇到问题。
我一般建议是使用一个工作队列系统分发到N个工人图像的处理,使您可以轻松地添加更多的工人拉作业从队列中更快。
如果你使用这个存储像amazon s3那样的图像,并且可以在ec2上为更多的工作人员(比如使用puppet,chef,scalr等来启动更多的工作箱)添加更多的服务器,你应该能够很好地缩放。
我在另一个线程回答这个问题太,但这里要做到这一点,而无需担心缩放方法之一:
你可以使用一个服务像IronWorker做图像处理在后台,并采取负载关闭你的服务器。因为它是一个服务,你不需要任何管理或设置其他任何东西了,并随着你的成长,所以如果你可以用它做一个形象,你可以扩展到数百万的图像毫不费力将与您缩放。
下面是关于如何做一堆图像处理转换的文章: