c# - 在服务器上均匀上传文件

标签 c# asp.net mysql file-upload distributed

用户将文件上传到我的网站,我需要将它们平均分布在多个服务器上,而且我需要在数据库中有一个列,说明特定文件上传到哪个服务器。

这是我的设计。

  1. 拥有服务器名称的枚举,即 server1、server2、server3。
  2. 从数据库中获取最后上传的服务器名称
  3. 如果最后上传的服务器是 server1,那么当前文件应该上传到 server2 并更新数据库, 如果最后上传的服务器是 server3\,那么当前文件应该上传到 server1 并更新数据库

应用程序和数据库目前托管在单个服务器上,但将来我们将转向负载平衡。

让我知道是否有除此之外的任何最佳方法。

最佳答案

您的解决方案应根据客户的使用方式发挥作用。我将简要介绍一下我以前是如何做到这一点的。

  • 轮询 DNS(将多个 IP 地址分配给同一域)
  • 基于 DNS 循环获取流量的多个 Web 服务器
  • 每个网络服务器都有自己专用的 SQL 服务器。
  • SQL 服务器使用复制来保持数据同步。
  • 用于文件上传的单一存储服务器。 (除非文件上传是主要功能,否则我怀疑您需要 >1)

优点: 非常容易扩展,直到您达到巨大的流量水平,此时您需要重新考虑 SQL 部分。

在购买硬件时,您可以将钱花在某些方面,以专注于成为文件服务器/SQL 或 Web 服务器

缺点: 这不提供任何真正的冗余。由于分层方法,可以说会使情况变得更糟。这可以通过一些托管 DNS 来解决,但这仍然不是一个完美的方法,而且我知道一些系统管理员对托管 DNS 的想法感到畏缩。

关于c# - 在服务器上均匀上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13833614/

相关文章:

c# - 如何将 Windows 窗体置顶?

asp.net - C# 中的嵌套重复器

c# - 如何在 jQuery 中调用 C# 方法?

mysql - Cakephp 查询数据库中的枚举字段

c# - URL 验证 IsWellFormedUriString 始终返回 true

c# - 检索对象集合

c# - 没有 SslStream 的 SSL 因为我想通过 SOCKS5 代理连接

asp.net - wcf:将用户名添加到消息 header 安全吗?

mysql - 什么可能导致 Visual Studio 2010 中的 Crystal Report 显示乱码?

mysql - 从表中选择日期,其中我的列表中的所有条目都在该日期的表中