Может ли epoll/libevent/libev работать с UDT?
Я создаю сервер с высоким уровнем параллелизма, который должен обрабатывать десятки тысяч активных сокетов. Сначала я использовал epoll для создания сервера на основе событий, и он работал хорошо в умеренном масштабе (несколько тысяч активных сокетов). Но это кажется нестабильным, когда у меня есть параллелизм более 10000 сокетов. Поэтому я думаю о libevent(или libev), так как это зрелый проект, и утверждаю, что он способен "обрабатывать десятки тысяч активных сокетов".
Я также думаю об использовании UDT, потому что это "надежный UDP", и у меня начинаются проблемы с TCP из-за накладных расходов и использования памяти. Поэтому естественной мыслью является использование libevent в качестве моей структуры событий и UDT в качестве протокола передачи. Я знаю, что UDT предоставляет свой собственный набор операций epoll. Значит ли это, что он не будет работать с обычным linux epoll? Если это так, он не будет работать с libevent или libev, потому что они построены на основе Linux epoll.
Есть ли кто-нибудь, кто работал над UDT и epoll / libevent / libev? Может ли UDT работать с любым из них?
Любая помощь будет оценена. Благодарю.
2 ответа
UDT предоставляет API epoll, который можно использовать для использования протокола с epoll. см. http://udt.sourceforge.net/udt4/doc/epoll.htm для получения дополнительной информации.
После некоторых исследований я выяснил, что сокеты UDT не являются файловыми дескрипторами, поэтому не могут быть обработаны с помощью epoll.