Полная поддержка Spring Boot 1 и Spring Boot 2
Настройка грейтинговых значений через метаданные
- Все узлы не имеют настроенных меток, возвращаются все экземпляры для балансировки нагрузки (нет грейтинговых сервисов, изменения не требуются).
- Нормальные запросы:
2.1: Используется балансировка нагрузки без использования меток (нормальные запросы используются только для негрейтинговых экземпляров)
- Грейтинговые запросы:
3.1: Приоритетное использование экземпляров с метками для балансировки нагрузки.
3.2: Если метки не найдены, используется балансировка нагрузки без меток.
Примечание:
Для среды WebFlux (реактивной среды), поскольку передача данных осуществляется с помощью ThreadLocal и HystrixRequestVariable, бизнес-методы внутри реактивной среды могут выполняться в разных потоках. Поэтому при вызовах клиентских библиотек RestTemplate, Feign и WebClient в реактивной среде требуется ручное передача значения грейтинга. Сервисы шлюзов (Zuul, Gateway) и Servlet-серверы не требуют учета этого вопроса.
В переходном периоде рекомендуется использовать строгое режим для грейтинговых сервисов, чтобы избежать ошибочных ответов для нормальных запросов.1. Поддерживаемые версии Spring Boot
Spring Boot 1, Spring Boot 2
Eureka, Nacos, Consul
Zuul, Gateway
Feign, RestTemplate, WebClient. В реактивной среде требуется ручное задание значения грейтинга.
curl -H "LoadBalancer-Tag:debug" http://localhost:8080/demo/test
<dependency>
<groupId>com.github.vlmap</groupId>
<artifactId>vlmap-spring-loadbalancer</artifactId>
<version>3.0.0.RELEASE</version>
</dependency>
Соответствие условий на основе HTTP-параметров запроса, если условия выполнены, значение value добавляется в HTTP-заголовок (Loadbalancer-Tag:${value}). Конфигурируется в JSON-формате и отображается в RequestMatchParameter.
Если значение 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\"}"
@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);
}
}
Перевод:
```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 )