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

OSCHINA-MIRROR/luck-vlmap-spring-loadbalancer

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

vlmap-spring-loadbalancer

Грейтинговая маршрутизация с использованием Spring Cloud

Обновление

Полная поддержка Spring Boot 1 и Spring Boot 2

Настройка грейтинговых значений через метаданные

Описание правил маршрутизации

  1. Все узлы не имеют настроенных меток, возвращаются все экземпляры для балансировки нагрузки (нет грейтинговых сервисов, изменения не требуются).
  1. Нормальные запросы:

2.1: Используется балансировка нагрузки без использования меток (нормальные запросы используются только для негрейтинговых экземпляров)

  1. Грейтинговые запросы:

3.1: Приоритетное использование экземпляров с метками для балансировки нагрузки.

3.2: Если метки не найдены, используется балансировка нагрузки без меток.

Примечание:

Для среды WebFlux (реактивной среды), поскольку передача данных осуществляется с помощью ThreadLocal и HystrixRequestVariable, бизнес-методы внутри реактивной среды могут выполняться в разных потоках. Поэтому при вызовах клиентских библиотек RestTemplate, Feign и WebClient в реактивной среде требуется ручное передача значения грейтинга. Сервисы шлюзов (Zuul, Gateway) и Servlet-серверы не требуют учета этого вопроса.

В переходном периоде рекомендуется использовать строгое режим для грейтинговых сервисов, чтобы избежать ошибочных ответов для нормальных запросов.1. Поддерживаемые версии Spring Boot

Spring Boot 1, Spring Boot 2

  1. Поддерживаемые типы центра регистрации

Eureka, Nacos, Consul

  1. Поддерживаемые типы шлюзов

Zuul, Gateway

  1. Поддерживаемые типы клиентских приложений

Feign, RestTemplate, WebClient. В реактивной среде требуется ручное задание значения грейтинга.

  1. Пример грейтингового запроса
curl -H "LoadBalancer-Tag:debug" http://localhost:8080/demo/test
  1. MVN координаты
<dependency>
	<groupId>com.github.vlmap</groupId>
	<artifactId>vlmap-spring-loadbalancer</artifactId>
	<version>3.0.0.RELEASE</version>
</dependency>
  1. Условия совпадения

Соответствие условий на основе HTTP-параметров запроса, если условия выполнены, значение value добавляется в HTTP-заголовок (Loadbalancer-Tag:${value}). Конфигурируется в JSON-формате и отображается в RequestMatchParameter.

  1. Ответчики

Если значение Loadbalancer-Tag совпадает со значением value, создаётся конфигурированный ответ и возвращается сразу. Конфигурируется в JSON-формате и отображается в ResponderParameter.

vlmap:
	spring: 
	  loadbalancer: 
		 attacher:   #Условия совпадения, если условия выполнены, добавляются значения value в HTTP-заголовок (Loadbalancer-Tag:${value})
		  commands: #Отображается в RequestMatchParameter
			 - "{\"value\":\"responder\",\"params\":{\"a\":[\"1\"]},\"path\":\"/**\"}"
		 responder:  #Ответчики
		  commands: #Отображается в ResponderParameter
			 - "{\"value\":\"responder\",\"body\":\"success\"}"
  1. Актюэйтёр (новый) Путь доступа /actuator/gray Отображает информацию, связанную с серым режимом.10. Пример использования

@EnableGrayLoadBalancer Включает серый балансировщик маршрутов

package com.github.vlmap.gateway;

import com.github.vlmap.spring.loadbalancer.annotation.EnableGrayLoadBalancer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
@EnableGrayLoadBalancer
public class WebApplication {

    public static void main(String[] args) {
        SpringApplication.run(WebApplication.class, args);
    }
}
  1. Настройка конфигурации```yaml vlmap: spring: loadbalancer: enabled: true # текущий сервис включен для серого балансировки маршрутов, значение по умолчанию: true header-name: Loadbalancer-Tag # имя заголовка, используемое для серого балансировки маршрутов, поддерживает динамическую конфигурацию, значение по умолчанию: Loadbalancer-Tag feign: enabled: true # клиент Feign включен для серого балансировки маршрутов, значение по умолчанию: true rest-template: enabled: true # клиент RestTemplate включен для серого балансировки маршрутов, значение по умолчанию: true web-client: enabled: true # клиент WebClient включен для серого балансировки маршрутов, значение по умолчанию: true контроллер:
    enabled: true # реактивный (WebFlux) окружение контроллер включен для серого балансировки маршрутов, чтобы гарантировать, что метка передается до уровня контроллера, значение по умолчанию: true строгий: # обычные экземпляры могут отвечать только на обычные запросы, серые экземпляры могут отвечать только на серые запросы, остальные случаи отклонены enabled: false # значение по умолчанию: false код: 403 # код состояния при неудачной проверке в строгом режиме сообщение: Fibbon # описание ошибки при неудачной проверке в строгом режиме игнорировать: # список игнорируемых путей, запросы, совпадающие со списком, будут исключены из строгого режима дефолт:

Перевод:

```yaml
vlmap:
  spring:
    loadbalancer:
      enabled: true   # текущий сервис включен для серого балансировки маршрутов, значение по умолчанию: true
      header-name: Loadbalancer-Tag # имя заголовка, используемое для серого балансировки маршрутов, поддерживает динамическую конфигурацию, значение по умолчанию: Loadbalancer-Tag
      feign:
        enabled: true # клиент Feign включен для серого балансировки маршрутов, значение по умолчанию: true
      rest_template:
        enabled: true # клиент RestTemplate включен для серого балансировки маршрутов, значение по умолчанию: true
      web_client:
        enabled: true # клиент WebClient включен для серого балансировки маршрутов, значение по умолчанию: true
      controller:  
        enabled: true # реактивный (WebFlux) окружение контроллер включен для серого балансировки маршрутов, чтобы гарантировать, что метка передается до уровня контроллера, значение по умолчанию: true
      strict_mode:  # обычные экземпляры могут отвечать только на обычные запросы, серые экземпляры могут отвечать только на серые запросы, остальные случаи отклонены
        enabled: false  # значение по умолчанию: false
        code: 403     # код состояния при неудачной проверке в строгом режиме
        message: Fibbon   # описание ошибки при неудачной проверке в строгом режиме
        ignore_paths:       # список игнорируемых путей, запросы, совпадающие со списком, будут исключены из строгого режима
          default:
``````markdown
enabled: true  # включение списка игнорируемых путей по умолчанию, значение по умолчанию: true
пути:           
- /antpath/**   # ANT-PATH
- /antpath2/**
attacher:
    команды: # отображаются как RequestMatchParameter
    - "{\"значение\":\"responder\",\"params\":{\"a\":[\"1\"]},\"path\":\"/**\"}"
responder:
    команды: # отображаются как ResponderParameter 
    - "{\"значение\":\"responder\",\"тело\":\"успех\"}"
# Конфигурация(gray) тегов
Конфигурация gray tags через метаданные(metadata) экземпляров.
```Пример с Eureka:
```properties
eureka.instance.metadata-map.gray.tags=a,b,c,d

Пример с Nacos:

spring.cloud.nacos.discovery.metadata.gray.tags=a,b,c,d  

Пример с Consul:

spring.cloud.consul.discovery.tags[0]=gray.tags=a,b,c,d

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

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

Введение

Спринг клауд хейвуд роутинг. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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