Microsserviços com Spring Boot. Parte 4. Usando a faixa de opções para balanceamento de carga

Esta é a parte 4 da série de arquitetura de microsserviço, na qual focaremos no uso da faixa de opções para o balanceamento de carga.

Este artigo é parte da série Spring Boot Microservices:


Nesta série de artigos, você se familiarizará com o conceito de microsserviços e aprenderá a criar microsserviços usando o Spring Boot e o Spring Cloud.

Este guia o ajudará a aprender o básico de arquiteturas de microsserviço. Também começaremos a analisar a implementação básica de microsserviços com o Spring Boot.

Criaremos um par de microsserviços e os faremos se comunicar usando os servidores de nome Eureka (Eureka Naming Server) e Ribbon para equilibrar a carga no lado do cliente.

Neste tutorial, continuaremos a história de como usar o Ribbon como um balanceador de carga em um projeto de microsserviço do Spring Boot.

Você aprenderá:


  • O que é necessário para o balanceamento de carga?
  • O que é fita?
  • Como adicionar Ribbon a um projeto Spring Boot?
  • Como habilitar e configurar o Ribbon para balanceamento de carga?

Visão geral do microsserviço


Nas duas partes anteriores, criamos microsserviços e estabelecemos uma conexão entre eles.

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, } 

Quando lançarmos o serviço acima, você verá que a solicitação também é enviada ao serviço Forex. Isso é demais!

Criamos dois microsserviços e estabelecemos uma conexão entre eles.



No entanto, codificamos o URL do FS no 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); } 

Isso significa que, ao iniciar novas instâncias do serviço Forex, não temos como distribuir a carga nelas.

Nesta parte, agora vamos ativar o balanceamento de carga no lado do cliente usando a faixa de opções.

Você precisará de:


  • Maven 3.0+ - sua ferramenta de criação
  • Seu IDE favorito. Nós usamos o Eclipse.
  • JDK 1.8+

Projeto Maven pronto com amostras de código


O repositório do Github tem todos os exemplos de código.

Ativar faixa de opções


Adicione uma dependência da faixa de opções no pom.xml:

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

Ative o RibbonClient no CurrencyExchangeServiceProxy:

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

Configure instâncias em application.properties:

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

Inicie o serviço Forex no 8001


Na etapa anterior, configuramos o Ribbon para distribuir a carga entre instâncias. No entanto, não temos uma única instância do Serviço Forex em execução no 8001.

Podemos iniciá-lo, configurando a configuração de inicialização, conforme mostrado na figura abaixo:



Fita em ação


Atualmente, temos os seguintes serviços:

  • Conversor de moeda de microsserviço (CCS) em 8100
  • Duas instâncias do microsserviço Forex nos 8000 e 8001

Agora você verá que as solicitações ao CCS serão distribuídas entre duas instâncias do microsserviço Forex por meio da faixa de opções.

Pedido 1


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

Pedido 2


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

Você pode perceber que os números de porta nas duas respostas são diferentes.

Sumário


Criamos dois microsserviços e estabelecemos uma conexão entre eles.



Usamos o Ribbon para distribuir a carga entre duas instâncias do serviço Forex.

No entanto, codificamos o URL das duas instâncias FS no CCS. Isso significa que sempre que uma nova instância do FS aparecer, precisaremos alterar a configuração do CCS. Isso não é legal.

Na próxima parte, usaremos o Eureka Naming Server para resolver esse problema.

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


All Articles