1

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

所以这是我的设计。

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

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

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

4

1 回答 1

1

您的解决方案应该取决于您的客户如何使用它。我将简要介绍一下我以前是如何做到这一点的。

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

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

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

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

于 2012-12-12T05:59:07.977 回答