Фильтрация селекторов
Селекторы — это необязательные фильтрующие данные, которые вы можете включить в запрос на создание сессии, чтобы отфильтровать деплойменты, которые будут рассмотрены для размещения сессии. Проще говоря, мы выберем для вашей сессии только тот деплоймент, который содержит все указанные в запросе теги. Вы также можете использовать теги для динамического добавления переменных окружения в ваш деплоймент.
Когда стоит учитывать селекторы
Скорее всего, «всегда» — правильный ответ, потому что рано или поздно вам может понадобиться управлять разными вещами при фильтрации, такими как карты, тип игры, статистика игроков и так далее. Однако мы понимаем, что иногда вы хотите быстро что-то протестировать. Поэтому вот несколько распространенных вариантов использования селекторов:
Фильтровать деплойменты с определёнными тегами для размещения вашей сессии.
Помечать вашу сессию тегами для их идентификации.
Динамически внедрять переменные окружения при использовании
autodeployопции.
Вы можете добиться в основном тех же результатов, что и при использовании селекторов, создав несколько версий приложения с разными конфигурациями в каждой. Однако использование селекторов может упростить разработку, так как вам потребуется управлять меньшим количеством версий приложения — можно использовать одну и ту же версию с разными селекторами и контекстами.
Как их использовать
Эти концепции могут наслаиваться друг на друга, но мы рассмотрим каждую отдельно в её собственной секции.
Вся фильтрация будет применяться в пределах диапазона, установленного в начале запроса сессии. Это означает, что если существует деплоймент, соответствующий селекторам, но он находится вне подходящего диапазона, этот деплоймент не будет выбран для размещения сессии.
Опция autodeploy создаст новый деплоймент в лучшем доступном месте. Подробнее об этом можно прочитать здесь.
Фильтрация по тегам
Добавление тегов в список селекторов таким образом заставит ваш запрос сессии искать деплоймент с тегами Ranked и Map A. Если у вас не активирована опция autodeploy и нет деплойментов с этими тегами, ваш запрос сессии будет переведён в состояние необрабатываемый . С другой стороны, если autodeploy активирован, мы автоматически создадим новый деплоймент, пометим его этими тегами и затем привяжем к вашей сессии.
Деплоймент должен иметь все указанные теги, чтобы считаться подходящим для размещения сессии.
{
"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 в деплоймент. Эта переменная окружения будет доступна внутри сервера.
Если вы ранее создали деплоймент с тегом Map A , но без параметра env, а затем создадите запрос сессии, который будет привязан к этому деплойменту с использованием параметра env, переменная окружения не будет добавлена динамически, поскольку мы не можем изменять переменные окружения на работающем деплойменте.
Аналогично предыдущему предупреждению, если вы создадите две разные сессии с одним и тем же тегом, но с разными переменными окружения, будут применены только переменные окружения той сессии, которая инициировала autodeploy.
Добавление тегов к сессии без фильтрации
Если вы хотите просто добавить теги к вашим сессиям без фильтрации деплойментов, вы можете использовать tag_only атрибут в вашем запросе сессии. Это позволит добавить теги к сессии без фактической фильтрации деплойментов.
Однако обратите внимание, что вы не можете использовать tag_only в сочетании с внедрением переменных окружения с помощью атрибута env.
В этом примере мы добавим тег Europe к каждой сессии, созданной этим запросом. Тег Europe применяется только к сессии, а не к деплойменту. Он никоим образом не влияет на фильтрацию деплойментов.
Полный пример
У нас одна версия приложения с двумя режимами: Ranked и Casual. Autodeploy активирован. У нас есть две карты: Map A и Map B. Каждый режим может использовать каждую карту. Мы хотим помечать каждую игру тегом Matchmaker #1234, указывающим источник запроса. Мы хотим этот тег только для целей отслеживания, и он не будет влиять на фильтрацию деплойментов.
Игра загружает ресурсы карты на основе внедрённой переменной окружения.
Использование селекторов в таком сценарии имеет большой смысл, поскольку без них вам пришлось бы управлять разными версиями приложения для каждой карты, что увеличило бы сложность и накладные расходы на управление.
Кто-то хочет сыграть рейтинговую игру на карте Map A. Эта карта имеет ID 1. Мы не хотим помещать игрока, который хочет играть на Map A, на карту Map B, поэтому это нужно корректно обработать. Правильный запрос будет таким:
Этот запрос будет искать деплоймент, помеченный тегами Ranked и Map A, а если не найдёт, создаст новый и пометит его обоими тегами. В обоих случаях сессия будет помечена тегом Matchmaker #1234.
Если мы отправим другой запрос для казуальной игры на карте Map B, запрос будет выглядеть так. Карта Map B имеет ID 2. Ожидаемые результаты совпадают с другим запросом.
Последнее обновление
Это было полезно?

