Menu

Microservicio utilizando Spring Cloud, Eureka y Zuul

Spring Framework proporciona un conjunto de bibliotecas para crear microservicios en Java. Son parte del proyecto Spring Cloud. Hoy les mostraré cómo crear microservicios simples utilizando Spring Boot y las siguientes tecnologías:

  • Zuul : servicio de puerta de enlace que proporciona enrutamiento dinámico, monitoreo, resiliencia, seguridad y más
  • Cinta – balanceador de carga del lado del cliente
  • Feign – cliente declarativo REST
  • Eureka – registro de servicio y descubrimiento
  • Sleuth – seguimiento distribuido a través de registros
  • Zipkin – sistema de rastreo distribuido con visualización de solicitud.

 

Este es el controlador de cuenta de servicio. Usamos el método findByCustomer para recopilar cuentas de clientes por su ID.

Para poder usar el cliente Feign solo tenemos que habilitarlo en nuestra clase principal.

También hay una configuración importante dentro de application.yml en el servicio al cliente. El equilibrador de carga de la cinta debe estar habilitado y también sugiero establecer la cancelación y caducidad del arrendamiento en el cliente Eureka para habilitar la cancelación del registro del servicio de descubrimiento cuando nuestro servicio se está cerrando.

Está bien. Tenemos nuestros dos microservicios implementados y configurados. Pero primero tenemos que crear y ejecutar un servicio de descubrimiento basado en el servidor Eureka. Esta funcionalidad es proporcionada por nuestro servicio de descubrimiento. Solo tenemos que importar una dependencia en nuestro pom.xml llamada spring-cloud-starter-eureka-server y habilitarla en la clase principal de la aplicación usando la anotación @EnableEurekaServer. Aquí está la configuración del servidor Eureka en el archivo application.yml:

Después de ejecutar el servicio de descubrimiento, vemos su consola de monitoreo disponible en el puerto 8761 . Y ahora ejecutemos nuestros dos microservicios en los puertos predeterminados establecidos en su archivo de configuración application.yml y más dos instancias de ellos en otros puertos utilizando el  argumento -DPORT VM , por ejemplo, servicio de cuentas en el puerto 2223 y servicio al cliente en el puerto 3334. Ahora echamos un vistazo a la consola de monitoreo Eureka: tenemos dos instancias de servicio de cuentas que se ejecutan en 2222 , 2223 puertos y dos instancias de servicio al cliente que se ejecutan en 3333 , 3334 puertos.

Tenemos dos instancias de cada microservicio registrado en el servidor de descubrimiento. Pero necesitamos ocultar la complejidad de nuestro sistema al mundo exterior. Solo debe haber una dirección IP expuesta en un puerto disponible para los clientes entrantes. Es por eso que necesitamos la puerta de enlace API – Zuul. Zuul reenviará nuestra solicitud al microservicio específico en función de su configuración de proxy. Dicha solicitud también serán saldos de carga por cliente de cinta. Para habilitar la dependencia Zuul gateway, spring-cloud-starter-zuul debe agregarse dentro de pom.xml y la anotación @EnableZuulProxy en la clase principal. Esta es la configuración de Zuul para nuestros servicios establecidos en application.yml.

Como vemos, Zuul está configurado para estar disponible bajo su puerto predeterminado 8765 y reenvía las solicitudes de / api / account / path al servicio de cuentas y de / api / customer / al servicio de atención al cliente. Cuando la URL http: // localhost: 8765 / api / customer / clients / 1 es llamada varias veces, veremos su carga equilibrada entre dos instancias de cada microservicio. Además, cuando cerramos una de las instancias de microservicio, podemos ver que no está registrada en el servidor Eureka.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *