66

I am designing a new server which needs to support thousands of UDP connections (somewhere around 100,000 sessions). Any input or suggestions on which one to use?

4

3 回答 3

46

如果你使用 Linux,答案是 epoll,如果你使用 FreeBSD 或 Mac OS X,答案是 kqueue,如果你在 Windows 上,答案是 i/o 完成端口。

您(几乎可以肯定)想要研究的其他一些事情是:

  • 负载平衡技术
  • 多线程网络
  • 数据库架构
  • 完美的哈希表

此外,重要的是要注意,与 TCP 相比,UDP 没有“连接”。由于调试基于网络的解决方案可能具有挑战性,因此从小处着手并扩大规模也符合您的最大利益。

于 2010-11-05T21:58:06.123 回答
43

CURL 的作者写了一篇关于poll vs select vs 事件库的精彩文章。

于 2011-12-30T01:18:13.800 回答
18

Linux:epoll FreeBSD:kqueue Windows:??

有一些包装库,例如 libevent 和 libev,可以为您抽象这个。

于 2010-10-28T04:48:44.400 回答