繁体   English   中英

在多台服务器上上传文件的方法?

[英]Ways to Upload File on multiple servers?

  Web.Config
  <add key="Location" value="C:/Upload" />

   //controller
   private readonly string _Location = ConfigurationManager.AppSettings["Location"];

   var fileName = Path.GetFileName(httpPostedFile.FileName);
   var path = Path.Combine(_Location, fileName);
   httpPostedFile.SaveAs(path);

此代码在本地工作正常。 我意识到我们在生产环境中有一个负载平衡器。 我在负载均衡器后面有2台服务器A,B。 有没有办法在服务器A,B上上传文件? 我尝试做一些研究,大多数开发人员建议将文件上传到其中一个服务器上,然后每隔30分钟或1小时克隆一次上传文件夹..但是应该有一种标准的方法来通过代码执行此操作...(我有服务器名称和IP的)

Thnaks

您不应该尝试通过代码执行此操作。 如果其中一台服务器出现故障会怎样? 您需要检测到这一点,然后在文件重新启动时同步该文件。

对此有三种明智的选择:

  • 复制 - 假设您使用的是Windows,您可以设置分布式文件系统并使用此句柄来获取服务器之间的文件。
  • 同步 - 定期在生产服务器之间同步文件。 这将产生一个问题,如果您在A上传文件,它将不会立即在B上提供。
  • 共享存储 - 文件保存到两个服务器均可访问的网络共享。 在负载平衡环境中,如果提供文件的服务器不可用,则可能会出现单点故障。

开发人员是对的。 您的应用程序不应该关心它运行的服务器数量和服务器数量。 只需与您的系统管理员交谈并设置rsync或类似内容来同步目录,也可以提高响应速度,因为您的应用程序只需保存一次。

但是,如果必须如此,它就像:

foreach (string path in destinationPaths)
{
   httpPostedFile.SaveAs(path);
}

SaveAs()不保证是线程安全的,因此您无法对其进行并行化。 您可以复制流并将其并行写入,但同样,您不希望代码对此负责。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM