【问题标题】:Upload files evenly on servers在服务器上均匀上传文件
【发布时间】:2012-12-12 05:49:48
【问题描述】:

用户会将文件上传到我的网站,我需要将它们均匀地分布在多台服务器上,并且我需要在数据库中设置一列,说明特定文件上传到哪个服务器。

这是我的设计。

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

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

如果有除此之外的最佳方法,请告诉我。

【问题讨论】:

  • 我认为最好弄清楚您将如何执行负载平衡。您提出的方法只会给您一个选择:路由到服务器的静态 DNS 值。如果您想要真正的故障转移负载平衡方案,这并不理想。

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


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2010-09-28
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 2020-08-08
    • 2015-02-27
    • 2020-06-28
    相关资源
    最近更新 更多