Gateway gateway para microservicios que debes conocer

Los microservicios se han convertido en la arquitectura de tecnología principal que persiguen los principales fabricantes. La perspectiva de aprender microservicios es muy prometedora, y SpringCloud se ha convertido en la pila de tecnología de microservicios principal. Esta serie de artículos se centrará en la pila de tecnología SpringCloud y analizará y explicará exhaustivamente la aplicación real de la pila de tecnología SpringCloud en el escenario de microservicio.

Puerta de enlace de la nube de primavera

Índice de conocimiento

  • Introducción a la puerta de enlace
  • Empezando
  • prefijo de enrutamiento
  • filtrar

1 Introducción a la puerta de enlace

Spring Cloud GatewayEs Spring Cloudun proyecto completamente nuevo del equipo, una pasarela basada en tecnologías como Spring 5.0, , SpringBoot2.0, Project Reactoretc. Su objetivo es proporcionar un RESTmétodo de gestión de enrutamiento de solicitudes simple, efectivo y unificado para la arquitectura de microservicios.

Spring Cloud GatewayComo SpringCloudpuerta de entrada en el ecosistema, el objetivo es reemplazar Netflix Zuul. GatewayNo solo proporciona un método de enrutamiento unificado, sino que también Filterproporciona las funciones básicas de la puerta de enlace basadas en el método de cadena. Por ejemplo: seguridad, supervisión/métricas y limitación.

2 Primeros pasos

spring_cloud_demosCrear gateway_demosubmódulos en el proyecto.

2.1 Introducción de dependencias

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR12</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2.2 Clase de inicio

/**
 * Copyright (c) 2022 itmentu.com, All rights reserved.
 *
 * @Author: yang
 */
@SpringBootApplication
public class GateWayDemoApplication {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(GateWayDemoApplication.class, args);
    }
}

2.3 Configuración

server:
  port: 8502
spring:
  application:
    name: gateway
  cloud:
    consul:
      host: 192.168.184.128
      port: 8500
      discovery:
        service-name: ${
    
    spring.application.name}
        register: false

2.4 Configuración de enrutamiento

gateway:
  # 路由si(集合)
  routes:
    # id唯一标识
    - id: consumer-service-route
      # 路由服务地址 
      uri: lb://service-consumer
      # 断言
      predicates:
        - Path=/**

Descripción del código:

1:routes:id表示路由标识,唯一即可,当前案例中表示消费者服务对应的路由
2:uri: lb://service-consumer表示uri使用负载均衡模式,lb表示loadbalance,”lb:“后跟注册中心对应的服务名

2.5 Transformar el servicio original del consumidor del servicio

Agregar @EnableDiscoveryClientregistro de anotación para abrir el centro de registro

/**
 * Copyright (c) 2022 itmentu.com, All rights reserved.
 *
 * @Author: yang
 */
@SpringBootApplication
@EnableFeignClients
@EnableCircuitBreaker
@EnableHystrixDashboard
@EnableDiscoveryClient
public class ServiceConsumerApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(ServiceConsumerApplication.class, args);
    }

    @Bean
    @LoadBalanced//开启负载均衡
    public RestTemplate restTemplate(){
    
    
        return new RestTemplate();
    }
}

Modificar la configuración para registrarse en el registro

spring:
  cloud:
    consul:
      discovery:
        register: true

2.6 Pruebas

Acceda a la interfaz de servicio al consumidor por http://localhost:8502/consumer/hello-feigndirección

imagen-20220320180509185

3 prefijo de enrutamiento

3.1 Agregar prefijo

La adición de prefijos en la ruta mapeada se gatewaypuede lograr configurando el filtro de la ruta en . PrefixPathPuede desempeñar el papel de ocultar la dirección de la interfaz y evitar la exposición de la dirección de la interfaz.

Configure la dirección de solicitud para agregar un filtro de prefijo de ruta

spring:
    gateway:
      routes:
          filters:
            - PrefixPath=/consumer

prueba

Reiniciar el acceso al servicio de enrutamiento

http://localhost:8502/hello-feign

El resultado es el siguiente, indicando que la ruta a

http://localhost:8002/consumer/hello-feign

imagen-20220320181817680

3.2 Eliminar prefijo

Al gatewayconfigurar un filtro de ruta en StripPrefix, se pueden eliminar las direcciones en la ruta asignada. Pase StripPrefix=1para especificar el número de prefijos que se eliminarán de la ruta. Por ejemplo: la ruta /api/consumer/hello-feignse enrutará a/consumer/hello-feign

Configurar eliminar filtro de prefijo de ruta

spring:
    gateway:
      routes:
          filters:
            - StripPrefix=1

prueba

Reiniciar el acceso al servicio de enrutamiento

http://localhost:8502/api/consumer/hello-feign

El resultado es el siguiente, indicando que está enrutado a

/consumer/hello-feign

imagen-20220320182253539

4 filtros

Una de las funciones importantes de un filtro como puerta de enlace es implementar la autenticación de solicitudes. 路由前缀Las funciones de los capítulos anteriores también se implementan mediante filtros.

4.1 Filtros comunes

GatewayHay docenas de filtros integrados. Los filtros integrados comunes incluyen:

nombre del filtro ilustrar
TiraPrefijo Eliminar el prefijo de la ruta de solicitud coincidente
prefijoruta Prefijo la ruta de solicitud coincidente
AddRequestHeader Agregar encabezado a la solicitud coincidente
AddRequestParameter Agregar parámetros a las solicitudes coincidentes
Agregar encabezado de respuesta Agregar encabezado a la respuesta devuelta desde la puerta de enlace

4.2 Escenarios comunes

  • Solicitar autenticación: si no tiene derechos de acceso, interceptar directamente
  • Manejo de excepciones: registrar registros de excepciones
  • Estadísticas de duración de llamadas de servicio

4.3 Instrucciones de configuración del filtro

GatewayHay dos filtros

局部过滤器:只作用在当前配置的路由上,上面我们配置的路由前缀过滤器就是局部过滤器
全局过滤器:作用在所有路由上。

4.4 Demostración de la configuración del filtro global

Filtro de configuración globalAddResponseHeader

spring:
  cloud:
    gateway:
     # 配置全局默认过滤器
      default-filters:
      # 往响应过滤器中加入信息
        - AddResponseHeader=key1,value1

prueba

Los encabezados de respuesta se pueden ver en el navegador

imagen-20220320183325636

Supongo que te gusta

Origin blog.csdn.net/scmagic/article/details/123942945
Recomendado
Clasificación