如何最好的服务器>从服务器(不是Web服务器)

我试图build立一个服务器,将处理许多并发连接到iPhone客户端没有multithreading。 我会每隔10-30秒向所有客户端发送消息,但是大多数消息都是相同或非常相似的,并且易于分类。 鉴于高并发性的设置,但对数据sorting的需求低,我试图find我的服务器设置的最佳解决scheme。

我一直在寻找EventMachine,Twisted,node.js等事件驱动的软件包。看起来Twisted和EventMachine基本上是一个折腾,节点可能更快,但还没有完全开发的准备。 这让我想到了几个问题:

  1. Node是否不适合重要的开发,因为它的API缺乏,而且没有完全刷新? 或者可能有错误,会使我的发展地狱?

  2. 我正在考虑用C语言编写代码,因为磁盘I / O非常less,大部分应该很容易被caching。 如果是这样,似乎我应该使用非阻塞的UDP套接字,并处理自己的ACK。 我已经看过poll(),select(),epoll(),但是我很难确定哪个是最好的,以及如何调用它们。 有什么想法吗?

  3. 如果我使用Twisted或EventMachine(除语言之外,还有其他区别吗?我现在还不知道,所以我是空白的),我应该尝试使用TCP还是UDP? 这些语言可以在不到一秒的时间内处理1kB到10,000个客户端吗?

我会很感激任何见解/build议,现在我疯狂地绕着太多的文档和博客旋转我的轮子,没有编程背景来sorting它(至less还有什么理智)。

谢谢! 麦克风

我build议你在Mac OS X雪豹上使用C开发你的服务器,使用kqueue()和kevent()或kevent64()来复用传入的客户端连接。

看看IRC服务器免费提供的源代码。 这些服务器同时处理10K以上的客户端。

开始阅读这个页面 。 尽pipe有些过时,但仍然是一个很好的参考。