🚀🚀🚀План посадки релиза в оттенках серого переднего плана

Node.js внешний интерфейс
🚀🚀🚀План посадки релиза в оттенках серого переднего плана

предисловие\color{#1d7dfa}{Предисловие}
Некоторое время назад во время интервью я столкнулся с проблемами, связанными с интерфейсом публикации в градациях серого.Незадолго до этого компания разработала интерфейсную схему публикации в градациях серого.Эта схема также была проверена на нескольких системах.У меня есть время разобраться недавно.Сейчас тоже выношу для общения с вами.В конце еще оставил для вас несколько реализаций кода.Заинтересованные партнеры могут ознакомиться.

tips

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

Что такое публикация в оттенках серого

Отпустите определенную функцию в оттенках серого (постепенно увеличивайте громкость) для определенной онлайн-группы, чтобы избежать рисков, связанных с полным запуском новых функций.

В просторечии проект сейчас в версии 1.0, но я хочу обновить версию 1.1.Проблем с внутренним тестом версии 1.1 нет.Однако из-за изменений в ключевых функциях я хочу добиться только части пользовательский опыт в Интернете. Проверьте отзывы. В настоящее время некоторым пользователям в сети необходимо продолжать использовать версию 1.0, а некоторым пользователям необходимо использовать версию 1.1.Если проблема с полученной обратной связью версии 1.1 достаточно серьезна, чтобы повлиять на работу в сети, версия 1.0 будет отброшена, а затронутый диапазон пользователей относительно невелик.Если версия 1.1 стабильная, то прямой переход на версию 1.1 для всех пользователей. Для достижения этого эффекта сцены используется публикация в оттенках серого.

Что такое правило оттенков серого? Правило оттенков серого может содержать бизнес-информацию или информацию об устройстве, такую ​​как уровень пользователя, пол, регион, клиент и т. д. Например, если правило оттенков серого установлено на версию 1.1 для пользователей в Гуандуне, пользователь из провинции Гуандун столкнется с правилом оттенков серого, когда доступ к проекту. , перевести их на версию 1.1, а пользователи в других регионах продолжают использовать версию 1.0

Общие схемы публикации в оттенках серого

Существуют различные схемы оттенков серого, есть как разнообразие, так и контраст, нет лучшего, только наиболее подходящий для вашего собственного бизнес-сценария, вот несколько схем для сравнения и выбора

1. Простое шунтирование ngxin (рекомендуемый индекс: ⭐️)

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

  • Две копии кода, развернутые отдельно
  • Контролируйте процент доступа с помощью взвешенного циклического перебора nginx (при условии, что файл cookie клиента не существует)
  • Фронтенд ввел sdk (Панда заглянул в исходники, на самом деле он для хранения случайного неповторяющегося (или только неповторяющегося с высокой вероятностью) логотипа в куки
  • При втором посещении nginx возвращает соответствующую версию через уникальный идентификатор в куки

преимущество:Простые, не требующие внутренних операций
недостаток:

  1. Вы можете просто полагаться на взвешенный процент опроса nginx для управления трафиком.Это полностью зависит от внешнего интерфейса и не может быть объединено с бизнесом для разгрузки трафика.
  2. Управляемость слабая, при проблемах с серой версией пользователь может только откатить версию, изменив конфигурацию nginx.
  3. Плохая способность собирать проблемы, можно только ждать отзывов пользователей
  4. После очистки файла cookie клиента пользователю необходимо повторно войти через взвешенный циклический перебор nginx, возможно, ему будет назначена версия, отличная от предыдущей.

2. nginx + lua + redis (рекомендуемый индекс: ⭐️⭐️)

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

  • Когда запрос пользователя достигает внешнего прокси-сервиса nginx, встроенный модуль lua анализирует код скрипта lua в файле конфигурации nginx.
  • Переменная lua получает IP-адрес клиента, чтобы запросить, есть ли встроенное значение в кеше Redis, если есть возвращаемое значение, выполнить логику серой версии, в противном случае выполнить текущую версию рабочей среды.

В интернете тоже много информации по схеме nginx+lua+redis.Вы сами можете разобраться.Хотя Панда не до конца разбирается в схеме,с точки зрения всей теории длины ссылки,эффективность этой схемы должна быть относительно высоким, поэтому я дам его вам.
Справочная статья 1
Справочная статья 2
Справочная статья 3

3. Шунт рендеринга на стороне сервера (Рекомендация: ⭐️⭐️⭐️)

Решение серверного рендеринга и разгрузки на самом деле является решением, которое, как мне кажется, проще в использовании.Здесь я сначала дам краткое описание процесса, а затем я сделаю некоторые введения в него отдельно.

  • Две части кода, упакованные во внешнем интерфейсе, развертываются на сервере соответственно (здесь в качестве примера используется одностраничное приложение, если есть несколько страниц, некоторые другие детали необходимо обрабатывать отдельно).
  • Управление добавлением версий в фоновом режиме (на самом деле пусть сервер читает index.html одной страницы)
  • Клиент обращается к серверу, сервер устанавливает файл cookie в соответствии с правилами оттенков серого и сохраняет его в Redis и возвращает соответствующую версию index.html.
  • Когда второй визит проходит через сервер, если есть файл cookie и соответствующая информация о версии уже существует в Redis, он вернется напрямую, в противном случае снова выполните процесс в градациях серого.

image.pngПреимущества: гибкий и управляемый, может быть объединен с бизнес-системой для создания правил оттенков серого. Недостатки: это почти шаттл на бэкенде, который давит на сервер и требует дополнительных сопутствующих оптимизаций, неудобно использовать многостраничные приложения.

4. Оценка клиентской аннотации (сложнее в обслуживании) (рекомендуемый индекс: нажимная полоса, не рекомендуется)

Клиент составлен по условию аннотации, на самом деле, функциональность какой версии отображается в соответствии с правилами оттенков серого, и эта программа также имеет компанию в использовании, функцию оттенков серого, но больше, это крайне сложно поддерживать , Не рекомендуется , здесь больше представлено

5. nginx + server + redis + [front-end sdk] (рекомендуемый индекс: ⭐️⭐️⭐️)

Общий обзор программы

  • Сначала мы называем стабильную онлайн-версию стабильной версией, а новая функциональная версия, выпущенная на этот раз, называется бета-версией.
  • Разработчики запустили службу nginx для стабильной и бета-версий соответственно, а также запустили уровень входа службы nginx на уровне эксплуатации и обслуживания в качестве пересылки.

image.png

  • Клиент получает доступ к проекту через доменное имя, запрашивает правило оттенков серого, выбирает правило оттенков серого и устанавливает файл cookie в качестве идентификатора для клиента, сохраняет идентификатор пользователя в Redis и перенаправляет пользователя на указанную версию.
  • Когда интерфейс правила оттенков серого запрашивает, если у него уже есть файл cookie, он напрямую возвращает соответствующую версию. Если файла cookie нет, перейдите к Redis. Если в Redis есть соответствующая информация, он вернется напрямую. Если он не существует , пройдите процесс идентификации правила оттенков серого.
  • Интерфейсная функция SDK: используется для контроля времени инициирования запросов правил оттенков серого, операций обратного вызова и других бизнес-операций.
    sdkсценарии использования:\color{#1d7dfa}{сценарии использования SDK:}
    В проекте необходимо активировать функцию оттенков серого в определенное время, нажать кнопку или войти на определенную страницу.Например, некоторые приложения будут открывать всплывающее окно, чтобы сообщить пользователю, что есть внутренняя бета-версия версия и нужно ли им ее испытать. Нажмите, чтобы согласиться, прежде чем перейти к версии в градациях серого.

Схема проектирования

image.png

код существительного

  • стабильная: официальная производственная среда (версия 1.0)
  • Бета: серогое версия (версия 1.1)
  • UUID: в демонстрации кода нет системы учетной записи и отсутствует систему входа в систему, поэтому процесс выполняется путем приведения UUID в качестве идентификатора пользователя на URL

Конкретная реализация (простая демонстрация)

image.png

  1. Создайте два HTML-кода соответственно, предполагая два проекта, бета-версия новой функции в оттенках серого, стабильная версия — текущая версия рабочей среды.
  2. Внедрить sdk в front-end (front-end sdk не требуется, см. использование бизнес-сценариев)
  3. Внешний интерфейс инициирует запрос на получение информации о версии (если используется SDK, этот шаг можно выполнить с помощью конфигурации)

image.png

image.png4. Логика серверной службы:

image.pngКод фоновой реализации

//这里只是演示,直接通过链接获取用户id,实际场景应该是通过获取用户会话去判别用户相关信息
const uuid = ctx.query.uuid; 
//可以进入灰度版本的uuid,在数据库存放
const uuids = ['123','456','789'] 
//redis 中存放了的的用户id,如果清理了redis,则意味着,取消用户的版本标识,这里简单的用数组存放,实际应用场景根据各自的业务信息考虑是否需要多集合存放
const redisUuids = [{id: '789', version: 'beta'}, {id: '333', version: 'stable'}];

Логика приведенного выше кода заключается в том, чтобы применить правило оттенков серого, когда uuid равен 123, 456 или 789, и войти в бета-версию.
Пользователи с uuid 789 и 333 были сохранены в Redis

  1. Эффект:

image.png

image.png

Операции обработки проблем в оттенках серого

  • В: Если после подключения к сети возникла серьезная проблема с версией в градациях серого, требуется операция экстренного отката. Ответ: Отключите функцию оттенков серого прямо в фоновом режиме, очистите Redis и завершите сеанс входа пользователя (собственно, операцию очистки куки клиента)
  • Q: Нужно указать пользователя для входа в определенную версию
    Ответ. Измените информацию Redis в фоновом режиме и завершите сеанс входа пользователя.
  • В: Оттенки серого включены только на определенной странице в указанном проекте. Ответ. Вы можете обработать соответствующую логику во внешнем SDK и использовать соответствующий путь страницы в качестве списка для идентификации внешнего интерфейса (SDK лучше всего импортировать динамически, а SDK размещается на CDN)

код

яйцо код\color{red}{Код яйца}
Серверная часть компании реализована с помощью java. Panda здесь, чтобы помочь вам лучше понять весь процесс, и он также реализован с помощью узла. Заинтересованные друзья могут перейти непосредственно к просмотру кода.github, общая идея дизайна та же

будь осторожен:Чтобы облегчить запуск и просмотр демонстрации, Panda запускает композицию докеров, В соответствии с предпосылкой докеров и компоновки докеров, вы можете запустить пример непосредственно через команду

docker-compose build

docker-compose up -d

localhost:8000

задвинуть

отправить интро\color{red}{Отправить внутренний твит}
Miha Tour, координаты в Шанхае\color{red}{Миха Тур, координаты Шанхай}
Заинтересованные друзья пищат\color{red}{Заинтересованные друзья пищат}
Отсканируйте QR-код, чтобы просмотреть таблицу рекрутинговой ямы:image.png

Эпилог

Схем тысячи, просто выберите подходящую для себя.В демонстрационном коде Panda просто написал какой-то логический код, а не ту логику, которую можно заложить в проект.Его нужно подгонять под реальную сцену проекта. front-end sdk и Код java части Панды не выпущен, так как программа реализована в компании, поэтому выпускать ее неудобно.Можно написать по общему замыслу.Если есть какие вопросы, добро пожаловать к обсуждению с Пандой.Что-то не так в тексте или есть лучший способ План также надеюсь, что вы дадите мне свой совет