Red de conocimiento de abogados - Derecho de sociedades - Introducción a Spring Cloud del marco de microservicios

Introducción a Spring Cloud del marco de microservicios

Antes de comprender Spring Cloud, primero comprenda los puntos clave centrales que deben considerarse en la arquitectura de microservicios, como se muestra a continuación:

Para el procesamiento de los puntos clave centrales anteriores, No es necesario reinventar la rueda, Spring Cloud nos ha ayudado a integrarlo. Utiliza el estilo Spring Boot para combinar algunos marcos de microservicios relativamente maduros, protege principios de configuración e implementación complejos y proporciona un conjunto de herramientas de infraestructura para construir rápidamente una arquitectura de microservicios. aplicaciones y soporte al desarrollo.

Las funciones principales proporcionadas por Spring Cloud incluyen:

Diagrama de arquitectura de Spring Cloud

Subproyectos de Spring Cloud

Subproyectos de Los proyectos Spring Cloud se pueden dividir aproximadamente en dos categorías:

de la siguiente manera:

1. Spring Cloud y Spring Boot

Se puede decir que Spring Boot es uno de las tecnologías centrales de la arquitectura de microservicios. Al agregar dependencias de Spring MVC a las aplicaciones Spring Boot, puede implementar rápidamente interfaces de servicio basadas en la arquitectura REST y brindar soporte para acciones estándar HTTP. Además, Spring Boot proporciona soporte de serialización JackJson de forma predeterminada, lo que permite que la entrada y salida de la interfaz de servicio admita JSON, etc. Por lo tanto, cuando se utiliza Spring Cloud para el desarrollo de arquitectura de microservicios, utilizar Spring Boot es el único camino a seguir.

2. Spring Cloud y Service Governance (Eureka)

El gobierno de servicios es el núcleo de Spring Cloud y proporciona dos opciones de implementación, a saber, Consul y Eureka de Netflix.

Eureka proporciona un centro de registro de servicios, un cliente de descubrimiento de servicios y una aplicación de interfaz de usuario para registrar servicios.

En la implementación de Eureka, los nodos son iguales entre sí. Incluso si algunos centros de registro "cuelgan", no afectará a toda la aplicación. Incluso si solo queda un nodo en el clúster. Los servicios aún se pueden gestionar con normalidad. Incluso si todos los nodos de registro de servicios están inactivos, la información de la lista de instancias de servicios almacenada en caché en el cliente Eureka aún puede permitir que los consumidores de servicios trabajen normalmente, garantizando así la solidez de las llamadas mutuas entre microservicios y la flexibilidad de las aplicaciones.

3. Spring Cloud y equilibrio de carga del cliente (Ribbon)

Ribbon se integra perfectamente con Eureak de forma predeterminada. Cuando el cliente se inicia, obtiene un servicio del servidor Eureka. se mantiene localmente Cuando un consumidor de servicios necesita llamar a un servicio, Ribbon seleccionará una instancia de proveedor de servicios adecuada de acuerdo con la política de equilibrio de carga y accederá a ella.

Spring Cloud proporciona a los desarrolladores llamadas de servicio declarativas mediante la integración del proyecto Feign de Netflix, simplificando así la forma en que se procesan las llamadas entre microservicios. Y el proyecto Feign integra Ribbon de forma predeterminada, por lo que las llamadas declarativas también admiten la función de equilibrio de carga del cliente.

4. Spring Cloud y degradación y tolerancia a fallas de microservicios (Hystrix)

Para brindar mayor flexibilidad a la arquitectura de microservicios, en Spring Cloud, integrando el subproyecto de Netflix Hystrix A través de la anotación @HystrixCommand proporcionada, podemos proporcionar fácilmente tolerancia a fallas, reversión, degradación y otras funciones para los microservicios que desarrollamos. Además, Hystrix también está integrado en el subproyecto Feign de forma predeterminada.

Hystrix fue creado basándose en el patrón "disyuntor". Cuando Hystrix monitorea que una unidad de servicio falla, ingresará al proceso de disyuntor de servicio y devolverá un proceso de degradación del servicio esperado (respaldo) a la persona que llama, en lugar de esperar mucho tiempo o generar una excepción de llamada, asegurando así las llamadas de servicio. El hilo del tercero no estará ocupado innecesariamente durante mucho tiempo para evitar el efecto de avalancha causado por la propagación de fallas en la aplicación.

El proyecto de panel de Hystrix (Dashboard) puede monitorear el tiempo consumido por cada llamada de servicio, la cantidad de solicitudes, la tasa de éxito, etc. A través de este monitoreo y alarmas casi en tiempo real, se pueden detectar posibles problemas en el sistema. pueda ser descubierto de manera oportuna y procesarlo.

