如何分配服务器负载

How to distribute the server Load

我正在努力解决这个问题...

我有一个由一台服务器(基本上是一个 N 层控制台应用程序,使用 C# 进行 TCP 异步套接字编程)、一个 MSSQL 数据库和多个客户端组成的应用程序。

现在的问题是成千上万的客户端同时连接到此服务器,而服务器没有响应efficiently.I希望使此服务器具有分布式和可扩展性以分配客户端负载。

我正在尝试找出是否有解决此问题的方法problem.Any非常方便的解决方案非常值得赞赏。

提前致谢...

我会让服务器应用程序集群可用,这样您就可以在不同的虚拟或物理计算机上多次启动实例。比我会选择一台计算机作为负载平衡器。在您的情况下,一个很好的负载平衡工具是 HAproxy。该代理将平衡不同服务器上的工作负载。这将为您带来最佳性能。

你在细节上很吝啬,这不是一个直接的解决方案:但我总是避开负载平衡器(中心故障点,你只能有效地使用一个数据中心或区域)。

客户端是负载均衡器

相反,有一个中央端点来列出养殖的服务器,然后让客户端随机 select 一个服务器使用一段时间。然后 selected 服务器可以专注于为该客户端提供资源,从本地复制远程服务器的数据,如果还没有的话。

此 selected 服务器将成为该客户端的主服务器,如果客户端更改服务器,数据将在那里创建并稍后复制到其他服务器。

通过这种分布式设置,您的服务器通常可以部署在世界任何地方。因此,您的客户也可以获得更好的延迟,并且您可以找到价格最优惠的托管服务,而无需绑定到负载均衡器。

容器集群

您会发现像 coreos 这样的集群很有趣,但设置起来要复杂得多。但不要排除它。对于这样一个简单的控制台应用程序,调整您的解决方案并控制您自己更简单的可扩展基础设施并不难,没有额外的模糊层。