Как правильно распределять нагрузку между несколькими машинами

Всем привет. Помогите решить как распределить нагрузку с минимальной задержкой.

Значит так: Имеется:

Координатор - в одном экземпляре который ожидает подключения от серверов, прокси, и платформ

Сервер - игровой сервер к которому игроки подключаются через прокси.

Прокси - то через что игроки перемещаются по серверам без выхода в главное меню.

Платформа - приложение запущенное в одном экземпляре на каждом (компьютере(дедике)). Отвечает за запуск новых прокси, серверов, удаление и обновление.

Все объекты подключаются к координатору. И без координатора не могут работать. Для обмена информацией между серверами, прокси и т.д. использую netty.

Вопрос в следующем. Допустим у меня будет 10 тысяч серверов, прокси и несколько десятков платформ. Каждый из них постоянно будет через себя делать запросы к другим серверам, прокси. Это значит что координатор должен постоянно обрабатывать большое количество информации. Вдруг он не станет вывозить. Как можно разгрузить его?

Предположим что я добавлю так сказать прокси(которую назову синхронизирующие ядро). И только оно будет иметь подключение к координатору.

К синхронизирующему ядру(ядрам) будет подключаться все остальное. Координатор будет держать всю информацию от каждого ядра в себе, а так же при поступлений новой информации сразу же оповещать все ядра. Таким образом координатору больше не будет держать связь со всеми на прямую. А в случае потери связи с одним из ядер. Все будут подключаться к другому ядру.

Но мне кажется появится рассинхрон.

Предположим что игрок подключается к "проекту"(всей системе через домен). Прокси делает запрос ядру. Ядро отвечает что такого игрока в системе нету, впускай его. - Все ОК.

А если в одну и ту же секунду подключается один и тот же игрок с разных компьютеров. И когда ядру впускает его и сообщает что он подключился координатору, а он не успел передать информацию о другом игроке другим ядрам. То получается что в проекте будет одновременно 2 игрока.....

Что скажите? Что делать? На какие проекты посмотреть их реализацию?

#java #netty


Ответы (0 шт):