Java. Вопрос по архитектуре сервера для игры

173
05 марта 2018, 00:24

Думаю над архитектурой сервера для игры и встал вопрос над тем, как обрабатывать подключения клиентов. Протокол - tcp/ip.

Стоит выбор между многопоточной архитектурой (1 клиент - 1 поток) и асинхронным вводом/выводом (когда чтение не блокирует поток, если данных нет, а возвращает 0 и поток может обрабатывать других клиентов, то есть 1 поток - много клиентов).

Игра - mmorpg, где потенциально люди могут стоять в городе и не передавать почти никакого ввода на сервер, но так же бывают динамичные моменты где важен быстрый ответ сервера.

Потоки при остановке не используют CPU циклы, более отзывчивые, однако держат оперативную память, чего бы не хотелось в слабоактивных местах, где от игроков почти не идет ввода.

Асинхронный подход использует меньше памяти, менее уязвим к слабоактивным клиентам, но менее эффективен для активных клиентов.

Выбор очень сложный, поэтому хотел бы спросить совета у более опытных, которые имели опыт с данными подходами, спасибо.

READ ALSO
Selenium WebDriver ожидание перед click()

Selenium WebDriver ожидание перед click()

Сейчас мои тесты выглядят примерно так

139
тормозит нажатие ListVeiw android

тормозит нажатие ListVeiw android

Доброго Впемени суток!!!Возникла проблемма c ListVeiw,повесил на него нажатие

169
Парсинг строки RxJava с изменением типа

Парсинг строки RxJava с изменением типа

Из очереди берем строку, парсим ее и проверяем соотвествует ли она требованиямЕсли соответствует, то отдаем в обработку соответствующему...

173
Связь standalone приложения и приложения на GlassFish

Связь standalone приложения и приложения на GlassFish

Есть обычное java application, работающее как процесс на моем домашнем сервереПотребовалось соединить его через WebSocket с web интерфейсом

151