Microservicio SpringCloud Tutorial - ¿Qué es Microservicio?

Microservicios (MicroServices) fue originalmente un término propuesto por Martin Fowler en el artículo "MicroServices" publicado en 2014. Una vez que se propuso, se convirtió en un tema candente en el círculo técnico.

Podemos entender los microservicios literalmente, es decir, "servicios diminutos", a continuación los presentaremos desde dos aspectos: "servicio" y "diminutos".

1) El llamado "servicio" en realidad se refiere a los módulos funcionales en el proyecto, que pueden ayudar a los usuarios a resolver un determinado problema o un grupo de problemas, y aparecen como uno de los IDE (entorno de desarrollo integrado, como Eclipse o IntelliJ IDEA) en el proceso de desarrollo Engineering o Moudle.

2) "Pequeño" enfatiza el tamaño de un solo servicio, lo que se refleja principalmente en los siguientes dos aspectos:

  • Los microservicios son pequeños en tamaño y de baja complejidad: un microservicio por lo general solo proporciona un servicio de una sola función comercial, es decir, un microservicio solo se enfoca en hacer una cosa bien, por lo que los microservicios generalmente tienen menos código, menor tamaño y mayor complejidad baja.
  • El equipo de microservicios necesita menos miembros: por lo general, un equipo de microservicios solo necesita de 8 a 10 personas (de 2 a 5 desarrolladores) para completar todo el trabajo, desde el diseño, el desarrollo, las pruebas hasta la operación y el mantenimiento.

arquitectura de microservicios

La arquitectura de microservicios es un estilo de diseño de la arquitectura del sistema. A diferencia de la arquitectura monolítica tradicional (TODO EN UNO), la arquitectura de microservicio aboga por dividir una sola aplicación en múltiples servicios pequeños. Estos pequeños servicios se ejecutan en sus propios procesos independientes, y se utilizan servicios livianos entre servicios. Mecanismo de comunicación de nivel (generalmente HTTP RESTFUL API) para comunicarse.

Por lo general, estos pequeños servicios se construyen en torno a un negocio específico, y cada servicio solo se enfoca en completar una tarea y hacerlo bien, es decir, "las personas profesionales hacen cosas profesionales".

Cada servicio se puede implementar de forma independiente en varios entornos, como el entorno de desarrollo, el entorno de prueba y el entorno de producción, y cada servicio se puede iniciar o destruir de forma independiente sin afectar a otros servicios.

La interacción entre estos servicios se lleva a cabo utilizando tecnologías de comunicación estándar, por lo que diferentes servicios pueden utilizar diferentes tecnologías de almacenamiento de datos e incluso utilizar diferentes lenguajes de programación.

Arquitectura de microservicios frente a arquitectura monolítica

En el campo de desarrollo de software actual, existen principalmente dos estilos de arquitectura de sistema, es decir, la "arquitectura de microservicios" emergente y la "arquitectura monolítica" tradicional.

La arquitectura monolítica es el tipo más clásico de arquitectura de software en la industria antes del surgimiento de la arquitectura de microservicios, y muchos de los primeros proyectos también adoptaron la arquitectura monolítica. La arquitectura monolítica escribe toda la lógica empresarial de la aplicación en el mismo proyecto y, finalmente, la compila, la empaqueta y la implementa para que se ejecute en un servidor.

En la etapa inicial del proyecto, la arquitectura monolítica tiene ventajas obvias en términos de velocidad de desarrollo y dificultad de operación y mantenimiento. Sin embargo, con la mejora continua de la complejidad empresarial, han ido surgiendo paulatinamente muchas desventajas de la arquitectura monolítica, principalmente en los siguientes tres aspectos:

  • Con el aumento de la complejidad del negocio, el volumen de código de las aplicaciones monolíticas (aplicaciones que adoptan una arquitectura monolítica) también está aumentando, lo que resulta en una disminución de la legibilidad, el mantenimiento y la escalabilidad del código.
  • Con más y más usuarios, la concurrencia del programa es cada vez mayor, mientras que la capacidad de una sola aplicación para manejar una alta concurrencia es limitada.
  • Las aplicaciones monolíticas concentran todos los servicios en el mismo proyecto, y la modificación o adición de servicios puede tener cierto impacto en otros servicios, lo que aumenta la dificultad de las pruebas.

Debido a estas desventajas de la arquitectura monolítica, muchas empresas y organizaciones han comenzado a transformar sus proyectos de la arquitectura monolítica a la arquitectura de microservicios.

Comparemos la diferencia entre la arquitectura de microservicios y la arquitectura monolítica.

