如何创建像Skype / facebook / gtalk / paltalk / yahoo-messenger这样的实时聊天服务器?

时间:2013-06-22 13:18:05

标签: c# .net multithreading chat livechat

我想创建一个实时聊天服务器,目前我在该服务器中创建了一个服务器,我使用TCP协议与客户端通信,当客户端连接到我的服务器时,我为该客户端创建一个新线程,现在它是工作正常,因为我只连接了100个客户端,但我希望我的服务器一次至少处理大约20000个客户端。所以我非常关心我的服务器的性能,我明白创建20000个线程根本不是一个好习惯,所以我想要一些专家告诉我必须遵循哪些步骤来创建一个可以轻松处理的可扩展聊天服务器至少20000个客户。我希望你能给我一些链接。

1 个答案:

答案 0 :(得分:2)

你是对的,为每个客户创建一个新线程并不是一个好主意。您可以考虑基于NIO的TCP服务器。在这些中,有一个固定大小的线程池,这些线程同时为请求提供服务。线程不维护20000 TCP连接,而是在需要采取某些操作时系统唤醒其中一个可用线程。我使用Apache Mina这是一个基于JAVA的NIO TCP服务器来开发类似的服务,发现它可以很好地扩展。

如果您想构建一个类似于您提到的聊天服务器,您还需要担心如何以及在何处保存聊天记录,用户管理等。