我正在构建一个高并发服务器,该服务器需要处理成千上万的活动插座。我最初使用Epoll构建了基于事件的服务器,并且它在中等规模(数千个活动插座)下运行良好。但是,当我有超过10,000个插座时,它似乎变得不稳定。因此,我要考虑Libevent(或Libev),因为它是一个成熟的项目,并声称能够"处理成千上万的活动插座"。
我也考虑使用UDT,因为它是"可靠的UDP",并且由于开销和内存使用情况,我开始对TCP遇到问题。因此,一种自然的想法是将Libevent用作我的事件框架工作,而UDT作为传输协议。我知道UDT提供了自己的EPOLL操作集。这是否意味着它不使用常规Linux Epoll?如果是这样,它将无法与libevent或libev一起使用,因为它们是基于Linux Epoll构建的。
是否有人在UDT和epoll/libevent/libev上工作过?UDT可以与其中任何一个合作吗?
任何帮助都将不胜感激。谢谢。
udt公开了一个可用于将协议与epoll一起使用的epoll API。有关更多信息,请参见http://udt.sourceforge.net/udt4/doc/epoll.htm。
在进行一些研究之后,我发现UDT插座不是文件描述符,因此无法使用Epoll处理。