Является ли неблокирующий Java NIO еще медленнее, чем ваш стандартный поток для асинхронного сокета на соединение?
Кроме того, если бы вы использовали потоки для каждого подключения, вы бы просто создали новые потоки или вы бы использовали очень большой пул потоков?
Я пишу сервер MMORPG на Java, который должен иметь возможность масштабировать 10000 клиентов, легко предоставляя достаточно мощное оборудование, хотя максимальное количество клиентов - 24000 (чего я считаю невозможным достичь для потока на модель подключения из-за ограничение на 15000 потоков в Java). Из трехлетней статьи я слышал, что блокирование ввода-вывода с нитью на модель подключения было на 25% быстрее, чем NIO (а именно, этот документ http://www.mailinator.com/tymaPaulMultithreaded.pdf), но может ли это быть достигнуто и в этот день? С тех пор Java сильно изменилась, и я слышал, что результаты были сомнительными при сравнении реальных сценариев, поскольку используемая VM не была Sun Java. Кроме того, поскольку это сервер MMORPG с несколькими параллельными пользователями, взаимодействующими друг с другом, будет ли использование синхронизации и методов обеспечения безопасности потоков снижать производительность до такой степени, когда один поточный селектор NIO, обслуживающий 10000 клиентов, будет быстрее? (вся работа не обязательно должна обрабатываться в потоке с помощью селектора, ее можно обрабатывать на рабочих потоках, например, как работает MINA/Netty).
Спасибо!