Может ли 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.

Другие вопросы по тегам