Proyecto de microservicio SpringCloud combat-zuul gateway detallado y compilado

El artículo anterior introdujo la invocación del servicio. Este artículo sigue el tema anterior y habla sobre el uso de zuul en Spring Cloud y el establecimiento de una puerta de enlace.

Primero, necesitamos saber qué es una puerta de enlace .
La puerta de enlace es una entrada frontal unificada en un sistema. Es una capa intermedia entre el cliente y el servidor. Se utiliza principalmente para manejar funciones no comerciales y proporcionar funciones tales como solicitudes de enrutamiento, autenticación, monitoreo, almacenamiento en caché y limitación de corriente. La solicitud iniciada por el cliente primero pasa a través de la puerta de enlace para el procesamiento de funciones no comerciales y luego se ubica en un nodo de servicio específico de acuerdo con el enrutamiento de la ruta.

Al mismo tiempo, el sistema utiliza la función de enrutamiento de servicio, que solo puede exponer la dirección de llamada configurada en la puerta de enlace cuando proporciona servicios al mundo exterior, y la persona que llama no necesita conocer el host de micro servicio específico del back-end. Puede proteger eficazmente la información de la dirección del servicio real. Zuul es un portal de microservicios, en primer lugar un microservicio. También registrará y descubrirá servicios en el centro de registro de Eureka. También es una puerta de enlace, y las solicitudes deben enrutarse a través de Zuul. La entrada de Zuul no es necesaria. Se recomienda Introducción de SpringCloud zuul

1. ¿Por qué utilizar la puerta de enlace de microservicios?

Por lo general, los diferentes microservicios tienen diferentes direcciones de red, y el cliente puede necesitar llamar a múltiples interfaces de servicio para completar un requisito comercial. Si el cliente se comunica directamente con cada microservicio, habrá los siguientes problemas:

    1) El cliente solicitará diferentes microservicios muchas veces, aumentando la complejidad del cliente;

    2) Hay solicitudes de dominio cruzado y el procesamiento es relativamente complejo;

    3) La certificación es compleja y cada servicio requiere una certificación independiente;

    4) Difícil de reconstruir, los servicios múltiples pueden combinarse en uno o dividirse en múltiples;

2. ¿Las ventajas y desventajas de usar una puerta de enlace?

Ventajas:

  1. Todas las solicitudes externas interactúan primero a través de la puerta de enlace de microservicios, sin llamar a interfaces específicas de microservicios, lo que simplifica el desarrollo;

  2. Pasarela de servicio = reenvío de enrutamiento + filtro

  • Enrutamiento y reenvío: recepción de solicitudes y reenvío a los microservicios de fondo;

  • Filtro: se puede completar una serie de funciones transversales en la puerta de enlace de servicio (verificación de autoridad)

Desventajas: aumentar la puerta de enlace, una capa adicional de reenvío, el rendimiento del servicio disminuirá;

3. ¿Cuál es el papel de usar zuul? Zuul puede implementar las siguientes funciones cargando un mecanismo de filtrado dinámico:

  • Verificación y seguridad: identifique los requisitos de verificación para varios recursos y rechace aquellas solicitudes que no coincidan con los requisitos.
  • Revisión y monitoreo: rastree datos significativos y resultados estadísticos en el borde para traernos conclusiones precisas del estado de producción.
  • Enrutamiento dinámico: enrute dinámicamente las solicitudes a diferentes grupos de back-end según sea necesario.
  • Prueba de esfuerzo: aumente gradualmente el tráfico de carga dirigido al clúster para calcular el nivel de rendimiento.
  • Distribución de carga: asigne la capacidad correspondiente para cada tipo de carga y descarte las solicitudes que excedan el límite.
  • Procesamiento de respuesta estática: la respuesta parcial se establece directamente en el borde para evitar que fluya hacia el clúster interno.
  • Flexibilidad multirregional: el enrutamiento de solicitudes en las regiones de AWS tiene como objetivo diversificar el uso de ELB y garantizar que las ubicaciones de borde estén lo más cerca posible de los usuarios.

4. ¿Cómo funciona zuul?

