La definición y los pros y contras de los microservicios

La definición y los pros y contras de los microservicios

1. ¿Qué es un microservicio?

Hay muchos problemas con la arquitectura monolítica, y la aparición de microservicios es resolver las dificultades que enfrenta la arquitectura monolítica. Por ahora, no existe una definición estricta de microservicios. Martin Fowler define los microservicios de esta manera.

En resumen, el estilo arquitectónico de microservicios [1] es un enfoque para desarrollar una sola aplicación como un conjunto de pequeños servicios, cada uno ejecutándose en su propio proceso y comunicándose con mecanismos ligeros, a menudo una API de recursos HTTP. Estos servicios se basan en las capacidades comerciales y se implementan de forma independiente mediante una maquinaria de implementación totalmente automatizada. Existe un mínimo de administración centralizada de estos servicios, que pueden estar escritos en diferentes lenguajes de programación y utilizar diferentes tecnologías de almacenamiento de datos.

Dirección original: https://martinfowler.com/articles/microservices.html

Traducción: el estilo de arquitectura de microservicio es un método para desarrollar una sola aplicación en un conjunto de pequeños servicios, cada servicio se ejecuta en su propio proceso y la comunicación de servicio a servicio utiliza un mecanismo de comunicación ligero (generalmente recurso HTTP APT). Estos servicios se basan en las capacidades comerciales y se pueden implementar de forma independiente a través de un mecanismo de implementación totalmente automatizado. Estos servicios comparten una mínima gestión centralizada, los servicios se pueden desarrollar en diferentes idiomas y utilizar diferentes tecnologías de almacenamiento de datos.

En segundo lugar, las características de la arquitectura de microservicios

  • Cada microservicio puede ejecutarse de forma independiente en su propio proceso.
  • Una serie de microservicios que operan de forma independiente construyen el sistema completo.
  • Cada servicio es un desarrollo empresarial independiente, y un microservicio solo se enfoca en una función específica, como la gestión de pedidos, la gestión de usuarios, etc.
  • Los microservicios se comunican a través de algunos mecanismos de comunicación ligeros, como las llamadas a través de API RESTful.
  • Se pueden utilizar diferentes idiomas y tecnologías de almacenamiento de datos.
  • Mecanismo de despliegue completamente automático.

Tome el sistema de venta de entradas de películas como ejemplo. La aplicación está estructurada mediante microservicios. El diagrama de arquitectura es el siguiente:
Inserte la descripción de la imagen aquí
La aplicación completa se descompone en varios microservicios. Cada microservicio se ejecuta de forma independiente en su propio proceso y tiene su propia base de datos. Utilice REST u otro protocolos para comunicarse entre ellos.

En tercer lugar, las ventajas de la arquitectura de microservicios

  • Fácil de desarrollar y mantener: un microservicio solo se centrará en una función empresarial específica, por lo que su negocio es claro y la cantidad de código es pequeña. Es relativamente sencillo desarrollar y mantener un solo microservicio. La aplicación completa está construida por varios microservicios, por lo que toda la aplicación permanecerá en un estado controlable.
  • Un solo microservicio comienza más rápido: un solo microservicio tiene una pequeña cantidad de código, por lo que comenzará más rápido.
  • La modificación parcial es fácil de implementar: siempre que se modifique una sola aplicación, se debe volver a implementar toda la aplicación. Los microservicios resuelven este problema. En términos generales, para modificar un microservicio, solo necesita volver a implementar el servicio.
  • Pila de tecnología sin restricciones: en la arquitectura de microservicios, la pila de tecnología se puede seleccionar razonablemente de acuerdo con las características del negocio y el equipo del proyecto. Por ejemplo, algunos servicios pueden usar la base de datos relacional MySQL; algunos servicios tienen requisitos de computación gráfica y se puede usar Neo4j; incluso según sea necesario, los microservicios se pueden implementar usando el desarrollo de Java, y algunos microservicios se pueden desarrollar usando Node.js.
  • Escala bajo demanda: la expansión de grano fino se puede lograr según la demanda. Por ejemplo, si un determinado microservicio en el sistema encuentra un cuello de botella, puede combinar las características comerciales de este microservicio para extraer la memoria, actualizar la CPU o agregar nodos.

En conjunto, las deficiencias de la arquitectura de aplicaciones monolíticas son precisamente las ventajas de los microservicios, y estas ventajas hacen que los microservicios se vean perfectos. Sin embargo, no hay nada perfecto. Echemos un vistazo a los desafíos que enfrentan los microservicios.

Cuarto, ¿cuáles son los desafíos de la arquitectura de microservicios?

  • Mayores requisitos de operación y mantenimiento: más servicios significan más inversión en operación y mantenimiento. En la arquitectura monolítica, solo se debe garantizar el funcionamiento normal de una aplicación. En microservicios, es necesario asegurar el funcionamiento normal y la colaboración de decenas o incluso cientos de servicios, lo que conlleva grandes desafíos de operación y mantenimiento.
  • La complejidad inherente de distribuido: el uso de microservicios para construir un sistema distribuido. Para un sistema distribuido, la tolerancia a fallas del sistema, el retraso de la red, las transacciones distribuidas, etc. traerán enormes desafíos.
  • Los costos de ajuste de la interfaz son altos: los microservicios se comunican a través de interfaces. Si modifica la API de un determinado microservicio, es posible que sea necesario ajustar todos los microservicios que utilizan la interfaz.
  • Trabajo duplicado: muchos servicios pueden usar la misma función, pero esta función no ha alcanzado el nivel de descomposición en un microservicio. En este momento, cada servicio puede desarrollar esta función, lo que conduce a la duplicación de código. Aunque puede usar bibliotecas compartidas para resolver este problema (por ejemplo, puede encapsular esta función en un componente común y los microservicios que necesitan esta función pueden hacer referencia al componente), es posible que la biblioteca compartida no funcione en un entorno multilingüe.

Supongo que te gusta

Origin blog.csdn.net/qq_42647711/article/details/109217672
Recomendado
Clasificación