[Análisis en profundidad de Spring Cloud Gateway] 01 Conceptos básicos

1. Introducción

Spring Cloud Gateway es un nuevo proyecto de Spring Cloud. Este proyecto es una puerta de enlace desarrollada en base a tecnologías como Spring 5.0, Spring Boot 2.0 y Project Reactor. Su objetivo es proporcionar un método de gestión de enrutamiento API unificado simple y eficaz para la arquitectura de microservicios.
Como puerta de enlace en el ecosistema Spring Cloud, Spring Cloud Gateway tiene como objetivo reemplazar Netflix Zuul. No solo proporciona un método de enrutamiento unificado, sino que también proporciona funciones básicas de puerta de enlace basadas en la cadena de filtros, como: seguridad, monitoreo/indicadores y información actual. limitante. .

2. Concepto

  • Ruta: la ruta es el elemento básico de la puerta de enlace y consta de ID, URI de destino, aserción y filtro. Cuando la solicitud llega a la puerta de enlace, GatewayHandler Mapping realiza una coincidencia de ruta a través de la aserción y, cuando la aserción es verdadera, la ruta coincide.
  • Predicado: El predicado es una función proporcionada en Java 8. Permite a los desarrolladores hacer coincidir solicitudes de HTTP, como encabezados de solicitud o parámetros de solicitud. En pocas palabras, es una condición coincidente.
  • Filtro: el filtro es un filtro en Gateway que puede realizar algún procesamiento comercial antes y después de que se emita la solicitud.

3. Principio de funcionamiento

Cuando la solicitud del cliente llega a Spring Cloud Gateway, Gateway Handler Mapping la interceptará y determinará qué ruta coincide con la solicitud en función de los predicados. Si se encuentra una coincidencia, la solicitud se envía al controlador web de Gateway. El controlador web de Gateway procesa la solicitud a través de una serie de filtros de tipo "pre" y luego ejecuta la solicitud de proxy. Después de la ejecución, pasa por una serie de filtros de tipo "post" y finalmente regresa al cliente.
principio

4. Inicio rápido

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.14</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>gateway-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gateway-demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2021.0.8</spring-cloud.version>
    </properties>
    <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>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Configure una regla de enrutamiento y reenvío. Cuando ingrese http://localhost:8080/hello, vaya al sitio web especificado.

spring:
  application:
    name: gateway-demo
  cloud:
    gateway:
      routes:
        - id: first
          uri: https://example.org
          predicates:
            - Path=/hello/**
          filters:
            - StripPrefix=1
            

Iniciar método principal

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

5. Enlace al sitio web oficial

Documento del sitio web oficial

Supongo que te gusta

Origin blog.csdn.net/suyuaidan/article/details/132532189
Recomendado
Clasificación