如何对聊天服务器进行负载均衡?

时间:2014-04-26 08:09:46

标签: c# mono chat load-balancing

我有一个专用服务器来运行我制作的聊天服务器。但服务器几乎超载,我想添加另一台服务器来平衡用户。

服务器都是Linux Ubuntu 12.04服务器,我制作的聊天程序是用c#和.NET用Mono开发的。

问题是,如果我在另一台计算机上打开另一个聊天服务器,我怎么能让用户可以在两台服务器之间进行通信?

我会尝试更好地解释:

用户A连接到服务器A. 用户B连接到服务器B.

如果用户A向连接到服务器B的用户B发送消息,我该如何将消息重定向到其他服务器?什么是最好的解决方案?

提前谢谢。

2 个答案:

答案 0 :(得分:2)

首先,每当遇到性能问题时,首先应该尝试测量其确切位置。也许您可以通过查看缓慢的原因和位置,以某种方式显着提高系统的性能。这样您可能根本不需要扩展系统。您也可以尝试向上扩展而不是向外扩展,这通常更容易。

如果失败,我建议切换到现有的聊天系统,如XMPP或IRC。 C#有很棒的XMPP库,所以这是我认为最好的解决方案。

最后,如果你真的想按照你描述的方式扩展自己的聊天系统,我建议你只需要通过TCP发送消息作为JSON。您可以使用花哨的RPC内容或REST API,但对于这个用例,我认为您应该尽可能保持简单和轻量级。

答案 1 :(得分:1)

这取决于哪个部分确实缺失。负载平衡系统有很多部分。

我的猜测是你错过了支持部分,这​​可能不那么明显。

IPAddress - >负载均衡器< = x-Servers =>背板

这与我们在背面部分中使用的内容相似:

http://www.tugberkugurlu.com/archive/scaling-out-signalr-with-a-redis-backplane-and-testing-it-with-iis-express

我希望它指出你正确的方向。