selectvs民意调查vs epoll
我正在devise一个新的服务器,需要支持数千个UDP连接(大约100,000个会话)。 任何input或build议使用哪一个?
CURL的作者写了一篇关于民意调查vs select和事件库的精彩文章。
如果你使用Linux,答案是epoll,如果你使用的是FreeBSD或Mac OS X,则是kqueue,如果你使用的是Windows,则是I / O完成端口。
你会(几乎肯定)想要研究的一些额外的东西是:
- 负载平衡技术
- multithreading联网
- 数据库架构
- 完美的哈希表
此外, 重要的是要注意,UDP不具有“连接”而不是TCP。 由于debugging基于networking的解决scheme可能具有挑战性,因此从小规模开始并扩大规模也是符合您的最佳利益的。
Linux: epoll
FreeBSD: kqueue
Windows:??
有一些包装库,比如libevent和libev,它们可以为你抽象。