El mecanismo de descubrimiento de servicios de microservicios es un método para localizar dinámicamente instancias de servicios para la comunicación en una arquitectura de microservicios.
Depende principalmente del centro de registro para implementar el registro de servicios, la consulta y el equilibrio de carga de soporte, mejorando así la escalabilidad y flexibilidad del sistema.
1. Conceptos básicos
El descubrimiento de servicios se refiere al proceso de descubrir e identificar automáticamente los servicios disponibles en un sistema distribuido.
En una arquitectura de microservicios, dado que los servicios se dividen en múltiples servicios pequeños y autónomos que se encuentran dispersos en diferentes servidores, se requiere un mecanismo de descubrimiento de servicios para garantizar una comunicación efectiva entre los servicios.
2. Pasos principales
Registro de servicio:
Cuando se inicia una instancia de microservicio, registrará la información de ubicación de su red (como la dirección IP y el número de puerto) y la identificación del servicio en el centro de registro de servicios.
Este proceso de registro suele ser automático y no requiere intervención humana.
El centro de registro es responsable de mantener la información de registro de todas las instancias de servicio y respaldar el registro dinámico y la cancelación del registro de instancias de servicio.
Consulta de servicio:
Cuando un microservicio necesita llamar a otro microservicio, consulta en el registro de servicios la dirección de red actualmente disponible del servicio requerido.
El centro de registro devuelve la lista de direcciones de las instancias de servicio y la persona que llama puede seleccionar una instancia de servicio para comunicarse de acuerdo con la política de equilibrio de carga.
3. Componentes clave
Registro de servicios:
Es el componente central del mecanismo de descubrimiento de servicios y es responsable de gestionar y almacenar la información de registro de todas las instancias de servicios.
Proporciona interfaces API para que las instancias de servicio registren y cancelen operaciones, y también ayuda a los consumidores de servicios a consultar la información de registro de las instancias de servicio.
Proveedor de servicio:
Es una instancia de microservicio que proporciona un servicio específico.
Registrará su propia información de servicio en el registro de servicios cuando se inicie y cancelará el registro de su propia información de servicio cuando salga.
Consumidor de servicios:
Es una instancia de microservicio que necesita llamar a otros servicios.
Obtiene la dirección de red del servicio requerido consultando el registro del servicio y establece comunicación con él.
4. Cómo implementar el mecanismo de descubrimiento de servicios.
El mecanismo de descubrimiento de servicios se puede dividir en dos tipos: descubrimiento de clientes y descubrimiento de servidores según el método de implementación:
modo de descubrimiento de clientes:
El cliente es responsable de consultar el centro de registro, obtener una lista de servicios disponibles e interactuar directamente con las instancias de servicio de acuerdo con la política de equilibrio de carga.
La ventaja es que el cliente puede formular de manera flexible estrategias de equilibrio de carga, lo que reduce la dependencia del centro de registro de servicios.
La desventaja es que el cliente necesita implementar una lógica de descubrimiento compleja, lo que aumenta la complejidad del código y los costos de mantenimiento.
Modo de descubrimiento de servidor:
El cliente envía una solicitud al servidor (generalmente una puerta de enlace API o un proxy de servicio), y el servidor es responsable de consultar el centro de registro y reenviar la solicitud a la instancia de servicio real.
La ventaja es que simplifica la implementación del cliente y reduce la complejidad del código y los costos de mantenimiento.
La desventaja es que aumenta la latencia del sistema y los puntos de falla, porque todas las solicitudes deben reenviarse a través del servidor.
5. Ventajas del mecanismo de descubrimiento de servicios.
Reducir el acoplamiento entre servicios.:
Los microservicios no necesitan conocer directamente la dirección de red de los demás, solo necesitan comunicarse a través del centro de registro de servicios.
Mejorar la escalabilidad y flexibilidad del sistema:
A medida que los servicios cambian dinámicamente (como expansión, reducción, migración, etc.), el centro de registro de servicios puede actualizar la información de la instancia de servicio en tiempo real para garantizar que la comunicación entre servicios no se vea afectada.
Admite equilibrio de carga y conmutación por error:
El cliente puede obtener la lista de direcciones de múltiples instancias de servicio del centro de registro de servicios y seleccionar una de ellas para la comunicación según la política de equilibrio de carga. Cuando una instancia de servicio no está disponible, el registro de servicio puede marcarla automáticamente como en mal estado y evitar enviarle solicitudes.
6. Herramientas comunes de descubrimiento de servicios
Eureka:
Herramienta de descubrimiento de servicios desarrollada por Netflix, utilizando el modo de descubrimiento de clientes. Es muy liviano y fácil de integrar y usar.
Cónsul:
Herramienta de centro de configuración y descubrimiento de servicios desarrollada por HashiCorp. Proporciona una solución relativamente completa que incluye verificación del estado del servicio y otras funciones, y admite protocolos HTTP y DNS.
Guardián del zoológico:
Apache ZooKeeper es un servicio de coordinación distribuido de código abierto que también se puede utilizar para el descubrimiento de servicios. Proporciona bloqueos distribuidos, servicios de nombres y otras funciones, y admite una variedad de bibliotecas de clientes.
En la arquitectura de microservicios, el mecanismo de descubrimiento de servicios realiza las funciones dinámicas de registro y consulta de instancias de servicio a través del centro de registro, reduciendo el acoplamiento entre servicios y mejorando la escalabilidad y flexibilidad del sistema.