En el titular, vimos tres palabras de moda:
- Microservicios
- Netflix Eureka
- Discovery (Registro)
¿Qué es un Microservicio?
En palabras sencillas, los microservicios son grupos de pequeñas aplicaciones que trabajan juntas en coordinación para proporcionar una solución completa.
Cuando decimos un montón de pequeñas aplicaciones que se ejecutan juntas de forma independiente, entonces todas tendrán sus propias URLs y puertos. En ese escenario, sería muy engorroso mantener todos estos microservicios para que se ejecuten de forma sincronizada, y lo que es más importante, con monitorización. Este problema se multiplicará cuando empecemos a implementar balanceadores de carga.
Para solucionar este problema, necesitamos una herramienta que monitorice y mantenga el registro de todos los microservicios del ecosistema.
¿Qué es Netflix Eureka?
Es una herramienta proporcionada por Netflix para dar solución al problema anterior. Consiste en el Servidor Eureka y los clientes Eureka. Eureka Server es en sí mismo un microservicio al que se registran todos los demás microservicios. Los clientes Eureka son los microservicios independientes. Veremos cómo configurar esto en un ecosistema de microservicios.
Voy a utilizar Spring Boot para crear unos cuantos microservicios que actuarán como Eureka Clients y un Discovery Server que será un Eureka Server. Aquí está la estructura completa del proyecto:
Discutimos el Eureka Discovery Server
Este es el Eureka Server, y para ello, tenemos que incluir una dependencia de Eureka en el proyecto. A continuación se muestra el pom.xml para Eureka Discovery Server.
Además, tenemos que actualizar el archivo de propiedades de este proyecto para indicar que es un servidor de descubrimiento y no un cliente.
eureka.instance.hostname=localhosteureka.client.register-with-eureka=falseeureka.client.fetch-registry=false
Para vincular la aplicación de descubrimiento a un puerto específico y nombrar la aplicación, tenemos que añadir lo siguiente, también:
server.port=8000spring.application.name=DiscoveryServer
Una última cosa que hacer es anotar la aplicación Spring Boot para habilitar esto como un servidor Eureka. Para ello, debemos añadir @EnableEurekaServer
.
Al arrancar la aplicación veremos una UI proporcionada por Eureka para listar todos los servidores que se registran. Pero, en este momento, ¡no tenemos ninguno!
Ahora, vamos a añadir unos cuantos microservicios al ecosistema y registrarlos en el servidor de descubrimiento. Para ello, también tenemos que añadir las dependencias necesarias en cada servicio y registrarlas en el servidor. Veremos cómo en los detalles a continuación.
He creado tres microservicios sencillos (microservicio1, microservicio2, microservicio3) con Spring Boot y cada uno corriendo en su propio puerto (8002, 8003 y 8004).
Como cliente, debe registrarse en el servidor, y eso ocurre en el archivo de propiedades, como a continuación.
La aplicación principal se anotará con @EnableEurekaClient
en cada microservicio.
Activa esta aplicación para que se ejecute en el puerto 8004 y se registrará automáticamente en el servidor de descubrimiento. De manera similar, he creado otros dos microservicios y los he registrado en el servidor de descubrimiento.
Podemos ver que tres servidores se están ejecutando en el ecosistema y podemos monitorear el estado de estos servidores, también.
Esto facilita la monitorización de todos los servidores y sus réplicas en caso de que estemos usando un balanceador de carga.
Espero que esto os ayude a empezar a usar Discovery Server y Clients usando Eureka.