El núcleo de zuul es una serie de filtros, su función se puede comparar con el filtro del marco de Servlet, o AOP. En el proceso de zuul que pone la ruta de solicitud en la lógica de procesamiento del usuario, estos filtros participan en algunos procesos de filtrado, como la autenticación, el deslastre de carga, etc. 

Zuul proporciona un marco para cargar, compilar y ejecutar filtros dinámicamente.

No hay comunicación directa entre los filtros de Zuul, y pasan datos a través de una clase estática de RequestContext. Hay una variable ThreadLocal en la clase RequestContext para registrar los datos que cada solicitud debe pasar.

Groovy escribe los filtros de Zuul. Estos archivos de filtro se colocan en directorios específicos en el servidor Zuul. Zuul sondea periódicamente estos directorios. Los filtros modificados se cargarán dinámicamente en el servidor Zuul para filtrar las solicitudes.

Existen varios tipos de filtros estándar:

La mayoría de las funciones de Zuul se implementan a través de filtros. En Zuul se definen cuatro tipos de filtro estándar, que corresponden al ciclo de vida típico de una solicitud.

    1) PRE: Este filtro se llama antes de enrutar la solicitud. Podemos usar este filtro para implementar la autenticación, seleccionar los microservicios solicitados en el clúster y registrar la información de depuración.

    2) RUTA DE NEGOCIOS. Este filtro se utiliza para crear solicitudes enviadas a microservicios y usar Apache HttpClient o Netfilx Ribbon para solicitar microservicios.

    3) POST: este filtro se ejecuta después del enrutamiento al microservicio. Este filtro se puede usar para agregar encabezados HTTP estándar a la respuesta, recopilar estadísticas y métricas y enviar la respuesta desde el microservicio al cliente.

    4) ERROR: el filtro se ejecuta cuando se produce un error en otras etapas.

Filtro especial incorporado

zuul también proporciona un tipo especial de filtros, a saber: StaticResponseFilter y SurgicalDebugFilter;

  • StaticResponseFilter: StaticResponseFilter permite generar una respuesta desde Zuul, en lugar de reenviar la solicitud a la fuente.

  • SurgicalDebugFilter: SurgicalDebugFilter permite enrutar solicitudes específicas a clústeres o hosts de depuración separados.

Filtros personalizados

Además del tipo de filtro predeterminado, Zuul también nos permite crear tipos de filtro personalizados.

5. La diferencia entre Zuul y Nginx es la misma: Zuul y Nginx pueden lograr equilibrio de carga, proxy inverso (ocultar la dirección IP real), filtrar solicitudes y lograr el efecto de la puerta de enlace:

  • Desarrollo del lenguaje Nginx – c

  • Zuul - desarrollo del lenguaje java

  • Implementación de equilibrio de carga de Zuul: use ribbon + eureka para lograr el equilibrio de carga local

  • Implementación de equilibrio de carga de Nginx: uso del servidor para lograr el equilibrio de carga

  • Nginx será más poderoso que zuul porque Nginx integra algunos lenguajes de script (Nginx + lua)

  • Nginx es adecuado para el equilibrio de carga del lado del servidor

  • Zuul es adecuado para implementar puertas de enlace en microservicios

Edificio de servicios Zuul

Primero, introduzcamos el servicio de dependencia de zuul en el proyecto principal

Luego cree el módulo de microservicio Zuul y agregue la dependencia pom de la siguiente manera:

Agregar configuración yml:

Luego agregue la clase de inicio:

Comience todos los servicios:

Prueba:

Lectura recomendada: SpringCloud microservice project combat & nbsp; - & nbsp; Explicación detallada de la llamada al microservicio (con preguntas de la entrevista)

Combate del proyecto de microservicio SpringCloud, registro y descubrimiento del servicio (con preguntas de entrevista)

Spring Cloud microservicio proyecto combat-Eureka service building

 

Escanee el código para prestar atención al número público, envíe palabras clave para obtener información relevante:

  1. Enviar "Springboot" para recibir el código fuente real del proyecto de comercio electrónico;

  2. Enviar "SpringCloud" para recibir materiales prácticos de aprendizaje;

  3. Enviar "Combate SpringCloud" para recibir el código fuente del combate SpringCloud;

 

Supongo que te gusta

Origin www.cnblogs.com/lyn20141231/p/12761503.html
Recomendado
Clasificación