1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/saleson-spring-cloud-gray

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

6. Редактирование стратегии серого развёртывания

Чтобы перейти к списку стратегий серого развёртывания, нажмите кнопку «Стратегия» в списке экземпляров. В этом списке можно добавлять стратегии и решения серого развёртывания.

Стратегия серого развёртывания для экземпляра может включать несколько решений серого развёртывания. Стратегии выбираются из списка экземпляров серого развёртывания. Один экземпляр может иметь несколько стратегий серого развёртывания, и между стратегиями существует отношение «или». Это означает, что запрос должен соответствовать только одной из стратегий серого развёртывания экземпляра, чтобы быть направленным на этот экземпляр.

Решение серого развёртывания — это наименьший элемент сравнения в процессе серого развёртывания. Оно определяет правило, которое сравнивает запросы и возвращает true/false. При вызове запроса серая система вызова может сравнить его с решениями серого развёртывания экземпляра и определить, может ли этот экземпляр обработать запрос. Между несколькими решениями существует отношение «и».

7. Редактирование отслеживания серого развёртывания

Перейдите в список сервисов, нажав кнопку «Отслеживание».

8. Изменение состояния экземпляра

Можно изменить состояние экземпляра в списке экземпляров, используя кнопку «Состояние экземпляра». Ранее экземпляр зависел от jar-файла клиента серого развёртывания и uri не был установлен (server.servlet.context-path).

9. Операционный аудит

Все операции POST, PUT и DELETE записываются и могут быть запрошены для последующего аудита. Запрос включает следующие параметры:

  • StartTime — EndTime: время записи;
  • Operator Id: идентификатор оператора;
  • ApiRes Code: код ответа интерфейса;
  • operate State: результат операции;
  • Request Handler: класс и метод контроллера или обработчика Spring MVC;
  • URI: uri интерфейса;
  • IP: IP-адрес HTTP-запроса (оператора).

Модули проекта

Модуль Описание
spring-cloud-gray-utils Инструменты
spring-cloud-gray-core Модель данных серого развёртывания / определение Java Bean, используется клиентом и сервером
spring-cloud-gray-client Основной код клиента серого развёртывания
spring-cloud-gray-client-netflix Код интеграции клиента серого развёртывания с Spring Cloud Netflix и связанные с ним плагины, зависящие от этого модуля
spring-cloud-gray-plugin-webmvc Плагин для поддержки работы клиента серого развёртывания в Spring MVC
spring-cloud-gray-plugin-webflux Плагин для поддержки работы клиента серого развёртывания в Spring WebFlux (версия B и выше)
spring-cloud-gray-plugin-eureka Плагин интеграции клиента серого развёртывания с Eureka
spring-cloud-gray-plugin-feign Плагин интеграции клиента серого развёртывания с OpenFeign
spring-cloud-gray-plugin-zuul Плагин интеграции клиента серого развёртывания с Zuul 1.0
spring-cloud-gray-plugin-gateway Плагин интеграции клиента серого развёртывания со Spring Cloud Gateway (версия B и выше)
spring-cloud-gray-plugin-event-stream Плагин интеграции клиента серого развёртывания с RabbitMQ
spring-cloud-gray-plugin-ribbon-nacos-discovery Плагин интеграции клиента серого развёртывания с Ribbon и Nacos Discovery
spring-cloud-gray-server Основной код сервера управления серым развёртыванием
spring-cloud-gray-server-plugin-eureka Плагин интеграции сервера управления серым развёртыванием с Eureka
spring-cloud-gray-server-plugin-event-stream Плагин интеграции сервера управления серым развёртыванием с RabbitMQ
spring-cloud-gray-server-plugin-nacos-discovery Плагин интеграции сервера управления серым развёртыванием с Nacos Discovery
spring-cloud-starter-gray-client Стартер клиента серого развёртывания
spring-cloud-starter-gray-server Стартер сервера управления серым развёртыванием
spring-cloud-starter-gray-eureka-server Плагин серого развёртывания Eureka Server
spring-cloud-gray-webui Веб-интерфейс управления серым развёртыванием, написанный на Vue
Модуль Описание
spring-cloud-gray-eureka-sample Сервер Eureka / реестр служб
spring-cloud-gray-server-sample Пример сервера управления серым развёртыванием, интерфейс — spring-cloud-gray-webui
spring-cloud-gray-service-a-sample Пример службы поставщика
spring-cloud-gray-service-a1-sample Пример службы поставщика
spring-cloud-gray-ervice-b-sample Пример службы потребителя
spring-cloud-gray-zuul-sample Пример шлюза Zuul
spring-cloud-gray-gateway-sample Пример шлюза Spring Cloud Gateway (версия B и выше)

Решения серого развёртывания

Решения серого развёртывания являются ключом к маршрутизации серого развёртывания. Решения создаются фабрикой, а абстрактный интерфейс фабрики — cn.springcloud.gray.decision.factory.GrayDecisionFactory.

