Как правильно распределять нагрузку между несколькими машинами
Всем привет. Помогите решить как распределить нагрузку с минимальной задержкой.
Значит так: Имеется:
Координатор - в одном экземпляре который ожидает подключения от серверов, прокси, и платформ
Сервер - игровой сервер к которому игроки подключаются через прокси.
Прокси - то через что игроки перемещаются по серверам без выхода в главное меню.
Платформа - приложение запущенное в одном экземпляре на каждом (компьютере(дедике)). Отвечает за запуск новых прокси, серверов, удаление и обновление.
Все объекты подключаются к координатору. И без координатора не могут работать. Для обмена информацией между серверами, прокси и т.д. использую netty.
Вопрос в следующем. Допустим у меня будет 10 тысяч серверов, прокси и несколько десятков платформ. Каждый из них постоянно будет через себя делать запросы к другим серверам, прокси. Это значит что координатор должен постоянно обрабатывать большое количество информации. Вдруг он не станет вывозить. Как можно разгрузить его?
Предположим что я добавлю так сказать прокси(которую назову синхронизирующие ядро). И только оно будет иметь подключение к координатору.
К синхронизирующему ядру(ядрам) будет подключаться все остальное. Координатор будет держать всю информацию от каждого ядра в себе, а так же при поступлений новой информации сразу же оповещать все ядра. Таким образом координатору больше не будет держать связь со всеми на прямую. А в случае потери связи с одним из ядер. Все будут подключаться к другому ядру.
Но мне кажется появится рассинхрон.
Предположим что игрок подключается к "проекту"(всей системе через домен). Прокси делает запрос ядру. Ядро отвечает что такого игрока в системе нету, впускай его. - Все ОК.
А если в одну и ту же секунду подключается один и тот же игрок с разных компьютеров. И когда ядру впускает его и сообщает что он подключился координатору, а он не успел передать информацию о другом игроке другим ядрам. То получается что в проекте будет одновременно 2 игрока.....
Что скажите? Что делать? На какие проекты посмотреть их реализацию?
#java #netty