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.