Microservicios con Spring Boot. Parte 4. Uso de la cinta para equilibrar la carga

Esta es la parte 4 de la serie de arquitectura de microservicios, en la que nos centraremos en usar Ribbon para el equilibrio de carga.

Este artículo es parte de la serie Spring Boot Microservices:


En esta serie de artículos, se familiarizará con el concepto de microservicios y aprenderá a crear microservicios utilizando Spring Boot y Spring Cloud.

Esta guía lo ayudará a aprender los conceptos básicos de las arquitecturas de microservicios. También comenzaremos a ver la implementación básica de microservicios con Spring Boot.

Crearemos un par de microservicios y haremos que se comuniquen entre sí utilizando los servidores de nombres Eureka (Eureka Naming Server) y Ribbon para equilibrar la carga en el lado del cliente.

En este tutorial, continuaremos la historia de cómo usar Ribbon como balanceador de carga en un proyecto de microservicio Spring Boot.

Aprenderás:


  • ¿Qué se necesita para equilibrar la carga?
  • ¿Qué es la cinta?
  • ¿Cómo agregar Ribbon a un proyecto Spring Boot?
  • ¿Cómo habilitar y configurar la cinta de opciones para el equilibrio de carga?

Descripción general del microservicio


En las dos partes anteriores, creamos microservicios y establecimos una conexión entre ellos.

GET to http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/10000 

 { id: 10002, from: "EUR", to: "INR", conversionMultiple: 75, quantity: 10000, totalCalculatedAmount: 750000, port: 8000, } 

Cuando lancemos el servicio anterior, verá que la solicitud también se envía al servicio Forex. ¡Esto es asombroso!

Creamos dos microservicios y establecimos una conexión entre ellos.



Sin embargo, codificamos la URL para FS en el componente CCS, CurrencyExchangeServiceProxy.

 @FeignClient(name="forex-service" url="localhost:8000") public interface CurrencyExchangeServiceProxy { @GetMapping("/currency-exchange/from/{from}/to/{to}") public CurrencyConversionBean retrieveExchangeValue (@PathVariable("from") String from, @PathVariable("to") String to); } 

Esto significa que al iniciar nuevas instancias del servicio Forex, no tenemos forma de distribuir la carga en ellas.

En esta parte, ahora habilitemos el equilibrio de carga del lado del cliente con la cinta de opciones.

Necesitarás:


  • Maven 3.0+: tu herramienta de compilación
  • Tu IDE favorito. Usamos Eclipse.
  • JDK 1.8+

Proyecto Ready Maven con muestras de código


El repositorio de Github tiene todos los ejemplos de código.

Encienda la cinta


Agregue una dependencia de Ribbon en pom.xml:

  <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> 

Habilite RibbonClient en CurrencyExchangeServiceProxy:

 @FeignClient(name="forex-service") @RibbonClient(name="forex-service") public interface CurrencyExchangeServiceProxy { 

Configure instancias en application.properties:

 forex-service.ribbon.listOfServers=localhost:8000,localhost:8001 

Inicie el Servicio de Forex en 8001


En el paso anterior, configuramos Ribbon para distribuir la carga entre las instancias. Sin embargo, no tenemos una sola instancia de Servicio de Forex ejecutándose en 8001.

Podemos iniciarlo configurando la configuración de inicio, como se muestra en la figura a continuación:



Cinta en acción


Actualmente contamos con los siguientes servicios:

  • Convertidor de moneda de microservicios (CCS) en 8100
  • Dos instancias de microservicio de Forex en 8000 y 8001

Ahora verá que las solicitudes a CCS se distribuirán entre dos instancias del microservicio de Forex a través de Ribbon.

Solicitud 1


 GET to http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/10000 

Solicitud 2


 GET to http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/10000 

Puede notar que los números de puerto en las dos respuestas son diferentes.

Resumen


Creamos dos microservicios y establecimos una conexión entre ellos.



Usamos Ribbon para distribuir la carga entre dos instancias del servicio Forex.

Sin embargo, codificamos la URL de ambas instancias de FS en CCS. Esto significa que cada vez que aparece una nueva instancia de FS, tendremos que cambiar la configuración de CCS. Esto no es genial.

En la siguiente parte, utilizaremos el servidor de nombres Eureka para resolver este problema.

Source: https://habr.com/ru/post/485608/


All Articles