Поток Java на модель подключения по сравнению с NIO

Является ли неблокирующий Java NIO все еще медленнее, чем ваш стандартный поток на асинхронный сокет подключения?

Кроме того, если вы должны были использовать потоки для каждого соединения, вы бы просто создали новые потоки или использовали бы очень большой пул потоков?

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

Спасибо!

37
задан Jonas 10 July 2011 в 22:46
поделиться