1. ¿Qué es un microservicio?
1.1, evolución de la arquitectura
El proceso de desarrollo de la arquitectura va desde la arquitectura monolítica hasta la arquitectura distribuida, la arquitectura SOA y la arquitectura de microservicios.
Arquitectura monolítica: programa web Java sin división
Arquitectura distribuida: De acuerdo con la división vertical del negocio, cada negocio es una arquitectura única, que se llama entre sí a través de API.
Arquitectura SOA: SOA es una arquitectura orientada a servicios. Los distintos componentes de su aplicación prestan servicios o consumen servicios a otros componentes mediante protocolos de comunicación en la red, por lo que también es una especie de arquitectura distribuida.
1.2, arquitectura de microservicio
Hasta cierto punto, la arquitectura de microservicios es un desarrollo posterior de la arquitectura SOA y actualmente no existe una definición oficial. Martin Fowler, el padre de los microservicios, ofreció una descripción general de los microservicios de la siguiente manera:
1) En la actualidad, no existe una definición unificada y estándar para la industria de los microservicios (aunque no existe una definición precisa de este estilo arquitectónico).
2) Pero en términos generales, la arquitectura de microservicios es un patrón arquitectónico o un estilo arquitectónico. Defiende la división de una sola aplicación en un conjunto de pequeños servicios. Cada servicio se ejecuta en su propio proceso independiente. Coordinar y cooperar entre sí para brindar a los usuarios los valor.
3) Se utiliza un mecanismo de comunicación ligero entre servicios para comunicarse entre sí (normalmente API RESTful basada en HTTP). Cada servicio se basa en un negocio específico y se puede implementar de forma independiente en entornos de producción, entornos similares a la producción, etc.
4) Además, se debe evitar en la medida de lo posible un mecanismo de gestión de servicios unificado y centralizado. Para un servicio específico, se deben seleccionar el lenguaje y las herramientas adecuadas de acuerdo con el contexto empresarial para construirlo, que puede tener una gestión centralizada muy ligera para coordinar estos servicios. Puede usar diferentes idiomas para escribir servicios o puede usar diferentes almacenes de datos.
1.3, soluciones de microservicio
Las dos soluciones de microservicio más populares son SpringCloud y Dubbo.
2. Descripción general de SpringCloud
2.1, que es SpringCloud
Como marco de microservicio en lenguaje Java, Spring Cloud se basa en Spring Boot y tiene las características de desarrollo rápido, entrega continua y fácil implementación. Spring Cloud tiene muchos componentes, que involucran todos los aspectos de los microservicios, y se está volviendo cada vez más perfecto con la promoción de la comunidad de código abierto Spring y Netflix Pivotal.
SpringCloud es una colección orgánica de una serie de componentes.
2.2, componentes principales de SpringCloud
2.2.1 、 Eureka
Netflix Eureka es un componente de descubrimiento de servicios basado en REST de código abierto de Netflix, que incluye Eureka Server y Eureka Client.
2.2.2 、 Cinta
Un componente de equilibrio de carga de código abierto de Ribbon Netflix.
2.2.3 、 Fingir
Feign es un cliente de servicio web declarativo.
2.2.4 、 Hystrix
Hystrix es un proyecto de código abierto de Netflix, que proporciona una función de fusible para evitar fallas de enlace en sistemas distribuidos.
2.2.5 、 Zuul
Zuul es un componente de código abierto dedicado a las soluciones de "puerta de enlace" incubadas por Netflix.
2.2.6 、 Puerta de enlace
Spring Cloud Gateway es una puerta de enlace desarrollada por Spring oficialmente basada en las tecnologías Spring 5.0, Spring Boot 2.0 y Project Reactor. Spring Cloud Gateway tiene como objetivo proporcionar un método de administración de enrutamiento API simple, efectivo y unificado para la arquitectura de microservicios.
2.2.7 、 Configuración
Spring Cloud proporciona Spring Cloud Config en configuración distribuida, que proporciona soporte de cliente y servidor para configuración externa.
2.2.8 、 Autobús
Con Spring Cloud Bus, puede crear fácilmente un bus de mensajes.
2.2.9 、 OAuth2
El sistema de microservicios creado por Sprin Cloud puede usar Spring Cloud OAuth2 para proteger el sistema de microservicios.
2.2.10 、 Detective
Spring Cloud Sleuth es un componente de Spring Cloud y su función principal es proporcionar una solución para el seguimiento de enlaces de servicios en un sistema distribuido.
3. Resumen
Este artículo proporciona una descripción general de la evolución de la arquitectura y los componentes básicos de Spring Cloud para crear microservicios.