Лучшее  🚀
15.10.2021 в 18:39 Evernews

Блокировки и два уровня баз: как устроена архитектура Diablo 2 Resurrected

В обозримом будущем архитектуру серьезно переделают.

Кстати, на сайте читать удобнее

Blizzard опубликовала постмортем, посвященный стартовым техническим проблемам Diablo 2 Resurrected. Помимо рассказа о самих проблемах разработчики вкратце описали серверную архитектуру игры.

Оказалось, что Blizzard использует два уровня баз данных и до сих пор применяет фрагменты серверного кода, оставшиеся от оригинальной Diablo 2. Впрочем, в обозримом будущем это изменится: сейчас разработчики перекраивают архитектуру.

У Resurrected есть опорная база данных, где хранятся все данные всех персонажей из всех регионов. Чтобы не создавать на основную базу слишком большую нагрузку, ее используют в качестве «холодного» хранилища.

«Горячие» базы — свои у каждого региона, они есть в Азии, Европе, Северной Америка. Такие базы хранят информацию только о персонажах в конкретном регионе, время от времени данные из «горячей» локальной базы переписываются в «холодную» глобальную.

Во время игры данные игрока могут сохраняться в обеих базах: и в региональной, и в глобальной. Это неправильно, архитектуру поменяют: информация будет сбрасываться в глобальную базу только после того, как игрок «разлочивается» на локальной базе — например, выходя из игры. Такой подход позволит повысить производительность глобальной базы.

Архитектура стала причиной потери прогресса. Когда игрок подключается к Diablo 2 Resurrected, данные его персонажа перебрасываются в региональную базу данных и блокируются в глобальной. Если региональная база падает из-за высокой нагрузки, пользовавшихся ею игроков нельзя просто перенести на другой сервер.

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

За ключевые функции игры отвечает единственный сервис: клиенты Diablo 2 Resurrected взаимодействуют с ним, когда игроки подключаются или отключаются от сессии, загружают списки игр, получают информацию о состоянии серверов.

Запустить дополнительные экземпляры сервиса нельзя — так обеспечивается максимальная актуальность данных. Разработчики не уточняют, существует ли такой сервис в одном экземпляре на весь мир или только на регион.

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

Читать далее