Eureka Server - nelsonortfan/MicroDockerSpringBoot GitHub Wiki

Eureka Server

Es un servicio de descubrimiento de microservicios, lo que permite que se puedan comunicar internamente entre ellos. Para ello, se trabaja con la tecnología ofrecida por Spring Cloud denominada Eureka Server. Permite que los servicios se comuniquen con el y permite hacer escalamiento de manera automática sin necesidad de tareas manuales.

En los proyectos se agrega la dependencia de Eureka Server y en la clase principal se habilita para hacer uso, al igual que en el archivo de application.properties.

A diferencia de un Load Balancer, no se deben agregar manualmente mas nodos, ya que este servicio lo hace automaticamente, cumpliendo con estas 3 funcionalidades:

  1. Descubrimiento del Servicio
  2. Registro del servicio
  3. Balanceo de carga (útil para escalamiento con muchos contenedores)

En los microservicios debemos agregar la dependencia del cliente de Eureka y apuntar en las propiedades al Server de Eureka Discovery. Si trabajamos de manera local la propiedad de **preferIpAddress **la dejamos en True para que use la IP local en vez de DNS (solo ambiente local en este caso). También agregamos en las propiedades de cada microservicio información de la App para que en el momento de verla en Eureka podamos saber de que se trata.

Al subir Eureka y tener los servicios registrados, veremos que tenemos la siguiente pantalla:

Servicios Eureka

Open Feign

Esta dependencia permite a los microservicios conectarse entre si mediante peticiones REST. Solo es necesario agregar la dependencia, definir una interfaz mostrando la url a la que se debe conectar e internamente Spring Boot hace lo necesario para comunicarnos. Dado que estamos registrados con Eureka, podemos pasar el nombre del servicio registrado. En este caso para Accounts, en la capa de Service, creamos un folder client y agregamos las interfaces para conectarnos a los otros servicios:

imagen

imagen

Si es el caso, se crean DTOs para manejar las respuestas. La idea es crear una respuesta conjunta desde Accounts para el cliente con una sola petición. Creamos la información en cada uno de los servicios:

Accounts_1

Cards_2

Loans_3

Luego si consultamos el nuevo endpoint creado en Accounts para consultar toda la información conjunta tendremos:

fetch_4

Response_5

Se modifica el archivo docker compose en el perfil default y las configuraciones necesarias en el common-config para poder contenerizar los servicios. Esto se encuentra en la etiqueta V.5.2