Новая технология меняет EVE Online кардинальным образом. Представлена платформа Quasar
Разработчики подготовили большой техноблог про улучшение серверной архитектуры игры
В прошлом месяце команда CCP Games совершила прорыв в основах работы серверов MMORPG EVE Online, который ознаменует начало новой эпохи. Студии удалось внедрить современные технологии, позволяющие не только снизить нагрузку, но и открыть огромные возможности для улучшения вселенной Нового Эдема.
Последний раз сетевой уровень кардинально изменялся в 2011 году, когда компания CCP представила реализацию IOCP под названием CarbonIO, которая в конечном итоге стала основой печально известного замедления времени. Позже разработчики приступили к созданию чернового варианта Project Sanguine для решения проблем среды CarbonIO. Каждая оптимизация в EVE Online сводится к тщательному согласованию с Python Global Interpreter Lock (GIL). Просто Python может делать только одну вещь за раз. Принятие EVE Stackless Python, реализация IOCP через StacklessIO, затем CarbonIO и совместное проектирование с учетом замедления времени - все это поддерживает невероятную иллюзию о том, что Новый Эдем живой. Но что, если бы GIL не приходилось использовать для каждой возникающей идеи? Как можно извлечь выгоду из стремительного роста числа ядер в отрасли по сравнению с тактовой частотой отдельных процессоров?
В этом отношении было проведено множество экспериментов, имеющих непосредственное отношение к Project Sanguine, наиболее публичным из которых является EVE: Aether Wars. Цель заключалась не в том, чтобы коренным образом изменить модель коммуникации в EVE Online, а вместо этого изменить симуляционную модель. Project Sanguine же сконцентрировался на решении скучных элементов, которые представляют собой набор функций EVE. Симуляция почти 9 000 игроков в одном пространстве могла бы быть быстрее, если бы Новый Эдем не занимался обслуживанием огромного количества других вещей. Таким образом, Project Sanguine преследовал две цели: обойти GIL и создать условия для новых возможностей.
Первая форма Project Sanguine появилась с ESI и презентацией EVE Portal в конце 2016 года. Благодаря этим проектам в серверной архитектуре EVE Online была создана новая парадигма - сервисная шина. С ее помощью заново были обнаружены слабые места GIL, но с более четкой картиной, включая маршрутизацию сообщений, сериализацию и передачу данных. Если один корабль запускает один лазер среди 1000 кораблей, это 1000 сообщений, которые необходимо немедленно отправить по всему миру. Симуляция должна адресовать это сообщение 1000 адресатам как копию (маршрутизация сообщений), преобразовать эти данные в проводной формат (сериализация), а затем отправить их (передача). В большинстве случаев CarbonIO решает каждую из этих проблем, но в рамках полномочий GIL. CarbonIO уже довольно долгое время хорошо обслуживает EVE Online, но с 2011 года многое изменилось в бурных морях интернета.
Увидев эволюцию шаблонов в этой новой экосистеме стало ясно, что для использования парадигмы необходим более стандартизованный протокол. Благодаря интеграции удаленного вызова процедур (gRPC) разработчики смогли объединить возможности маршрутизации сообщений сервисной шины с мгновенной сериализацией буферов протокола (стандарт сообщений gRPC). По-прежнему необходимо планировать данные с помощью GIL для передачи, но теперь они буферизуются на более высоком уровне в отдельном потоке. Это означает, что вся передача, сериализация и маршрутизация сообщений происходят вне GIL, за исключением копии памяти, которая должна происходить между ними. Быстрее этого быть не может.
Теперь Новый Эдем может обрабатывать значительно больше данных. Когда началось создание ESI, CCP Games приступили к внедрению большего количества облачных технологий, таких как Kubernetes. По мере того, как стала очевидной потребность в простых примитивах синхронизации для обработки этой информации, был сделан большой шаг в сторону языка Go. Со временем эти технологии накапливались в отдельную экосистему и началась работа по созданию функций, позволяющих использовать преимущества новой способности работать с Новым Эдемом в соответствии с современными стандартами. Многие из них уже доступны игрокам.
Первым стал трекер активности. Он позволяет отслеживать всю вашу активность. Существует также его вариация с системой возможностей, которая пытается предсказать траекторию капсулера и выделить более интересные части Нового Эдема. Кроме того, сервисная шина использовалась для списков лидеров арены бездны. Огромный объем работы был проделан для предоставления командам разработчиков экосистемы, позволяющей использовать мощь архитектуры обмена сообщениями с этими функциями. Однако каждая из функций ограничена возможностями клиента игры.
До выпуска планов навыков каждая функция передавала данные на сервер через CarbonIO. Теперь это работает иначе, поскольку операции плана навыков не только передаются через gRPC, но и вовсе не взаимодействуют с Tranquility или его базами данных.
Почему так важен обход Tranquility и базы данных? Чтобы понять это, необходимо поговорить о неудачах. Часть пути привела к появлению множества новых техник и инструментов, с помощью которых можно увидеть Новый Эдем. Одна из концепций - распределенная трассировка с использованием новой любимой игрушки: Honeycomb.io. Вооружившись всеми новыми инструментами стало ясно, что именно происходит с планами навыков, когда они были запущены на основном сервере:
Несмотря на существование множества возможностей для улучшения в целом с производительностью все было в порядке:
Но уже на следующее утро ситуация начала выходить из под контроля:
Да, это 500 тысяч миллисекунд или 8 минут 20 секунд, чтобы отправить сообщение. Tranquility продолжал работать и большинство игроков не пострадали. Это потому, что разработчики не взаимодействуют с Tranquility в традиционном смысле этого слова. Больше нет CarbonIO для традиционных прокси, которые затем отправляются на серверный узел, а затем в базу данных. Вместо этого Tranquility сосредотачивается на том, что более важно, а клиент EVE обменивается данными через gRPC с новой экосистемой, где сервис планирования навыков живет со своей собственной базой данных.
Одна из самых сильных сторон новой экосистемы - отсутствие простоев. Чтобы спасти механику планирования навыков, не нужно перезагружать сервер. Также нету необходимости выпускать патч для сервера или клиента игры. Таким образом Project Sanguine эволюционировал в новую технологическую платформу под названием EVE: Quasar. Не зря разработчики называли текущий квадрант Gateway, поскольку он предвещает прямое использование шлюзов gRPC.
Команда CCP продолжит решать проблему устаревших сервисов путем развития Quasar и оптимизации древних систем, ускоряя их работу. Для обычных игроков это означает появление новых мощных функций для разных частей EVE Online. Разработчики также думают о публикации данных симуляции через Quasar, но для этого потребуется какое-то время.