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.