Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 体系结构:处理大规模照片上传和调整大小_C#_Image Processing_Azure_File Upload_Azure Storage Blobs - Fatal编程技术网

C# 体系结构:处理大规模照片上传和调整大小

C# 体系结构:处理大规模照片上传和调整大小,c#,image-processing,azure,file-upload,azure-storage-blobs,C#,Image Processing,Azure,File Upload,Azure Storage Blobs,我有一个系统,用户可以上传大约1600万像素的全分辨率图像,从而生成大文件 目前的方法是: 在HTTP请求中接收上载 在请求中,将原始文件写入blob存储 仍在要求范围内,以不同的分辨率制作约10份文件副本。(这些是不同尺寸的缩略图,有些是用于Hi-DPI(视网膜)设备的,还有一个用于全尺寸查看的尺寸。我还将图像转换为WebP 然后,我将所有结果传输到不同地区的blob商店,用于私有CDN目的 显然,问题在于,由于这一切都是在HTTP请求中完成的,因此它比任何其他典型的HTTP请求消耗的服务器资

我有一个系统,用户可以上传大约1600万像素的全分辨率图像,从而生成大文件

目前的方法是:

  • 在HTTP请求中接收上载
  • 在请求中,将原始文件写入blob存储
  • 仍在要求范围内,以不同的分辨率制作约10份文件副本。(这些是不同尺寸的缩略图,有些是用于Hi-DPI(视网膜)设备的,还有一个用于全尺寸查看的尺寸。我还将图像转换为WebP
  • 然后,我将所有结果传输到不同地区的blob商店,用于私有CDN目的
  • 显然,问题在于,由于这一切都是在HTTP请求中完成的,因此它比任何其他典型的HTTP请求消耗的服务器资源多得多,特别是当用户开始批量上载图像时,一次上载几个用户。如果用户上载大图像,内存消耗会急剧增加(我使用的是图像处理)

    这种架构是否更适合:

  • 接收文件上载,写入blob,向处理队列添加通知,将成功返回给用户
  • 一个单独的工作服务器接收新文件的通知,并启动所有重新调整大小、处理和复制
  • 我只是将客户端JavaScript设置为在几秒钟内不加载图像预览,或者在未找到图像时让其重试(这意味着图像仍在处理中,但可能很快就会显示)
  • 至少这种新方法更容易扩展,性能更可预测。但仅仅处理像照片上传这样的“每天”的事情似乎需要做很多工作。有更好的方法吗?


    我知道新方法遵循与使用外部重新调整大小服务相同的原则,但我不想在内部这样做,因为我担心一些第三方服务的隐私。这仍然意味着我必须调整客户端以处理丢失/未处理的图像。

    是的,您所描述的是一种更好的方法。它听起来更复杂,但这是大多数可扩展站点处理大负载的方式。将其卸载到队列中,让工作人员处理

    我想在您的案例中添加第2步的更正:


    一个单独的工作服务器监视队列,并在出现指示它这样做的消息时启动所有重新调整大小、处理和复制。

    是的,您所描述的是一种更好的方法。这听起来更复杂,但这是大多数可伸缩站点处理大负载的方式。将其卸载到队列中,让工作服务器处理

    我想在您的案例中添加第2步的更正:


    一个单独的工作服务器监视队列,并在出现指示它这样做的消息时启动所有重新调整大小、处理和复制。

    是的,您所描述的是一种更好的方法。这听起来更复杂,但这是大多数可伸缩站点处理大负载的方式。将其卸载到队列中,让工作服务器处理

    我想在您的案例中添加第2步的更正:


    一个单独的工作服务器监视队列,并在出现指示它这样做的消息时启动所有重新调整大小、处理和复制。

    是的,您所描述的是一种更好的方法。这听起来更复杂,但这是大多数可伸缩站点处理大负载的方式。将其卸载到队列中,让工作服务器处理

    我想在您的案例中添加第2步的更正:


    一个单独的工作服务器监视队列,并在出现一条消息指示它这样做时启动所有重新调整大小、处理和复制。

    另一个选项是使用新的Web作业功能。事实上,您的场景似乎非常常见(在图像处理方面),因此它被列为一个重要的场景

    图像处理或其他CPU密集型工作。web的一个常见功能 网站是一种上传图像或视频的能力。通常你想 在上传内容后对其进行操作,但您不希望 用户等待您执行此操作


    是否更好,我将由您决定。

    另一个选择是使用新的Web Jobs功能。事实上,您的场景似乎非常常见(在图像处理方面),因此它被列为最常见的场景之一

    图像处理或其他CPU密集型工作。web的一个常见功能 网站是一种上传图像或视频的能力。通常你想 在上传内容后对其进行操作,但您不希望 用户等待您执行此操作


    是否更好,我将由您决定。

    另一个选择是使用新的Web Jobs功能。事实上,您的场景似乎非常常见(在图像处理方面),因此它被列为最常见的场景之一

    图像处理或其他CPU密集型工作。web的一个常见功能 网站是一种上传图像或视频的能力。通常你想 在上传内容后对其进行操作,但您不希望 用户等待您执行此操作


    是否更好,我将由您决定。

    另一个选择是使用新的Web Jobs功能。事实上,您的场景似乎非常常见(在图像处理方面),因此它被列为最常见的场景之一

    图像处理或其他CPU密集型工作。web的一个常见功能 网站是一种上传图像或视频的能力。通常你想 在上传内容后对其进行操作,但您不希望 用户等待您执行此操作


    无论是好是坏,我将由您来决定。

    Web作业对于Azure网站来说是一个令人兴奋的新开发。它们仍然处于alpha预览中,并且不与Web角色一起工作-这就是我正在使用的。希望他们能够开发该工具,因为它确实提供了一种更快、更方便的方式来添加此类处理实用程序,但与其他人合作方便带来了一些很大的限制。网络工作对我们来说是一个令人兴奋的新发展