如何分发服务器加载

时间:2015-06-07 06:48:45

标签: c# sql-server server asyncsocket distributed-system

我试图理解这个......

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

现在问题是成千上万的客户端同时连接到这个服务器,服务器没有高效响应。我想让这个服务器分布式和可扩展,以分配客户端负载。

我试图弄清楚是否有解决这个问题的方法。任何方便的解决方案都非常值得注意。

提前致谢...

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

客户端是负载均衡器

相反,有一个中心端点列出养殖服务器,然后让客户端随机选择要使用一段时间的服务器。然后,所选服务器可专门为该客户端提供资源,从本地复制远程服务器的数据(如果尚未复制)。

此选定的服务器将成为该客户端的主服务器,如果客户端更改服务器,将在此处创建数据并将其复制到其他服务器。

通过这种分布式设置,您的服务器可以部署在世界上任何地方。因此,您的客户也可以获得更好的延迟,您可以找到价格最优惠的主机,而不必依赖负载均衡器。

容器群集

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

相关问题