Фильтрация селекторов

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

Когда стоит учитывать селекторы

Скорее всего, «всегда» — правильный ответ, потому что рано или поздно вам может понадобиться управлять разными вещами при фильтрации, такими как карты, тип игры, статистика игроков и так далее. Однако мы понимаем, что иногда вы хотите быстро что-то протестировать. Поэтому вот несколько распространенных вариантов использования селекторов:

  • Фильтровать деплойменты с определёнными тегами для размещения вашей сессии.

  • Помечать вашу сессию тегами для их идентификации.

  • Динамически внедрять переменные окружения при использовании autodeploy опции.

circle-check

Как их использовать

Эти концепции могут наслаиваться друг на друга, но мы рассмотрим каждую отдельно в её собственной секции.

circle-info

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

Опция autodeploy создаст новый деплоймент в лучшем доступном месте. Подробнее об этом можно прочитать здесь.

Фильтрация по тегам

Добавление тегов в список селекторов таким образом заставит ваш запрос сессии искать деплоймент с тегами Ranked и Map A. Если у вас не активирована опция autodeploy и нет деплойментов с этими тегами, ваш запрос сессии будет переведён в состояние необрабатываемый . С другой стороны, если autodeploy активирован, мы автоматически создадим новый деплоймент, пометим его этими тегами и затем привяжем к вашей сессии.

circle-info

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

{
  "app_name": "demo",
  "version_name": "v1",
  "ip_list": ["1.2.3.4"],
  "selectors": [
    {
      "tag": "Ranked"
    },
    {
      "tag": "Map A"
    }
  ]
}

Динамическое добавление переменных окружения

Этот пример применяет те же концепции, что и выше, поэтому, если не найден деплоймент с тегами Map A и активирован autodeploy, мы создадим новый деплоймент с тегами. Но мы добавили ключ env в объект селектора, который внедрит переменную окружения MAP_ID со значением 1 в деплоймент. Эта переменная окружения будет доступна внутри сервера.

circle-exclamation
circle-exclamation

Добавление тегов к сессии без фильтрации

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

Однако обратите внимание, что вы не можете использовать tag_only в сочетании с внедрением переменных окружения с помощью атрибута env.

В этом примере мы добавим тег Europe к каждой сессии, созданной этим запросом. Тег Europe применяется только к сессии, а не к деплойменту. Он никоим образом не влияет на фильтрацию деплойментов.

Полный пример

У нас одна версия приложения с двумя режимами: Ranked и Casual. Autodeploy активирован. У нас есть две карты: Map A и Map B. Каждый режим может использовать каждую карту. Мы хотим помечать каждую игру тегом Matchmaker #1234, указывающим источник запроса. Мы хотим этот тег только для целей отслеживания, и он не будет влиять на фильтрацию деплойментов.

Игра загружает ресурсы карты на основе внедрённой переменной окружения.

circle-check

Кто-то хочет сыграть рейтинговую игру на карте Map A. Эта карта имеет ID 1. Мы не хотим помещать игрока, который хочет играть на Map A, на карту Map B, поэтому это нужно корректно обработать. Правильный запрос будет таким:

Этот запрос будет искать деплоймент, помеченный тегами Ranked и Map A, а если не найдёт, создаст новый и пометит его обоими тегами. В обоих случаях сессия будет помечена тегом Matchmaker #1234.

Если мы отправим другой запрос для казуальной игры на карте Map B, запрос будет выглядеть так. Карта Map B имеет ID 2. Ожидаемые результаты совпадают с другим запросом.

Последнее обновление

Это было полезно?