Seguimos con la tercera entrega de la serie Spring boot, en este caso se trata de hacer la integración de los distintos servicios web con Spring cloud.

MicroS5 spring boot 3.4 1
MicroS5 spring boot 3.4 2

No hemos indicado el host y el puerto del servicio sino el nombre que recibe en Eureka; el API de Spring cloud se encarga de resolver el host y el puerto en cada llamada repartiendo la carga.

Comunicación entre microservicios

Como advertimos, al realizar una implementación de microservicios estos no deben conocerse entre sí para evitar dependencias directas entre ellos.

Aun así, es necesario que puedan comunicarse entre ellos, por ejemplo si queremos que cuando se borre un usuario se eliminen también los productos que tenga ese usuario asociados.

Para ello se hace uso de dos patrones software, el patrón eventBus y el patrón commander. Se realizan los siguientes pasos:

  • El servicio de 'product' registra el comando de borrado en respuesta al evento de borrado de 'user':
MicroS5 spring boot 3.4 3
  • El servicio de 'user' invoca en el bus de eventos al evento de borrado de usuario, como se indica en la imagen:

Ventajas de esta arquitectura

  • Al cambiar el servicio de producto, el servicio de usuario no se ve afectado ya que quien implementa el comando de borrado es el servicio de producto
  • Si se añaden nuevos servicios que dependan de usuario éste no se ve afectado
  • La ejecución del comando se puede realizar de forma asíncrona o programar a una determinada hora en la que haya menos carga de trabajo

Servicio de agregación

Para exponer el API de los microservicios hemos creado un servicio de agregación que se encarga de realizar las llamadas a los microservicios usando balanceo de carga.

De esta forma exponemos un solo servicio y éste se encarga de invocar a Eureka para saber dónde están ubicados los microservicios e invocarlos enviando el resultado al cliente final.

Puede integrar una caché de datos que evite invocar los servicios si no es necesario, e integrar la actualización de dicha caché teniendo en cuenta los eventos de actualización y borrado de datos.

MicroS5 spring boot 3.4 5 b

El resultado de este servicio se puede ver como se ve en la imagen:

MicroS5 spring boot 3.4 6

Con este breve repaso hemos anotado la configuración de los servicios en la nube y sus distintas dependencias. Para terminar esta aproximación a Spring boot, en la siguiente y última entrega analizaremos la automatización de los microservicios mediante contenedores.

Analizamos a fondo Microservicios con Spring Boot en 4 entregas:

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.