Я разрабатываю новый сервер, который должен поддерживать тысячи подключений UDP (где-то около 100 000 сеансов). Любой ввод или предложения, по которым можно использовать?select vs poll vs epoll
ответ
Linux: epoll
FreeBSD: kqueue
Windows: ??
Существуют библиотеки обертки, такие как libevent и libev, которые могут абстрагировать это для вас.
Ответ: epoll, если вы используете Linux, kqueue, если используете FreeBSD или Mac OS X, и порты завершения ввода/вывода, если вы находитесь в Windows.
Некоторые дополнительные вещи, которые вы (почти наверняка) хотят исследования являются: методы балансировки
- нагрузки
- многопоточных сетей
- архитектура базы данных
- Совершенные хэш-таблицы
Кроме того, это важно отметить в UDP нет «соединений», а не TCP. Было бы также в ваших интересах начать небольшие и масштабные масштабы, поскольку отладка сетевых решений может быть сложной задачей.
Спасибо за ответ. Я понимаю, что нет такой вещи, которая называется UDP-соединениями, поскольку она ориентирована на соединение без привязки. Приложение, которое я имел в виду, основано на сеансе, поэтому вместо сеанса я упоминал его как соединение. Виноват. Кроме того, я попробовал более 200 000 сеансов на основе select с многопоточным приложением. Просто хотел оптимизировать. Кроме того, я не новичок в создании масштабируемой архитектуры. Балансировка нагрузки может быть не совсем подходящей для вида iam сервера. Это, безусловно, многопоточная сеть. Скорее всего, будет использовать какой-то образец производителя/потребителя. – ravi
Автор книги CURL написал удивительную статью на .
Это руководство не помогло. В основном предполагалось, что все знают основные различия между этими тремя. – enigmaticPhysicist
Пожалуйста, предоставьте хотя бы краткую сводку, а не просто голую ссылку. – MikeMB
@enigmaticPhysicist - Я согласен с вами. Я нашел эту статью более подробно, надеюсь, что она поможет: https://www.ulduzsoft.com/2014/01/select-poll-epoll-practical-difference-for-system-architects/ –
- 1. Может ли epoll полностью заменить select/poll, когда он доступен?
- 2. Когда использовать poll() vs take() в ExecutorCompletionService
- 3. SELECT TableName.Col1 VS SELECT Col1
- 4. SELECT * vs SELECT * LIMIT (Производительность)
- 5. rails collection_select vs. select
- 6. SELECT EXPAND vs TRAVERSE
- 7. выберите * vs select column
- 8. Href vs select box
- 9. Использование select()/poll() в драйвере устройства
- 10. libusb и poll/select
- 11. Multiple Select vs Single Select Statement
- 12. «SELECT * FROM ...» VS «SELECT ID FROM ...» Производительность
- 13. SQL Select Vs Binary Search
- 14. last_insert_id() vs SELECT Max (ID)
- 15. Scala AST Select vs Apply
- 16. Производительность MySQL COUNT vs SELECT
- 17. mysqldump vs select in outfile
- 18. jQuery selectors: multiselect vs select
- 19. using select loop vs fdisset
- 20. SQL Join Table vs. Select
- 21. select function windows vs linux
- 22. LINQ/From-Select vs ForEach
- 23. (powershell) Select-String vs Findstr
- 24. DLOOKUP vs Несколько запросов SELECT
- 25. SELECT - SQL vs T-SQL?
- 26. Вертикальный выровнять SELECT vs TEXTAREA
- 27. SELECT ... WHERE IN vs JOIN
- 28. Использование '*' в списке элементов для выбранного оператора, например. SELECT * vs. SELECT *, a vs SELECT a, *
- 29. capybara check input type (fill_in vs check vs select)
- 30. Win32 select/poll/eof/НИЧЕГО?
Какие вы на вас? разные os имеют разные специфические. –
Linux Redhat enterprise version 5 – ravi
@ravi: Вы также должны проверить на основе событий (асихронные) фреймворки, такие как Twisted, где вы можете написать свой сервер и протестировать его различными способами опроса: [TwistedMatrix.com: Выбор реактора] (http : //twistedmatrix.com/documents/current/core/howto/choosing-reactor.html) –