Блокировки и два уровня баз: как устроена архитектура Diablo 2 Resurrected
В обозримом будущем архитектуру серьезно переделают.
Кстати, на сайте читать удобнее
Blizzard опубликовала постмортем, посвященный стартовым техническим проблемам Diablo 2 Resurrected. Помимо рассказа о самих проблемах разработчики вкратце описали серверную архитектуру игры.
Оказалось, что Blizzard использует два уровня баз данных и до сих пор применяет фрагменты серверного кода, оставшиеся от оригинальной Diablo 2. Впрочем, в обозримом будущем это изменится: сейчас разработчики перекраивают архитектуру.
У Resurrected есть опорная база данных, где хранятся все данные всех персонажей из всех регионов. Чтобы не создавать на основную базу слишком большую нагрузку, ее используют в качестве «холодного» хранилища.
«Горячие» базы — свои у каждого региона, они есть в Азии, Европе, Северной Америка. Такие базы хранят информацию только о персонажах в конкретном регионе, время от времени данные из «горячей» локальной базы переписываются в «холодную» глобальную.
Во время игры данные игрока могут сохраняться в обеих базах: и в региональной, и в глобальной. Это неправильно, архитектуру поменяют: информация будет сбрасываться в глобальную базу только после того, как игрок «разлочивается» на локальной базе — например, выходя из игры. Такой подход позволит повысить производительность глобальной базы.
Архитектура стала причиной потери прогресса. Когда игрок подключается к Diablo 2 Resurrected, данные его персонажа перебрасываются в региональную базу данных и блокируются в глобальной. Если региональная база падает из-за высокой нагрузки, пользовавшихся ею игроков нельзя просто перенести на другой сервер.
Можно только снять блокировку в глобальной базе. Тогда игрок сможет подключиться к другому серверу, но есть вероятность, что в глобальной базе будут храниться слегка устаревшие данные о его персонаже.
За ключевые функции игры отвечает единственный сервис: клиенты Diablo 2 Resurrected взаимодействуют с ним, когда игроки подключаются или отключаются от сессии, загружают списки игр, получают информацию о состоянии серверов.
Запустить дополнительные экземпляры сервиса нельзя — так обеспечивается максимальная актуальность данных. Разработчики не уточняют, существует ли такой сервис в одном экземпляре на весь мир или только на регион.
Единственный сервис тоже переделают: разработчики разделят его на несколько микросервисов, один из которых, к примеру, будет отвечать только за показ доступных игр. Предполагается, что это позволит повысить производительность.
- Overwatch 2 и Diablo 4 отложены, из Blizzard ушла со-президент: главное из отчета Activision Blizzard
- В Diablo 2 Resurrected запустили очереди на вход без поддержки на консолях — те «работают вслепую»
- Утекли системные требования ремастеров Grand Theft Auto и детали обновленной графики
- Vice: на самом деле Twitch взламывают во второй раз — в 2014 году хакеры слили вообще все
- Почему Diablo 2 Resurrected регулярно падает и что с этим делают: объясняют разработчики
- Diablo 2 Resurrected вышла 19 дней назад. Почти треть этого времени у игры проблемы с серверами