Todos los productos
Search
Centro de documentos

Enterprise Distributed Application Service:Build service gateways

Última actualización: Sep 05, 2026

Una pasarela de servicio enruta las solicitudes entrantes de los clientes hacia los microservices del backend según reglas configurables, como la ruta de la URL, los encabezados o los parámetros de consulta. Este tema explica cómo compilar una pasarela con Nacos como registro de servicios, ya sea mediante Spring Cloud Gateway o Spring Cloud Netflix Zuul.

Para omitir la configuración paso a paso, descargue los proyectos de demostración completos:

Cómo enruta las solicitudes Spring Cloud Gateway

Spring Cloud Gateway procesa las solicitudes mediante tres componentes fundamentales:

Componente

Descripción

Ruta

Es el bloque de construcción básico. Cada ruta asigna una solicitud entrante a un servicio del backend y se define mediante un ID, una URI de destino, uno o más predicados y filtros opcionales.

Predicado

Condición de coincidencia que se evalúa frente a la solicitud entrante (ruta, encabezado, parámetro de consulta, etc.). Una ruta coincide cuando todos sus predicados devuelven verdadero.

Filtro

Paso de procesamiento que modifica la solicitud o la respuesta antes o después del reenvío. Por ejemplo, StripPrefix=1 elimina el primer segmento de la ruta antes de enviar la solicitud al servicio posterior.

Flujo de la solicitud: Cliente -> Asignación de controladores de la pasarela (coincide con una ruta al evaluar los predicados) -> Controlador web de la pasarela (ejecuta la cadena de filtros) -> Servicio del backend. Los filtros se ejecutan tanto antes como después de la solicitud proxy, lo que permite modificar encabezados, reescribir rutas o agregar autenticación en el nivel de la pasarela.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Maven instalado con las variables de entorno configuradas

  • La versión más reciente de Nacos Server descargada

  • Opcional:

    Al desarrollar aplicaciones localmente, puede usar el plugin de Alibaba Cloud Toolkit para habilitar llamadas mutuas entre las aplicaciones locales y las aplicaciones desplegadas en EDAS, lo que se conoce como interconexión de extremo a nube. De esta manera, no necesita configurar una VPN y mejora la eficiencia del desarrollo. Para obtener más información, consulte Overview of end-to-cloud interconnection.

Iniciar Nacos Server

  1. Descomprima el paquete de Nacos Server descargado.

  2. Vaya al directorio nacos/bin e inicie Nacos Server en modo independiente:

    • Linux, UNIX o macOS:

      sh startup.sh -m standalone
    • Windows: haga doble clic en startup.cmd.

Compilar una pasarela de servicio con Spring Cloud Gateway

Spring Cloud Gateway se basa en Project Reactor y Spring WebFlux, y proporciona una pasarela reactiva sin bloqueo.

Paso 1: Crear el proyecto de la pasarela

  1. Cree un proyecto de Maven llamado spring-cloud-gateway-nacos.

  2. Agregue las siguientes dependencias a pom.xml. Este ejemplo usa Spring Boot 2.1.4.RELEASE y Spring Cloud Greenwich.SR1:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
            <relativePath/>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2.1.1.RELEASE</version>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Greenwich.SR1</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>
  3. Cree la clase de inicio GatewayApplication:

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

Paso 2: Configurar las reglas de enrutamiento

Agregue la siguiente configuración a application.yaml. Reemplace 127.0.0.1:8848 por la dirección real de su Nacos Server si se ejecuta en una máquina diferente.

server:
  port: 18012

