Spring Cloud Component Gateway Spring Cloud Gateway (versión Hoxton)

contenido

1. Introducción a Spring Cloud Gateway

1.1 Funciones relacionadas

1.2 Conceptos relacionados

2. Cree un proyecto Spring Cloud Gateway

2.1 Agregar dependencias relacionadas a pom

2.2 Hay dos formas de configurar el enrutamiento de la puerta de enlace Spring Cloud

2.2.1 Método del archivo de configuración

2.2.2 La configuración de JAVA BEAN es la siguiente

2.3 Iniciar el programa y realizar pruebas de enrutamiento

3. Dirección de Git del proyecto

4. Referencia


1. Introducción a Spring Cloud Gateway

Spring Cloud Gateway proporciona soporte de puerta de enlace API para aplicaciones SpringBoot, con potentes funciones inteligentes de enrutamiento y filtro. Este artículo presentará su uso en detalle. Spring Cloud Gateway es un nuevo marco de puerta de enlace lanzado por Spring Cloud. En comparación con la generación anterior de Zuul, sus funciones y rendimiento han mejorado mucho. Zuul1.x utiliza un método de subprocesos múltiples de bloqueo, es decir, un subproceso procesa una solicitud de conexión y el rendimiento es deficiente en condiciones de alta concurrencia.Aunque Zuul2.x no bloquea, frente a rebotes continuos, parece que Zuul necesita fue abandonado. En cambio, Spring Cloud Gateway, que se basa en Webflux, es un marco asíncrono sin bloqueo con un rendimiento muy mejorado e incluye todas las funciones de Zuul, que se pueden cambiar sin problemas de Zuul a Spring Cloud Gateway. Spring Cloud Gateway es un servicio de puerta de enlace API creado sobre el ecosistema Spring, basado en tecnologías como Spring 5, Spring Boot 2 y Project Reactor. Gateway tiene como objetivo proporcionar una forma simple y efectiva de enrutar las API, así como algunas funciones de filtro potentes, como: disyuntor, límite de corriente, reintento, etc.

El principio de funcionamiento del sitio web oficial Gateway es el siguiente:

1.1 Funciones relacionadas

Spring Cloud Gateway tiene las siguientes características:

  • Basado en Spring Framework 5, Project Reactor y Spring Boot 2.0;
  • Enrutamiento dinámico: puede coincidir con cualquier atributo de solicitud;
  • Se pueden especificar predicado (afirmación) y filtro (filtro) para la ruta;
  • Integre la función de disyuntor de Hystrix;
  • Integre la función de descubrimiento de servicios de Spring Cloud;
  • Predicado y filtro fáciles de escribir;
  • Solicitud de función de limitación de corriente;
  • Se admite la reescritura de rutas.

1.2 Conceptos relacionados

  • Ruta (Route): Route es el módulo básico para construir una puerta de enlace, que consta de ID, URI de destino, una serie de afirmaciones y filtros, si la afirmación es verdadera, la ruta coincide;
  • Predicado: se refiere al predicado de función de Java 8. El tipo de entrada es ServerWebExchange en Spring Framework. Esto permite a los desarrolladores hacer coincidir todo en una solicitud HTTP, como encabezados de solicitud o parámetros de solicitud. Ruta si la solicitud coincide con la afirmación;
  • Filter (filtro): se refiere a la instancia de GatewayFilter en el marco Spring.Usando el filtro, la solicitud se puede modificar antes y después de enrutar la solicitud.

2. Cree un proyecto Spring Cloud Gateway

2.1 Agregar dependencias relacionadas a pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spring-cloud-demo</artifactId>
        <groupId>com.hxmec</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>spring-cloud-gateway</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--使用Eureka注册中心-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!-- SpringCloud Hystrix 微服务容错监控组件:断路器,依赖隔离,服务降级,服务监控 依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <!-- 健康检查 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
复制代码

Cree una clase de inicio GateWayApplication, el código de la clase de inicio es el siguiente:

@SpringBootApplication
@EnableDiscoveryClient
public class GateWayApplication {

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

}
复制代码

2.2 Hay dos formas de configurar el enrutamiento de la puerta de enlace Spring Cloud

  • archivo de configuración
  • Manera de Java Bean

2.2.1 Método del archivo de configuración

Agregue el archivo de configuración bootstrap.yml, el contenido es el siguiente:

server:
  port: 9100
eureka:
  instance:
    #每隔5s发送一次心跳
    lease-renewal-interval-in-seconds: 5
    #告知服务端10秒还未收到心跳的话,就将该服务移除列表
    lease-expiration-duration-in-seconds: 10
    #健康检查路径
    health-check-url-path: /actuator/health
  client:
    #默认为30秒
    registry-fetch-interval-seconds: 5
    serviceUrl:
      #eureka注册中心地址
      defaultZone: http://localhost:8888/eureka/
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      discovery:
        locator:
          #开启从注册中心动态创建路由的功能
          enabled: true
          #使用小写服务名,默认是大写
          lower-case-service-id: true
      routes:
        - id: eureka-client-provider #路由的ID
          uri: lb://eureka-client-provider
          predicates:
            - Path=/provider/** # 路由规则
          filters:
            - StripPrefix=1
        - id: eureka-client-consumer #路由的ID
          uri: lb://eureka-client-consumer
          predicates:
            - Path=/consumer/** # 路由规则
          filters:
            - StripPrefix=1
复制代码

2.2.2 La configuración de JAVA BEAN es la siguiente

Agregue una clase JAVA GatewayConfig para configurar el enrutamiento

@Configuration
public class GatewayConfig {

    @Bean
    public RouteLocator customerRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes ()
                .route (r -> r.path ("/provider/**")
                        .filters (f -> f.stripPrefix (1))
                        .uri ("lb://eureka-client-provider")
                        .id ("eureka-client-provider")
                )
                .route (r -> r.path ("/consumer/**")
                        .filters (f -> f.stripPrefix (1))
                        .uri ("lb://eureka-client-consumer")
                        .id ("eureka-client-consumer")
                )
                .build ();
    }
}
复制代码

2.3 Iniciar el programa y realizar pruebas de enrutamiento

Inicie los proyectos spring-cloud-eureka-server, spring-cloud-eureka-client-provider, spring-cloud-eureka-client-consumer y spring-cloud-gateway creados en este artículo. La dirección de prueba es la siguiente:

http://localhost:9100/proveedor/demo/hola

http://localhost:9100/consumer/test/callHello

3. Dirección de Git del proyecto

GitHub https://github.com/ty1972873004/spring-cloud-demo

4. Referencia

Supongo que te gusta

Origin blog.csdn.net/m0_54850467/article/details/123684873
Recomendado
Clasificación