Todos los productos
Search
Centro de documentos

Microservices Engine:Migrate from Zuul to a cloud-native gateway

Última actualización: Sep 05, 2026

Las puertas de enlace nativas de la nube combinan la gestión de tráfico y el enrutamiento de microservices en una sola capa basada en Envoy. Esta solución incluye descubrimiento de servicios de contenedores integrado, ofrece un rendimiento superior al de las puertas de enlace NGINX Ingress y proporciona observability y seguridad listas para usar, capacidades que en Zuul requieren desarrollo personalizado.

Este tema aborda la conexión de orígenes de servicio, la conversión de enrutamiento y resiliencia, la configuración de autenticación y observability, así como la transición de tráfico.

Mapeo de conceptos de Zuul a puerta de enlace nativa de la nube

Concepto de Zuul

Equivalente en puerta de enlace nativa de la nube

Notas

Ruta de Zuul (zuul.routes.*)

Regla de enrutamiento

Se configura en la consola de MSE o mediante YAML de Spring Cloud Gateway

serviceId

Servicio (importado desde un origen de servicio)

Suscríbase a los servicios a través de la consola

Filtro de Zuul (pre/post/route)

Directiva de enrutamiento (limitación, reescritura, configuración de encabezados, CORS)

Las directivas integradas reemplazan el código de filtros personalizados

Ribbon (NFLoadBalancerRuleClassName)

Balanceo de carga integrado

Se configura por versión de servicio

Hystrix (timeoutInMilliseconds, maxConcurrentRequests)

Configuración de tiempo de espera y reintentos

Se configura por regla de enrutamiento

Registro de Nacos

Origen de servicio

Agréguelo como origen de servicio en la consola de MSE

Filtros de autenticación personalizados

Complementos de autenticación (JWT, OIDC, IDaaS, personalizado)

No requiere código

Panel de Hystrix

Paneles de datos, Tracing Analysis, envío de registros

Observability integrada

Requisitos previos

Paso 1: Conectar orígenes de servicio

La puerta de enlace nativa de la nube descubre los servicios de backend mediante orígenes de servicio, lo cual reemplaza la configuración de registro de Zuul. Omita esta sección y vaya a Step 2 si:

  • Los servicios se pueden descubrir a través de Container Service for Kubernetes (ACK).

  • Hay una instancia de MSE Nacos configurada como registro que admite Mesh Configuration Protocol (MCP).

  • No se requiere descubrimiento de servicios, ya que se accede a ellos por nombre de dominio o dirección IP fija.

Elegir un tipo de origen de servicio

Instancia de MSE Nacos

  1. Create an MSE Nacos instance.

  2. Registre los servicios en la instancia de MSE Nacos mediante el SDK de Java.

  3. (Opcional) Para aplicaciones Java, utilice el agente de Microservices Governance para migrate registrations automatically with MSE Sync.

Registro compartido de Enterprise Distributed Application Service (EDAS)

Las puertas de enlace nativas de la nube admiten registros de EDAS directamente. Add an EDAS registry as a service source.

Registro compartido de Serverless App Engine (SAE)

Las puertas de enlace nativas de la nube admiten registros de SAE directamente. Add an SAE registry as a service source.

Paso 2: Convertir configuraciones de enrutamiento de Zuul

Asigne su configuración YAML de Zuul a los equivalentes de la puerta de enlace nativa de la nube; utilice la siguiente configuración de ejemplo como referencia.

Configuración de enrutamiento de Zuul (antes)

