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

3
我有一台专用服务器,运行着我制作的聊天服务器。但是服务器几乎超载了,我想添加另一台服务器来平衡用户。
这两台服务器都是Linux Ubuntu 12.04服务器,我制作的聊天程序是用C#和.NET与Mono开发的。
问题是,如果我在另一台计算机上打开另一个聊天服务器,如何让用户在两个服务器之间进行通信?
我将尽力更好地解释:
用户A连接到服务器A。 用户B连接到服务器B。
如果用户A向连接到服务器B的用户B发送消息,我该如何将消息重定向到其他服务器?最佳解决方案是什么?
先行感谢。
2个回答

2
首先,每当您遇到性能问题时,应该首先尝试测量它的具体位置。通过查找为什么和哪里会出现缓慢,您可能可以显著提高系统的性能。这样,您可能根本不需要扩展系统。您还可以尝试向上扩展而不是向外扩展,这通常更容易。
如果这种方法行不通,我建议切换到像XMPP或IRC这样的现有聊天系统。有很多适用于C#的优秀XMPP库,所以这可能是最好的解决方案。
最后,如果您真的想按照您描述的方式扩展自己的聊天系统,我建议只需通过TCP发送JSON消息。您可以使用复杂的RPC内容或REST API,但对于此用例,我认为您应该保持简单和轻量级。

我在这里表示同意。我确信使用分析器会带来震惊 - 如果你不是Skype或其他极端情况之一,那么几乎不可能通过聊天使一个体面的甚至低端服务器超载。连接20,000个用户不应过于繁重。这更多地是“糟糕的编程”而不是“我需要扩展”。 - TomTom
好的,我明白了,我会检查我的代码。但是... Facebook和Skype如何处理同时连接数百万用户的情况呢?我不认为它们只有一个服务器... - Mauro Valvano
Facebook实际上使用XMPP。Skype使用自己的专有基础设施。我猜这是从他们的VoIP业务发展而来的。 - dax

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接