Архитектура серверов Bannerlord Online

Status
Not open for further replies.
Периодически мы получаем сообщения с просьбой рассказать от внутреннем устройстве серверов Bannerlord Online и решили поделиться этой информацией, особенно, после серьезного изменения в серверной архитектуре.
Сервера Bannerlord Online достаточно сложны, как и у любого MMO проекта, т.к. обслуживают большое количество пользователей.

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



Эта версия работала до середины 2023 года, но с каждым днем производительность падала, в первую очередь из-за того, что все бои обрабатывались на одном сервере и весь журнал действий игроков дублировался в оперативную память сервера для быстрого доступа из наших внутренних инструментов.

Скриншоты работы старой версии сервера (EU):



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


В июле 2023 года мы завершили первую часть работы над изменением серверного кода, а в декабре 2023 года внесли финальные правки в наш серверный код.
В итоге, мы полностью отказались от кода оригинальной игры, заново реализовав все необходимые механики самостоятельно, а также перенесли сервера на платформу Linux, что в последствии позволило нам открыть сервера в Океании, а так-же в Материковом Китае.
Помимо этого, мы вынесли расчет боев на отдельные машины, чтобы хватало ресурсов даже при очень высоком онлайне, а журналы действий игроков теперь не дублируются в оперативную память и нам не нужно постоянно увеличивать ее количество, чтобы сохранять все новые действия.

Текущая архитектура сервера стала мульти-сервисной и выглядит примерно так:



Из схемы видно, что мы вынесли расчет боев на отдельные машины и можем увеличивать их количество при необходимости, вынесли обработку повторов боев, чтобы разгрузить основной сервер и стали хранить их в облачном хранилище у стороннего провайдера. Скачивание этих реплеев также осуществляется через облако, что позволило дополнительно разгрузить наш основной сервер.
 
Status
Not open for further replies.