spring:
  application:
    name: spring-cloud-gateway-nacos
  cloud:
    gateway:
      routes:
      - id: service-provider
        uri: lb://service-provider
        predicates:
        - Path=/provider1/**
        filters:
        - StripPrefix=1
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

Esta configuración de ruta funciona de la siguiente manera:

Componente

Valor

Descripción

Predicado

Path=/provider1/**

Coincide con todas las solicitudes cuya ruta comienza con /provider1/.

URI

lb://service-provider

Reenvía las solicitudes coincidentes al servicio service-provider mediante balanceo de carga del lado del cliente.

Filtro

StripPrefix=1

Elimina el primer segmento de la ruta antes del reenvío. Por ejemplo, /provider1/echo/hello se convierte en /echo/hello.

Paso 3: Iniciar la pasarela y verificar el registro

  1. Ejecute la función principal de GatewayApplication para iniciar la pasarela.

  2. Abra la consola de Nacos Server en http://127.0.0.1:8848/nacos (nombre de usuario y contraseña predeterminados: nacos).

  3. En el panel de navegación izquierdo, elija Service Management > Services. Confirme que spring-cloud-gateway-nacos aparece en la lista de servicios.

Compilar una pasarela de servicio con Spring Cloud Netflix Zuul

Zuul es una opción alternativa de pasarela basada en un modelo de E/S con bloqueo. Resulta adecuada para aplicaciones que ya utilizan la pila de Netflix OSS.

Paso 1: Crear el proyecto de la pasarela

  1. Cree un proyecto de Maven llamado spring-cloud-zuul-nacos.

  2. Agregue las siguientes dependencias a pom.xml. Este ejemplo usa Spring Boot 2.1.4.RELEASE, Spring Cloud Greenwich.SR1 y Spring Cloud Alibaba 0.9.0:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
            <relativePath/>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-webflux</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2.1.1.RELEASE</version>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Greenwich.SR1</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>
  3. Cree la clase de inicio ZuulApplication:

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

Paso 2: Configurar las reglas de enrutamiento

Agregue la siguiente configuración a application.properties. Reemplace 127.0.0.1:8848 por la dirección real de su Nacos Server si se ejecuta en una máquina diferente.

spring.application.name=spring-cloud-zuul-nacos
server.port=18022

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

zuul.routes.opensource-provider1.path=/provider1/**
zuul.routes.opensource-provider1.serviceId=service-provider

Esto enruta todas las solicitudes con una ruta que comienza con /provider1/ hacia el servicio del backend service-provider.

Paso 3: Iniciar la pasarela y verificar el registro

  1. Ejecute la función principal de ZuulApplication para iniciar la pasarela.

  2. Abra la consola de Nacos Server en http://127.0.0.1:8848/nacos (nombre de usuario y contraseña predeterminados: nacos).

  3. En el panel de navegación izquierdo, elija Service Management > Services. Confirme que spring-cloud-zuul-nacos aparece en la lista de servicios.

Crear un proveedor de servicios

Tanto Spring Cloud Gateway como Zuul requieren un servicio posterior al cual reenviar las solicitudes. Para obtener todos los detalles, consulte Implement service registration and discovery.

El siguiente ejemplo crea un proveedor de servicios mínimo con un único endpoint /echo/{string}:

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {

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

    @RestController
    public class EchoController {
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            return string;
        }
    }
}

Verificar el reenvío de solicitudes

Verificación local

Inicie tanto la pasarela como el proveedor de servicios, y luego envíe una solicitud a través de la pasarela.

Para Spring Cloud Gateway (puerto 18012):

curl http://127.0.0.1:18012/provider1/echo/hello

Para Zuul (puerto 18022):

curl http://127.0.0.1:18022/provider1/echo/hello

Una respuesta exitosa devuelve hello, lo que confirma que la pasarela reenvió la solicitud a service-provider y eliminó el prefijo /provider1.

EDAS Spring Cloud application development: build a Zuul gateway

Despliegue en EDAS

Despliegue la aplicación en Enterprise Distributed Application Service (EDAS). Para consultar las instrucciones de despliegue, vea Implement service registration and discovery.

El registro de servicios de EDAS es una versión comercial de Nacos. Al desplegar en EDAS, la plataforma configura automáticamente los detalles de conexión de Nacos: dirección IP, puerto de servicio, namespace, AccessKey ID, AccessKey secret y ruta de contexto. No se requiere configuración adicional. Conserve o elimine la configuración original de Nacos local según sea necesario.

Compatibilidad de versiones

Versión de Spring Cloud

Versión de Spring Cloud Alibaba

Greenwich

2.1.1.RELEASE

Finchley

2.0.1.RELEASE

Edgware

1.5.1.RELEASE

Nota

Spring Cloud Edgware ha llegado al final de su ciclo de vida. No lo utilice para nuevas aplicaciones.

Pasos siguientes