我有一个系统,用户可以上传大约16百万像素的全分辨率图像,从而产生大文件。
目前的方法是:
显然,问题在于,由于这一切都是在HTTP请求中完成的,因此与其他任何典型的HTTP请求相比,它消耗的服务器资源要多得多,尤其是当用户开始批量上传图像时,一次几个用户。如果用户上传大图像,则内存消耗会急剧增加(我使用ImageMagick.NET进行图像处理)。
这种架构是否更合适:
至少这种新方法将更容易扩展,具有更可预测的性能。但是,像照片上传一样处理“每一天”的事情似乎需要做很多工作。 有更好的方法吗?
我知道新方法遵循与使用外部重新调整大小服务相同的原则,但由于我担心某些第三方服务的隐私,因此不要在内部执行此操作。这仍然意味着我必须调整客户端来处理丢失/未处理的图像。
答案 0 :(得分:2)
是的,你所描述的是一种更好的方式。这听起来更复杂,但大多数可扩展站点处理大负载的方式是将其卸载到队列中并让工作人员处理它。
我在步骤2中为您的案例添加更正:
一个单独的工作服务器监视一个队列,并在出现指示它的消息时启动所有重新调整大小,处理和复制。
答案 1 :(得分:1)
另一种选择是使用新的Web作业功能。实际上,您的场景似乎非常常见(在图像处理方面),它被列为Typical Scenario on MSDN之一。
图像处理或其他CPU密集型工作。网络的一个共同特征 网站是上传图片或视频的能力。通常你想 在上传内容后操纵内容,但您不想制作内容 用户等你这样做。
无论是否更好,我都会由你决定。