zuul:
  routes:
    demo:
      path: /test/a
      serviceId: service-a
    pre:
      path: /auth/validation/**
      serviceId: service-a
    header:
      path: /auth/test
      requestHeadersToAdd:
      - key: debug_tag
        value: true
    retry:
      path: /app/try/**
      stripPrefix: false
      retryable: true
      serviceId: service-a
  retryable: true
  ignoredPatterns:
  - /login/api/a/v3/a
  - /auth/api/b

Configuración de registro y resiliencia de Zuul (antes)

spring:
  application:
    name: zuul-demo
  cloud:
    nacos:
      discovery:
        server-addr: nacos-server:8848
      config:
        enabled: false

service-a:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule
    ConnectTimeout: 1000
    ReadTimeout: 8000
    MaxAutoRetries: 3
    MaxAutoRetriesNextServer: 2
    MaxTotalConnections: 20000
    MaxConnectionsPerHost: 5000
hystrix:
  command:
    service-a:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 60000
          strategy: SEMAPHORE
          semaphore:
            maxConcurrentRequests: 60000

2a. Agregar un origen de servicio (reemplaza la configuración de registro)

En la consola de MSE:

  1. Abra la página Service source de su puerta de enlace nativa de la nube.

  2. Agregue su registro de Nacos (u otro tipo de registro) como origen de servicio.

  3. Los cambios surten efecto en tiempo real.

Esto reemplaza la configuración spring.cloud.nacos.discovery.server-addr en Zuul. Add a service source.

2b. Importar y configurar servicios (reemplaza serviceId y Ribbon)

  1. Importe los servicios a los que hacen referencia sus rutas de Zuul (por ejemplo, service-a). Add a service.

  2. Configure una versión de ruta para cada servicio. Manage service versions.

La puerta de enlace nativa de la nube gestiona el balanceo de carga de forma nativa. Esto reemplaza la configuración de Ribbon (WeightedResponseTimeRule, ConnectTimeout, ReadTimeout, grupos de conexiones) mediante la configuración integrada de servicios y reglas de enrutamiento.

Mapeo de Ribbon a puerta de enlace nativa de la nube

Configuración de Ribbon en Zuul

Equivalente en puerta de enlace nativa de la nube

NFLoadBalancerRuleClassName

Directiva de balanceo de carga en la versión del servicio

ConnectTimeout: 1000

Configuración de tiempo de espera en la regla de enrutamiento

ReadTimeout: 8000

Configuración de tiempo de espera en la regla de enrutamiento

MaxAutoRetries: 3

Directiva de reintentos en la regla de enrutamiento

MaxAutoRetriesNextServer: 2

Directiva de reintentos en la regla de enrutamiento

MaxTotalConnections / MaxConnectionsPerHost

Gestionado por la infraestructura de la puerta de enlace

Mapeo de Hystrix a puerta de enlace nativa de la nube

Configuración de Hystrix en Zuul

Equivalente en puerta de enlace nativa de la nube

timeoutInMilliseconds: 60000

Configuración de tiempo de espera en la regla de enrutamiento

strategy: SEMAPHORE

No es necesario (la puerta de enlace gestiona el aislamiento internamente)

maxConcurrentRequests: 60000

Directiva de limitación en la regla de enrutamiento

2c. Crear reglas de enrutamiento (reemplaza zuul.routes)

Cree reglas de enrutamiento en la consola de MSE. Cada ruta de Zuul se asigna a una regla de enrutamiento con un predicado de ruta y un servicio destino.

Conversión de rutas lado a lado

Ruta de Zuul

Ruta

Regla de enrutamiento de puerta de enlace nativa de la nube

demo

/test/a a service-a

Predicado de ruta: /test/a, destino: service-a

pre

/auth/validation/** a service-a

Predicado de ruta: /auth/validation/**, destino: service-a

header

/auth/test + encabezado debug_tag=true

Predicado de ruta: /auth/test, directiva de configuración de encabezados: debug_tag=true

retry

/app/try/** a service-a, stripPrefix=false, retryable=true

Predicado de ruta: /app/try/**, destino: service-a, eliminar prefijo: deshabilitado, reintentos: habilitados

Para ignoredPatterns (/login/api/a/v3/a, /auth/api/b), no cree reglas de enrutamiento para esas rutas.

La puerta de enlace nativa de la nube utiliza internamente el formato de Spring Cloud Gateway:

spring:
  cloud:
    gateway:
      routes:
        - id: websocket_test
          uri: ws://localhost:9000
          order: 9000
          predicates:
            - Path=/echo
        - id: default_path_to_service-a
          uri: lb://service-a
          order: 10000
          predicates:
            - Path=/sleep

Create a routing rule.

2d. Configurar directivas de enrutamiento adicionales

Las directivas de enrutamiento integradas reemplazan el código de filtros de Zuul:

Directiva

Reemplaza

Detalles

Limitación

Filtros personalizados de limitación de velocidad

Configure a throttling policy

Reescritura

Filtros personalizados de reescritura de URL

Configure a rewrite policy

Configuración de encabezados

requestHeadersToAdd en rutas de Zuul

Configure a header setting policy

CORS

Filtros personalizados de CORS

Configure a CORS policy

Paso 3: Configurar la autenticación

La autenticación integrada reemplaza los filtros personalizados de Zuul. Elija el método que se ajuste a su configuración:

Método

Utilice este método cuando

Detalles

Autenticación JWT

Su puerta de enlace Zuul valida tokens JWT en un filtro previo

Configure JWT authentication

Autenticación OIDC

Su aplicación utiliza flujos de OpenID Connect

Configure OIDC authentication

Autenticación IDaaS

Su organización utiliza Alibaba Cloud IDaaS

Configure IDaaS authentication

Autenticación personalizada

Ninguno de los métodos anteriores aplica

Configure custom authentication

Paso 4: Configurar observability

La observability integrada reemplaza las integraciones personalizadas de registros y rastreo de Zuul.

Función

Reemplaza

Detalles

Paneles de monitoreo de la puerta de enlace

Paneles de métricas personalizadas

View the monitoring data of a cloud-native gateway

Reglas de alerta

Integraciones de alertas personalizadas

Manage alert rules

Envío de registros

Canalizaciones de registros personalizadas

Enable log shipping for a cloud-native gateway

Tracing Analysis

Infraestructura de rastreo personalizada

Enable Tracing Analysis for a cloud-native gateway

Paso 5: Migrar el tráfico

Elija una estrategia de migración según su tolerancia al riesgo y el esfuerzo disponible. La migración por procedimientos (recomendada) equilibra seguridad y eficiencia.

Estrategias de migración de tráfico

Estrategia

Funcionamiento

Costo

Riesgo

Migración iterativa

Modifique las URL de acceso de algunos servicios a la vez en el lado del cliente. Compruebe cada lote antes de continuar.

Alto

Bajo

Migración por fases (lado del proxy)

Cree fases de migración por tipo de servicio (críticos frente a no críticos) en el proxy original. Migre las URL de acceso por fases.

Medio

Medio

Migración completa basada en DNS

Asocie el nombre de dominio original con la URL de acceso de la puerta de enlace nativa de la nube en una sola transición.

Bajo

Alto

Migración por procedimientos (recomendada)

Combina las anteriores: pruebe primero con pocos servicios, migre los servicios críticos en secuencia y luego realice una transición completa basada en DNS tras las pruebas de estrés.

Relativamente bajo

Relativamente bajo

Recomendación: migración por procedimientos

  1. Pruebe con servicios no críticos. Actualice las URL de acceso de varios servicios no críticos para que apunten a la puerta de enlace nativa de la nube. Compruebe el enrutamiento, la autenticación y la observability.

  2. Migre los servicios críticos en secuencia. Una vez que las pruebas sean exitosas, migre los servicios críticos uno por uno. Monitoree errores, cambios de latencia y anomalías de tráfico en los paneles de la puerta de enlace.

  3. Realice la transición de DNS tras las pruebas de estrés. Después de migrar y validar todos los servicios, ejecute pruebas de estrés en la puerta de enlace nativa de la nube y asocie el nombre de dominio original con su URL de acceso.

Comprobar la migración

Después de cada fase, compruebe lo siguiente:

  • Las reglas de enrutamiento coinciden con el comportamiento esperado (pruebe las rutas clave).

  • La autenticación se completa correctamente para todos los endpoints de servicio.

  • Los paneles de monitoreo muestran los patrones de tráfico esperados.

  • No aparecen errores en los registros de la puerta de enlace (revise la salida del envío de registros).

Reversión

Si surgen problemas:

  1. Revierta las URL de acceso (o los registros DNS) para que apunten nuevamente a la puerta de enlace Zuul.

  2. Mantenga la puerta de enlace Zuul en ejecución hasta que la migración se valide por completo.

  3. Investigue y resuelva los problemas antes de reintentar la migración.

Referencias