Для начала от сервера требуется самое простое: пересылать данные от одного игрока ко всем остальным. Всего одновременно подключено человек 10. Проблема в том, что игра в жанре аркады, и нужен постоянный обмен данными. При текущей реализации, периодически (~один раз в 20 сек.) сервер виснет на секунду или чуть меньше. Происходит это только если клиент и сервер на разных машинах. Не знаю как с этим бороться.
Может посоветуете какие статьи/книги по данной теме? Желательно на русском, ибо с английским не очень дружу.
Или в двух словах опишите наиболее верную архитектуру для такого сервера?
Если подвисает раз в 20 сек., то скорее всего срабатывает GC. Можно попробовать добавить опцию -Xmx 1G при старте JVM, тем самым выделив 1G оперативки, тогда GC будет реже срабатывать.
Можно еще и сам GC потюнить, гуглите на тему GC CMS tuning или Java GC types для смены GC на какой-нибудь другой.