Будут ли порты завершения ввода-вывода (Windows) или асинхронный ввод-вывод (AIO) повышать производительность многопоточных серверов, обрабатывающих большой объем запросов?
-
21-09-2019 - |
Вопрос
Я хочу использовать порты завершения ввода-вывода для Windows и асинхронный ввод-вывод (AIO) для версий solaris и Linux моего серверного приложения.Сервер приложений является многопоточным, и он может принимать множество одновременных TCP-подключений и может обрабатывать множество запросов за одно соединение.Достаточно ли этого критерия для использования последней версии AIO?.Существует ли какая-либо стандартизация, с помощью которой один код может быть использован для всех платформ.
Спасибо, Нага
Решение
Каждый запрос будет обработан отдельным обособленным потоком.
Порты завершения ввода-вывода в Windows работают по-другому...Они позволяют вам использовать очень небольшое количество потоков для обработки огромных объемов операций ввода-вывода.
Например, здесь: http://www.lenholgate.com/blog/2005/10/the-64000-connection-question.html Я говорю об обработке 64 000 одновременных активных TCP-соединений примерно с 4 потоками...
Для Linux я ожидаю, что маршрут, который нужно выбрать, заключается в использовании событие libevent.
Для кроссплатформенности кто-нибудь обязательно предложит ASIO ( АЗИО ).