用户将文件上传到我的网站,我需要将它们平均分布在多个服务器上,而且我需要在数据库中有一个列,说明特定文件上传到哪个服务器。
这是我的设计。
- 拥有服务器名称的枚举,即 server1、server2、server3。
- 从数据库中获取最后上传的服务器名称
- 如果最后上传的服务器是 server1,那么当前文件应该上传到 server2 并更新数据库, 如果最后上传的服务器是 server3\,那么当前文件应该上传到 server1 并更新数据库
应用程序和数据库目前托管在单个服务器上,但将来我们将转向负载平衡。
让我知道是否有除此之外的任何最佳方法。
最佳答案
您的解决方案应根据客户的使用方式发挥作用。我将简要介绍一下我以前是如何做到这一点的。
- 轮询 DNS(将多个 IP 地址分配给同一域)
- 基于 DNS 循环获取流量的多个 Web 服务器
- 每个网络服务器都有自己专用的 SQL 服务器。
- SQL 服务器使用复制来保持数据同步。
- 用于文件上传的单一存储服务器。 (除非文件上传是主要功能,否则我怀疑您需要 >1)
优点: 非常容易扩展,直到您达到巨大的流量水平,此时您需要重新考虑 SQL 部分。
在购买硬件时,您可以将钱花在某些方面,以专注于成为文件服务器/SQL 或 Web 服务器
缺点: 这不提供任何真正的冗余。由于分层方法,可以说会使情况变得更糟。这可以通过一些托管 DNS 来解决,但这仍然不是一个完美的方法,而且我知道一些系统管理员对托管 DNS 的想法感到畏缩。
关于c# - 在服务器上均匀上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13833614/