diferencia arquitectura de microservicios arquitectura monolítica
tamaño del equipo La arquitectura de microservicios puede dividir una sola aplicación en el modo tradicional en múltiples servicios independientes, y cada microservicio puede desarrollarse, implementarse y mantenerse de forma independiente. El tamaño del equipo requerido para cada servicio desde el diseño, el desarrollo hasta el mantenimiento es pequeño y el costo de administración del equipo es pequeño. Las aplicaciones con una arquitectura monolítica generalmente requieren un gran equipo para trabajar en una aplicación enorme, y el costo de la administración del equipo es alto.
método de almacenamiento de datos Diferentes microservicios pueden usar diferentes métodos de almacenamiento de datos, por ejemplo, algunos usan Redis y otros usan MySQL. Todos los módulos de una sola arquitectura comparten la misma base de datos pública y el método de almacenamiento es relativamente único.
Método de implementación Cada servicio en una arquitectura de microservicio se puede implementar y escalar independientemente de otros servicios. Cuando se implementa correctamente, una arquitectura basada en microservicios puede ayudar a las empresas a implementar aplicaciones de manera más eficiente. Cada cambio de función o corrección de errores en una aplicación monolítica requiere una nueva implementación de toda la aplicación.
modo de desarrollo En un programa de aplicación que utiliza la arquitectura de microservicios, se pueden desarrollar diferentes módulos utilizando diferentes tecnologías o lenguajes, y el modelo de desarrollo es más flexible. En una aplicación monolítica, todos los módulos deben usar la misma tecnología y lenguaje, y el modelo de desarrollo es limitado.
aislamiento de fallos En la arquitectura de microservicios, las fallas se aíslan en un solo servicio, evitando el colapso general del sistema. En una arquitectura monolítica, cuando falla un componente, es probable que la falla se propague a través del proceso, haciendo que el sistema no esté disponible globalmente.
estructura del proyecto La arquitectura de microservicios divide una sola aplicación en varios servicios pequeños independientes, cada uno de los cuales se puede desarrollar, implementar y mantener de forma independiente, y cada uno de los cuales puede cumplir con un requisito comercial específico. Para aplicaciones de arquitectura única, toda la lógica empresarial se concentra en el mismo proyecto.

Características de los Microservicios

Los microservicios tienen las siguientes características:

  • Los servicios se dividen según el negocio. Cada servicio generalmente solo se enfoca en un negocio específico, requiere una pequeña cantidad de código, es de baja complejidad y es fácil de mantener.
  • Cada microservicio se puede desarrollar, implementar y ejecutar de forma independiente con menos código, por lo que se inicia y ejecuta más rápido.
  • El equipo necesario para cada servicio, desde el diseño, el desarrollo, las pruebas hasta el mantenimiento, es pequeño, generalmente de 8 a 10 personas, y el costo de administración del equipo es pequeño.
  • Siempre que haya alguna modificación en la aplicación con una arquitectura monolítica, toda la aplicación debe volver a implementarse para que surta efecto, y los microservicios resuelven perfectamente este problema. En la arquitectura de microservicios, después de modificar un microservicio, solo es necesario volver a implementar el servicio en lugar de la aplicación completa.
  • En la arquitectura de microservicios, los desarrolladores pueden elegir razonablemente lenguajes y herramientas para el desarrollo y la implementación en función de las características del negocio del proyecto y del equipo.Diferentes microservicios pueden usar diferentes lenguajes y herramientas.
  • Los microservicios tienen buena escalabilidad. A medida que el negocio continúa aumentando, el volumen y el volumen de código de los microservicios se expandirá dramáticamente. En este momento, podemos dividir los microservicios nuevamente de acuerdo con el negocio; además, cuando aumenta la cantidad de usuarios y la concurrencia, también podemos implementar microservicios. en clústeres para aumentar la capacidad de carga del sistema.
  • Los microservicios se pueden usar junto con contenedores (Docker) para lograr una iteración rápida, una construcción rápida y una implementación rápida.
  • Los microservicios tienen buenas capacidades de aislamiento de fallas.Cuando falla un microservicio en la aplicación, la falla se aislará en el servicio actual sin afectar a otros microservicios y hacer que todo el sistema falle.
  • El sistema de microservicio tiene la capacidad de rastrear enlaces.

Marco de microservicios

La arquitectura de microservicios es una idea y un estilo de arquitectura de sistema. Si realmente desea construir un sistema de microservicios, necesita el soporte de un marco de microservicios. Con la popularidad de los microservicios, muchos lenguajes de programación han lanzado sus marcos de microservicios uno tras otro. Vamos a enumerarlos brevemente a continuación.

Marco de microservicios de Java

Existen principalmente cinco tipos de marcos de microservicios de Java en el mercado:

  • Spring Cloud: Puede construir servicios basados ​​en servicios REST y ayudar a los arquitectos a construir una cadena ecológica completa de tecnología de microservicios.
  • Dropwizard: para desarrollar servicios web tranquilos y de alto rendimiento, proporciona soporte listo para usar para configuración, métricas de aplicaciones, registro y herramientas operativas.
  • Restlet: este marco sigue el estilo arquitectónico RST y ayuda a los desarrolladores de Java a crear microservicios.
  • Spark: uno de los mejores marcos de microservicios de Java que admite la creación de aplicaciones de arquitectura de microservicios a través de Java 8 y Kotlin.
  • Dubbo: un marco de gobernanza de servicios distribuidos de código abierto de Alibaba.

Cuadro de microservicio Go language

Hay menos marcos de microservicios en el lenguaje Go y se usa más GoMicro. Es un marco RPC con funciones como balanceo de carga, descubrimiento de servicios, comunicación síncrona, comunicación asíncrona y codificación de mensajes.

Marco de microservicio de Phyton

Los marcos de microservicios en Phyton incluyen principalmente Flask, Falcon, Bottle, Nameko y CherryPy. 

Marco de microservicios de NodeJS

Molecular es una arquitectura basada en eventos creada con NodeJS. El marco tiene componentes integrados como el registro de servicios, el descubrimiento dinámico de servicios, el equilibrio de carga, la tolerancia a fallas y el almacenamiento en caché integrado. 

SpringCloud+RabbitMQ+Docker+Redis+Search+Distribuido, curso detallado de la pila de tecnología de microservicios springcloud

Supongo que te gusta

Origin blog.csdn.net/Itmastergo/article/details/131931839
Recomendado
Clasificación