В настоящее время существуют следующие решения серого развёртывания:

Решение Фабрика Описание
HttpHeader HttpHeaderGrayDecisionFactory Решение на основе заголовка HTTP-запроса
HttpMethod HttpMethodGrayDecisionFactory Решение на основе метода HTTP-запроса
HttpParameter HttpParameterGrayDecisionFactory Решение на основе параметра URL HTTP-запроса
HttpTrackHeader HttpTrackHeaderGrayDecisionFactory Решение на основе заголовка отслеживания HTTP-запросов
HttpTrackParameter HttpTrackParameterGrayDecisionFactory Решение на основе параметров отслеживания URL HTTP-запросов
TraceIpGray TraceIpGrayDecisionFactory Решение на основе IP-адреса отслеживания запросов
TrackAttribute TrackAttributeGrayDecisionFactory Решение на основе атрибута отслеживания
FlowRateGray FlowRateGrayDecisionFactory Решение, основанное на процентном соотношении потоков

Реализация пользовательских решений серого развёртывания

Если вышеперечисленные решения не удовлетворяют требованиям, можно расширить cn.springcloud.gray.decision.factory.GrayDecisionFactory, реализовать собственную логику и опубликовать её в контейнере Spring. Например:

import cn.springcloud.gray.decision.GrayDecision;
import cn.springcloud.gray.decision.factory.AbstractGrayDecisionFactory;
import cn.springcloud.gray.request.GrayHttpTrackInfo;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

@Component
public class VersionGrayDecisionFactory extends AbstractGrayDecisionFactory<VersionGrayDecisionFactory.Config> {

    public VersionGrayDecisionFactory() {
        super(VersionGrayDecisionFactory.Config.class);
    }

    @Override
    public GrayDecision
``` ## Серая трассировка
Логика серой трассировки реализуется классами, которые наследуются от cn.springcloud.gray.request.GrayInfoTracker.

На данный момент существуют следующие виды серой трассировки:

| Название | Класс реализации | Описание |
| --- | --- | --- |
| HttpReceive | HttpReceiveGrayInfoTracker | Получает информацию о серой трассировке, отправленную с вызывающей стороны. |
| HttpHeader | HttpHeaderGrayInfoTracker | Извлекает заголовок HTTP-запроса и записывает его в серую трассировку. |
| HttpIP | HttpIPGrayInfoTracker | Извлекает IP-адрес HTTP-запроса и записывает его в серую трассировку. |
| HttpMethod | HttpMethodGrayInfoTracker | Извлекает метод HTTP-запроса и записывает его в серую трассировку. |
| HttpParameter | HttpParameterGrayInfoTracker | Извлекает параметры URL из HTTP-запроса и записывает их в серую трассировку. |
| HttpURI | HttpURIGrayInfoTracker | Извлекает URI из HTTP-запроса и записывает его в серую трасировку.

### Реализация пользовательской серой трассировки
Если существующие решения не удовлетворяют требованиям, можно расширить класс cn.springcloud.gray.request.GrayInfoTracker и реализовать собственную логику. После этого необходимо опубликовать изменения в контейнере Spring. Пример кода:
``` java
import cn.springcloud.gray.request.GrayHttpTrackInfo;
import cn.springcloud.gray.request.TrackArgs;
import cn.springcloud.gray.web.tracker.HttpGrayInfoTracker;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;

@Slf4j
@Component
public class UserIdGrayInfoTracker implements HttpGrayInfoTracker {

    @Override
    public void call(TrackArgs<GrayHttpTrackInfo, HttpServletRequest> args) {
        SecurityContext securityContext = SecurityContextHolder.getContext();
        Authentication authentication = securityContext.getAuthentication();
        String userId = null;
        if (authentication.getPrincipal() instanceof UserDetails) {
            UserDetails springSecurityUser = (UserDetails) authentication.getPrincipal();
            userId = springSecurityUser.getUsername();
        } else if (authentication.getPrincipal() instanceof String) {
            userId = (String) authentication.getPrincipal();
        }
        args.getTrackInfo().setAttribute("userId", userId);
    }
}

Расширение проекта

Проект уже имеет ядро для работы с серой трассировкой. Если требуется интеграция с другими системами регистрации или балансировщиками нагрузки, достаточно реализовать соответствующий плагин. Spring Cloud Gray уже предоставляет плагины для Eureka, Ribbon, Feign, Zuul, Spring Cloud Gateway и Spring Cloud Stream. Для интеграции достаточно добавить соответствующие зависимости.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Spring Cloud Gray — это открытое решение для маршрутизации при развёртывании микросервисов. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/saleson-spring-cloud-gray.git
git@api.gitlife.ru:oschina-mirror/saleson-spring-cloud-gray.git
oschina-mirror
saleson-spring-cloud-gray
saleson-spring-cloud-gray
master