Práticas Ideais para Registro e Descoberta de Serviços com Eureka em um Sistema de E-commerce Distribuído usando Spring Cloud

Introdução ao Projeto e ao Papel do Eureka

O projeto xbin-store-cloud representa um sistema de e-commerce B2C distribuído, inspirado em plataformas conhecidas, construído com Spring Cloud. Em arquiteturas de microsserviços, o registro e descoberta de serviços são cruciais. Este sistema utiliza o Eureka como centro de registro, permitindo que os serviços se registrem automaticamente, realizem verificações de saúde e sejam descobertos por consumidores, com suporte a balanceamento de carga.

Por que o Eureka é uma Escolha Adequada?

O Eureka, um componente open-source da Netflix, é ideal para microsserviços devido à sua alta disponibilidade e flexibilidade. No contexto do xbin-store-cloud, ele resolve problemas essenciais como:

  • Registro Automático: Serviços se registram ao iniciar.
  • Verificação de Saúde: Clientes enviam batimentos cardíacos periódicos.
  • Mecanismo de Descoberta: Consumidores obtêm listas de serviços disponíveis por nome.
  • Suporte a Balanceamento: Integrado com o Ribbon para balanceamento de carga do lado do cliente.

Configuração do Servidor Eureka

O servidor Eureka no xbin-store-cloud é implementado de forma concisa. Abaixo, um exemplo de código para ativar o servidor, com alterações nos nomes de pacote e classe para reduzir similaridade:

package com.sistema.registro;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class ServidorRegistroEureka {
    public static void main(String[] args) {
        SpringApplication.run(ServidorRegistroEureka.class, args);
    }
}

As configurações do servidor, como porta e endereço, são definidas em arquivos como application.yml. Um exemplo típico inclui a definição da porta de registro.

Boas Práticas para Registro de Serviços

Todos os microsserviços no projeto devem registrar-se no Eureka. Isso é feito adicionando a anotação @EnableEurekaClient nas classes principais. As configurações do cliente especificam o endereço do servidor Eureka. Exemplo de configuração adaptada:

eureka:
  instancia:
    url-pagina-status: http://localhost:${server.port}/documentacao-api
  cliente:
    urlServico:
      zonaPadrao: ${eureka.urlServico:http://127.0.0.1:8503/eureka/}

Esta configuração define a URL da página de status e o endereço do centro de registro, entre outros parâmetros comportamentais.

Alta Disponibilidade do Eureka

Para ambientes de produção, o xbin-store-cloud emprega clusters do Eureka para evitar pontos únicos de falha. A implantação usa múltiplas instâncias que se registram mutuamente. Exemplo simplificado de configuração com Docker:

servicos:
  registro1:
    imagem: eureka-personalizada:v1
    portas:
      - "8501:8501"
  registro2:
    imagem: eureka-personalizada:v1
    portas:
      - "8502:8502"
  registro3:
    imagem: eureka-personalizada:v1
    portas:
      - "8503:8503"

Isso garante resiliência através da replicação.

Descoberta e Consumo de Serviços

Os consumidores de serviços usam o nome do serviço para obter instâncias do Eureka, combinando com Feign ou Ribbon para chamadas. No projeto, o Feign é amplamente utilizado para comunicação entre serviços. Exemplo de interface Feign modificada:

@FeignClient(value = "servico-itens", fallback = ResilienciaItemServico.class)
public interface ConsultaItemServico {
    // Definições da interface de serviço
}

O balanceamento de carga é configurado via Ribbon, permitindo estratégias como aleatoriedade. Exemplo de configuração:

ribbon:
  classeRegraBalanceadorCarga: com.netflix.loadbalancer.RegraAleatoria

Otimização das Configurações do Eureka

Com base nas experiências do projeto, recomenda-se ajustar parâmetros para melhor desempenho. Exemplos incluem configurar intervalos de renovação de aluguel e desativar a autopreservação em ambientes de desanvolvimento:

eureka:
  instancia:
    intervaloRenovacaoAluguelSegundos: 30
    duracaoExpiracaoAluguelSegundos: 90
  servidor:
    habilitarAutoPreservacao: false
  cliente:
    verificacaoSaude:
      habilitado: true

Esses ajustes ajudam a manter a saúde e a eficiência do sistema de regisrto.

Tags: Spring Cloud eureka microsservicos Docker Compose Feign

Publicado em 7-8 17:33