Introducción al marco de microservicios Spring Cloud
Antes de comprender Spring Cloud, primero comprenda los puntos clave centrales que deben considerarse en la arquitectura de microservicios, de la siguiente manera:
No es necesario entrar en detalles sobre lo anterior. y otros puntos clave centrales nos han ayudado a integrarnos. Utiliza el estilo Spring Boot para combinar algunos marcos de microservicios más maduros. Utiliza el estilo Spring Boot para combinar algunos marcos de microservicios más maduros, protegiendo principios de configuración e implementación complejos. una plataforma para crear rápidamente microservicios. Las aplicaciones de arquitectura de servicios proporcionan un conjunto de herramientas de infraestructura y soporte de desarrollo.
Las funciones principales proporcionadas por Spring Cloud incluyen:
Arquitectura de Spring Cloud
Subproyecto Spring Cloud
Subproyecto Spring Cloud
Los subproyectos de Spring Cloud se pueden dividir aproximadamente en dos categorías:
Los siguientes:
1. Spring Cloud y Spring Boot
Spring Boot can Se dice que es una de las tecnologías centrales de la arquitectura de microservicios. Al agregar dependencias de Spring MVC a su aplicación Spring Boot, puede implementar rápidamente interfaces de servicio basadas en la arquitectura REST y brindar soporte para operaciones 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, es imprescindible utilizar Spring Boot.
2. Spring Cloud y la gobernanza de servicios (Eureka)
La gobernanza de servicios es el núcleo de Spring Cloud. En realidad, hay dos opciones: Consul y Eureka de Netflix.
Eureka proporciona un registro de servicios, un cliente de descubrimiento de servicios y una aplicación UI para registrar servicios.
En la implementación de Eureka, los nodos son iguales y los "bloqueos" parciales del registro no afectan a toda la aplicación, por lo que incluso si solo un nodo sobrevive en el clúster, el servicio aún se puede administrar normalmente. Incluso si todos los nodos del registro de servicios están inactivos, la lista de instancias de servicios almacenada en caché por el cliente Eureka permite a los consumidores de servicios trabajar normalmente, lo que garantiza la solidez de las llamadas entre microservicios y la resiliencia de las aplicaciones.
3. Equilibrio de carga del cliente y la nube de Spring (Ribbon)
Ribbon se integra perfectamente con Eureka de forma predeterminada. Cuando se inicia el cliente, obtiene la lista de registro de servicios del servidor Eureka y la mantiene localmente. Cuando un consumidor de servicios necesita invocar un servicio, Ribbon selecciona una instancia de proveedor de servicios adecuada y accede a ella de acuerdo con la política de equilibrio de carga.
Spring Cloud simplifica cómo se manejan las llamadas entre microservicios al integrarse con el proyecto Feign de Netflix, que proporciona a los desarrolladores llamadas de servicio declarativas. De forma predeterminada, el proyecto Feign se integra con Ribbon para permitir el equilibrio de carga de llamadas declarativas del lado del cliente.
4. Spring Cloud y degradación y tolerancia a fallas de microservicios (Hystrix)
Para proporcionar una mayor flexibilidad para los microservicios, Spring Cloud proporciona la anotación @HystrixCommand y el subproyecto Hystrix de Netflix integrado.
A través de la anotación @HystrixCommand, podemos proporcionar fácilmente funciones de tolerancia a fallos, reversión y degradación para los microservicios desarrollados. Además, Hystrix está integrado en el subproyecto Feign de forma predeterminada.
Hystrix se crea basándose en el modelo "disyuntor". Cuando Hystrix monitorea una falla en una unidad de servicio, entrará en una falla del servicio y devolverá un respaldo esperado a la persona que llama en lugar de esperar mucho tiempo o generar una excepción de llamada, de modo que el servicio no estará bloqueado por un tiempo innecesariamente largo. El hilo de la persona que llama, evitando así que una avalancha de fallos se extienda por toda la aplicación.
El panel de control de Hystrix puede monitorear el tiempo consumido por cada llamada de servicio, el número de solicitudes, la tasa de éxito, etc. A través de este monitoreo y alerta casi en tiempo real, se pueden detectar problemas potenciales en el sistema. descubierto y tratado a tiempo.
5. Spring Cloud y Service Gateway (Zuul)
Spring Cloud implementa la función de puerta de enlace de servicio API integrando Zuul con Netflix, proporcionando así enrutamiento y filtrado de solicitudes
La función de enrutamiento es responsable de reenviar solicitudes externas a instancias de microservicio específicas.
La función de enrutamiento es responsable de reenviar solicitudes externas a instancias de microservicios específicas. Es la base para realizar un punto de entrada unificado para el acceso externo.
La función de filtrado interviene en el procesamiento de las solicitudes y es la base para la verificación de solicitudes, agregación de servicios, etc.
A través de Zuul, los servicios de grano fino se pueden combinar para proporcionar servicios de grano grueso. En los servicios de grano grueso, todas las solicitudes se importan a un punto de entrada unificado y, externamente, todo el servicio solo necesita exponerse. una interfaz API, protegiendo así los detalles de la implementación del lado del servidor. A través de la función de proxy inverso de Zuul, puede implementar direcciones de enrutamiento, reenviar solicitudes a los servicios back-end de grano grueso y realizar algún procesamiento lógico general. Además, Zuul integra el servidor Eureka de forma predeterminada, que puede obtener automáticamente todos los servicios registrados del servidor Eureka y realizar un mapeo de rutas para configurar automáticamente la puerta de enlace del servicio API.
6. Spring Cloud y middleware de mensajería (Stream)
Spring Cloud proporciona el subproyecto Stream para simplificar el desarrollo basado en mensajes estableciendo una capa de abstracción de aplicaciones de mensajería. procesamiento funcional como envío y recepción de mensajes, consumo de paquetes y división de mensajes. Al establecer una capa de abstracción de aplicaciones de mensajería, crea procesamiento funcional como el envío y recepción de mensajes, el consumo de paquetes y la división de mensajes, separando así el envío y la recepción de mensajes en aplicaciones comerciales del middleware de mensajería específico, lo que lo hace más eficiente en el microprocesamiento. integrarse con middleware de mensajería como Kafka y RabbitMQ en el desarrollo de aplicaciones de servicios.
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 un 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 satisfacer las necesidades de gestión de archivos de configuración en la arquitectura de microservicios, Spring Cloud proporciona un subproyecto Config. Spring Cloud Config está centralizado, tiene control de versiones, admite actualizaciones dinámicas y es independiente del idioma.
En el subproyecto Config, la aplicación de microservicio se divide en dos roles: servidor de configuración y cliente de configuración. Utilice el servidor de configuración para administrar centralmente todos los archivos de propiedades de configuración, y el centro de servicios de configuración puede almacenar archivos de propiedades de configuración en Git, SVN y otros repositorios con capacidades de administración de versiones, o en el sistema de archivos.
De forma predeterminada, Git se utiliza para el almacenamiento, por lo que los archivos de configuración se pueden modificar y versionar fácilmente.
8. Spring Cloud y seguimiento de enlaces de microservicios (Sleuth)
El subproyecto Sleuth en Spring Cloud proporciona a los desarrolladores la función de seguimiento de enlaces para llamadas entre microservicios.
El concepto central de Sleuth es conectar el procesamiento de solicitudes distribuido en cada nodo de servicio de microservicio a través de una ID global, restaurar la relación de llamada y utilizar puntos de entierro de datos para recopilar datos de rendimiento de la cadena de llamadas de microservicio.
Por lo tanto, Sleuth puede analizar las solicitudes de los usuarios sabiendo exactamente por qué servicios pasó la solicitud del usuario y el tiempo de procesamiento de cada servicio. Además, al enviar los datos recopilados a Zipkin para su almacenamiento, estadísticas y análisis, los datos se pueden visualizar, analizar y mostrar para ayudar a los desarrolladores a optimizar sus microservicios.
9. Spring Cloud y Microservice Security
Spring Cloud Security nos proporciona un marco de seguridad para la autenticación y la autenticación, que puede permitir la autorización de recursos, la administración de tokens y otras funciones. Esto simplifica el desarrollo de controles de seguridad al permitir que la información de autenticación se transmita directamente durante las llamadas de microservicio.
Spring Cloud Security admite el protocolo de autenticación OAuth 2.0 de forma predeterminada, por lo que el inicio de sesión único es fácil de implementar y los tokens generados por OAuth 2.0 se pueden utilizar como JWT, lo que simplifica aún más la gestión de la seguridad en los microservicios.
10. Otros subproyectos de Spring Cloud 10.