es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

DiscoveryClient de Spring en entorno local

Suponiendo que tengo dos servicios: customerService y orderService. Ambos son aplicaciones Springboot contenidos en su propio archivo dockerfile.

En producción, deberían ser administrados utilizando Kubernetes. Por lo tanto, podría haber múltiples instancias de cada servicio. Como los servicios deben poder llamarse entre sí a través de REST, quiero usar ServiceDiscovery para obtener la ubicación de una instancia de servicio del otro tipo respectivo (por ejemplo, customerService quiere obtener el host, el puerto, etc. de una instancia de orderService en ejecución).

Quiero lograr esto utilizando un DiscoveryClient inyectado en mis servicios Spring Boot.

Entiendo cómo funciona esto en producción, ya que hay el clúster de Kubernetes con el que DiscoveryClient se comunica.

Pero, ¿cómo funciona esto en un entorno local donde no hay Kubernetes, sino solo Docker en ejecución?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    En un entorno local sin Kubernetes pero con Docker en funcionamiento, aún puedes usar ServiceDiscovery para obtener el destino de una instancia de servicio del otro tipo respectivo ejecutando una herramienta de ServiceDiscovery como Consul, Eureka o Zookeeper en un contenedor junto con tus servicios. Puedes configurar tus servicios para usar esta herramienta de ServiceDiscovery especificando su URL y puerto como variables de entorno en el archivo docker-compose o pasándolos como argumentos de línea de comandos al ejecutar el contenedor. De esta manera, el DiscoveryClient puede comunicarse con la herramienta de ServiceDiscovery para obtener las direcciones de las instancias de servicio.

    Alternativamente, también puedes usar Docker Compose para orquestar tus servicios y simular un entorno similar a Kubernetes. En este caso, puedes definir los servicios en un archivo docker-compose.yml y especificar las dependencias entre ellos. Docker Compose creará automáticamente una red para que los servicios se comuniquen entre sí y les asignará nombres de host únicos en función de su nombre de servicio. Luego puedes usar estos nombres de host en las configuraciones de tus servicios en lugar de direcciones IP.

    En general, mientras Kubernetes ofrece una solución más avanzada y escalable para ServiceDiscovery en entornos de producción, aún puedes lograr funcionalidades similares en un entorno local con las herramientas y configuraciones adecuadas.

Comments are closed.