5. Spring Cloud y Service Gateway (Zuul)

Spring Cloud implementa la función API service gateway integrando Zuul en Netflix, proporcionando dos funciones: enrutamiento y filtrado de solicitudes

p>

La función de enrutamiento es responsable de reenviar solicitudes externas a instancias de microservicios específicas y es la base para realizar una entrada unificada para el acceso externo.

La función de filtro es responsable de intervenir en el proceso de procesamiento de solicitudes y es la base para implementar funciones como la verificación de solicitudes y la agregación de servicios.

A través de Zuul, los servicios detallados se pueden combinar para proporcionar un servicio detallado. Todas las solicitudes se importan en una entrada unificada. Todo el servicio solo necesita exponer una interfaz API al mundo exterior, protegiendo. Los detalles de implementación del servidor. A través de la función de proxy inverso de Zuul, se puede implementar el direccionamiento de enrutamiento, las solicitudes se pueden reenviar a los servicios de back-end de grano grueso y se puede realizar algún procesamiento lógico general. Además, Zuul se integrará con el servidor Eureka de forma predeterminada, obtendrá automáticamente todos los servicios registrados del servidor Eureka y realizará un mapeo de rutas para realizar la configuración automática de la puerta de enlace del servicio API.

6. Spring Cloud y middleware de mensajes (Stream)

Para simplificar el desarrollo basado en mensajes, Spring Cloud proporciona el subproyecto Stream Al establecer una capa de abstracción de aplicaciones de mensajes. El procesamiento funcional del mensaje, como el envío y la recepción, el consumo grupal y la fragmentación de mensajes, desacopla el envío y la recepción de mensajes en aplicaciones comerciales del middleware de mensajes específico, lo que facilita la integración con el middleware de mensajes como Kafka y RabbitMQ en el desarrollo de aplicaciones de microservicio.

Spring Cloud Bus se extiende en función de Stream y se puede utilizar como un bus de eventos y mensajes entre microservicios para propagar cambios de estado en el clúster de servicios.

Por ejemplo, Spring Cloud Config utiliza Bus para implementar el procesamiento de actualización dinámica de la configuración.

7. Spring Cloud y el Centro de configuración distribuida (Config)

Para las necesidades de administración de archivos de configuración bajo la arquitectura de microservicio, Spring Cloud proporciona un subproyecto Config. Spring Cloud Config tiene características como centralización, control de versiones, soporte para actualizaciones dinámicas e independencia del idioma.

En el subproyecto Config, la aplicación de microservicio se divide en dos roles: servidor de configuración (Config Server) y cliente de configuración (Config Client).

Utilice el servidor de configuración para administrar de forma centralizada todos los archivos de propiedades de configuración. El centro de servicios de configuración puede almacenar los archivos de propiedades de configuración en Git, SVN y otros repositorios de administración de versiones, o en el sistema de archivos. Git se utiliza para el almacenamiento de forma predeterminada, por lo que los archivos de configuración se pueden modificar fácilmente y controlar la versión.

8. Spring Cloud y seguimiento de enlaces de microservicios (Sleuth)

El subproyecto Sleuth en Spring Cloud proporciona a los desarrolladores seguimiento de enlaces de llamadas entre microservicios.

La idea central de Sleuth es utilizar una ID global para conectar el procesamiento de solicitudes distribuido en cada nodo de servicio de microservicio en serie, restaurar la relación de llamada y utilizar puntos de enterramiento de datos para realizar el enlace de llamada de microservicio. Recopilación de datos de rendimiento.

Por lo tanto, a través de Sleuth, puede comprender claramente por qué servicios pasa una solicitud de usuario y cuánto tiempo lleva procesar cada servicio, de modo que pueda analizar la solicitud del usuario. Además, al enviar los datos recopilados a Zipkin para su almacenamiento, estadísticas y análisis, se puede lograr un análisis y visualización visual para ayudar a los desarrolladores a optimizar los microservicios.

9. Spring Cloud y Microservice Security (Seguridad)

Spring Cloud Security nos proporciona un marco de seguridad para la autenticación y autenticación, implementando autorización de recursos, gestión de tokens, etc. Al mismo tiempo, combinado con Zuul, la información de autenticación se puede transferir directamente durante el proceso de llamada del microservicio, lo que simplifica nuestro desarrollo del control de seguridad.

Spring Cloud Security admite el protocolo de autenticación OAuth 2.0 de forma predeterminada, por lo que el inicio de sesión único puede ser muy fácil de implementar y los tokens generados por OAuth2.0 pueden usar JWT, lo que simplifica aún más la seguridad en la gestión de microservicios.

10. Otros subproyectos de Spring Cloud