- Benefícios de usar o Eureka como um registro de serviço e cliente - Como incluir o Eureka nas dependências do seu projeto H2: Como baixar e instalar o arquivo Jar spring-cloud-starter-netflix-eureka-client - Como usar Maven ou Gradle para baixar o arquivo jar do Repositório Central Maven - Como configurar o arquivo application.properties ou application.yml para ativar o cliente Eureka - Como anotar a classe principal do aplicativo com @EnableEurekaClient H2: Como registrar e descobrir serviços com o Eureka Client - Como criar um serviço REST simples que se registra no servidor Eureka - Como criar um aplicativo da web que consome o serviço REST usando o cliente Spring Cloud Netflix Feign - Como usar o painel Eureka para visualizar os serviços cadastrados e seus status H2: Como lidar com falhas e balanceamento de carga com o Eureka Client - Como usar o modo de autopreservação e o mecanismo de pulsação do Eureka para detectar e remover serviços com falha - Como usar Ribbon ou LoadBalancerClient para implementar o balanceamento de carga do lado do cliente entre os serviços disponíveis - Como usar Hystrix ou Resilience4j para implementar padrão de disjuntor e lógica de fallback H2: Conclusão e Recursos Adicionais - Resumo dos principais pontos e benefícios do uso do arquivo jar spring-cloud-starter-netflix-eureka-client - Links para documentação oficial, tutoriais e exemplos para mais informações e aprendizado Tabela 2: Artigo com formatação HTML O que é o Spring Cloud Netflix Eureka e por que você precisa dele
Se você estiver desenvolvendo microsserviços com Spring Boot e Spring Cloud, talvez já tenha ouvido falar do Spring Cloud Netflix Eureka. Mas o que é e por que você precisa disso?
Eureka é uma solução de descoberta de serviços que permite que os serviços se registrem e descubram outros serviços por meio de um servidor central.A descoberta de serviço é um componente essencial de uma arquitetura de microsserviço, pois permite que os serviços se comuniquem entre si sem codificar suas localizações.
spring-cloud-starter-netflix-eureka-client jar download
Alguns dos benefícios de usar o Eureka como um registro de serviço e cliente são:
Simplifica a configuração da rede e reduz o acoplamento entre os serviços.
Ele fornece alta disponibilidade e tolerância a falhas, replicando o registro em vários nós.
Ele suporta dimensionamento dinâmico e balanceamento de carga atualizando o registro sempre que uma instância de serviço é adicionada ou removida.
Ele se integra bem com outros projetos Spring Cloud, como Feign, Ribbon, Hystrix e Zuul.
Para usar o Eureka em seu projeto, você precisa incluir o arquivo jar spring-cloud-starter-netflix-eureka-client em suas dependências. Este arquivo jar contém todas as classes e anotações necessárias para ativar a funcionalidade do cliente Eureka em seu aplicativo.
Como baixar e instalar o arquivo Jar spring-cloud-starter-netflix-eureka-client
A maneira mais fácil de baixar e instalar o arquivo jar spring-cloud-starter-netflix-eureka-client é usar Maven ou Gradle como sua ferramenta de compilação. Você pode encontrar a versão mais recente do arquivo jar no Maven Central Repository:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>3.0.4</version> </dependency>
Se você estiver usando o Gradle, poderá adicionar a seguinte dependência:
implementação 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:3.0.4'
Depois de adicionar a dependência, você precisa configurar algumas propriedades em seu arquivo application.properties ou application.yml. A propriedade mais importante é eureka.client.serviceUrl.defaultZone, que especifica a URL do servidor Eureka com o qual seu cliente se registrará. Por exemplo:
eureka.client.serviceUrl.defaultZone=
Você também pode personalizar outras propriedades, como eureka.client.instanceId, eureka.client.registerWithEureka, eureka.client.fetchRegistry, eureka.client.healthcheck.enabled, etc. Você pode encontrar mais detalhes sobre essas propriedades na documentação oficial. A última etapa para ativar o cliente Eureka em seu aplicativo é anotar a classe principal do aplicativo com @EnableEurekaClient. Essa anotação verificará automaticamente a configuração do cliente Eureka e registrará seu aplicativo no servidor Eureka. Por exemplo:
@SpringBootApplication @EnableEurekaClient public class MyServiceApplication public static void main(String[] args) SpringApplication.run(MyServiceApplication.class, args);
É isso! Você baixou e instalou com sucesso o arquivo jar spring-cloud-starter-netflix-eureka-client e configurou seu aplicativo para usar o cliente Eureka.
Como registrar e descobrir serviços com o Eureka Client
Agora que habilitou o cliente Eureka em seu aplicativo, você pode começar a criar e consumir microsserviços com o Eureka. Nesta seção, mostraremos como criar um serviço REST simples que se registra no servidor Eureka e como criar um aplicativo da Web que consome o serviço REST usando o cliente Spring Cloud Netflix Feign.
Como criar um serviço REST simples com o cliente Eureka
Para criar um serviço REST simples com o cliente Eureka, você precisa executar as seguintes etapas:
Crie um novo projeto Spring Boot com as dependências spring-cloud-starter-netflix-eureka-client e spring-boot-starter-web.
Configure o arquivo application.properties ou application.yml com a URL do servidor Eureka e o nome do serviço. Por exemplo:
spring.application.name=meu-serviço eureka.client.serviceUrl.defaultZone=
Anote a classe principal do aplicativo com @EnableEurekaClient e @RestController.
Crie um terminal REST simples que retorne uma mensagem de saudação. Por exemplo:
@GetMapping("/olá") public String olá(@RequestParam(value = "nome", defaultValue = "Mundo") String nome) return String.format("Olá %s!", nome);
Execute o aplicativo e verifique o painel do Eureka em deve ver seu serviço registrado sob o nome "MY-SERVICE".
Como consumir um serviço REST com cliente Feign
Para consumir um serviço REST com o cliente Feign, você precisa seguir os seguintes passos:
Crie um novo projeto Spring Boot com as dependências spring-cloud-starter-netflix-eureka-client e spring-cloud-starter-openfeign.
Configure o arquivo application.properties ou application.yml com a URL do servidor Eureka e o nome do aplicativo da web. Por exemplo:
spring.application.name=my-web eureka.client.serviceUrl.defaultZone=
Anote a classe principal do aplicativo com @EnableEurekaClient e @EnableFeignClients.
Crie uma interface de cliente Feign que mapeie para o terminal de serviço REST. Anote a interface com @FeignClient e especifique o nome do serviço. Por exemplo:
@FeignClient("my-service") public interface MyServiceClient @GetMapping("/hello") String hello(@RequestParam(value = "name", defaultValue = "World") String name);
Injete a interface do cliente Feign em uma classe de controlador e use-a para chamar o serviço REST. Por exemplo:
@Controller public class MyWebController @Autowired private MyServiceClient myServiceClient; @GetMapping("/") public String index(Model model) String message = myServiceClient.hello("Feign"); model.addAttribute("mensagem", mensagem); retornar "índice";
Crie um modelo HTML simples que exiba a mensagem do serviço REST. Por exemplo:
<html> <head> <title>My Web</title> </head> <body> <h1>$message</h1> </body> </html> Execute o aplicativo da Web e visite Você deve ver uma mensagem de saudação do serviço REST, como "Hello Feign!".
Parabéns! Você criou e consumiu com sucesso um serviço REST com o cliente Eureka e o cliente Feign.
Como lidar com falhas e balanceamento de carga com o Eureka Client
Uma das vantagens de usar o cliente Eureka é que ele pode lidar com falhas e balanceamento de carga entre os serviços cadastrados.Nesta seção, mostraremos como usar o modo de autopreservação e o mecanismo de heartbeat do Eureka para detectar e remover serviços com falha e como usar Ribbon ou LoadBalancerClient para implementar o balanceamento de carga do lado do cliente. Também mostraremos como usar Hystrix ou Resilience4j para implementar o padrão do disjuntor e a lógica de fallback.
Como usar o modo de autopreservação e o mecanismo de pulsação do Eureka
O modo de autopreservação do Eureka é um recurso que impede que o registro exclua muitos serviços quando há uma partição de rede ou uma falha em grande escala. Quando o Eureka detecta que o número de renovações (pulsações) dos serviços cai abaixo de um determinado limite, ele para de expirar todas as instâncias de serviço até que a situação seja resolvida. Dessa forma, ele pode preservar os serviços disponíveis e evitar falhas em cascata.
O mecanismo de pulsação do Eureka é uma forma de os serviços enviarem sinais periódicos ao servidor Eureka para indicar que estão ativos e íntegros. Por padrão, os serviços enviam uma pulsação a cada 30 segundos e o servidor Eureka espera uma pulsação a cada 90 segundos. Se o servidor Eureka não receber uma pulsação de um serviço dentro do tempo esperado, ele marcará o serviço como inativo e, eventualmente, o removerá do registro.
Para usar o modo de autopreservação e o mecanismo de pulsação do Eureka, é necessário configurar algumas propriedades em seu arquivo application.properties ou application.yml. As propriedades mais importantes são eureka.server.enableSelfPreservation, eureka.server.renewalPercentThreshold, eureka.instance.leaseRenewalIntervalInSeconds e eureka.instance.leaseExpirationDurationInSeconds. Você pode encontrar mais detalhes sobre essas propriedades na documentação oficial.
Como usar a faixa de opções ou LoadBalancerClient para balanceamento de carga do lado do cliente
Ribbon é um balanceador de carga do lado do cliente que funciona com o cliente Eureka para distribuir as solicitações entre as instâncias de serviço disponíveis.A faixa de opções pode usar diferentes estratégias de balanceamento de carga, como round robin, tempo de resposta ponderado, reconhecimento de zona, etc. A faixa de opções também pode repetir solicitações com falha e armazenar em cache as instâncias de serviço para melhor desempenho.
LoadBalancerClient é uma abstração que fornece uma API simples para balanceamento de carga com o cliente Eureka. Ele pode usar Ribbon ou outras implementações sob o capô. LoadBalancerClient também pode se integrar com RestTemplate ou WebClient para fazer solicitações HTTP com balanceamento de carga.
Para usar a faixa de opções ou LoadBalancerClient para balanceamento de carga do lado do cliente, você precisa executar as seguintes etapas:
Adicione a dependência spring-cloud-starter-netflix-ribbon ao seu projeto.
Opcionalmente, configure algumas propriedades em seu arquivo application.properties ou application.yml para customizar o comportamento de balanceamento de carga. Por exemplo:
ribbon.eureka.enabled=true ribbon.ServerListRefreshInterval=1000 ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.WeightedResponseTimeRule
Use um dos seguintes métodos para fazer solicitações HTTP com balanceamento de carga:
Use a anotação @LoadBalanced em um bean RestTemplate ou WebClient e injete-o em sua classe de controlador. Por exemplo:
@Bean @LoadBalanced public RestTemplate restTemplate() return new RestTemplate(); @Controller public class MyWebController @Autowired private RestTemplate restTemplate; @GetMapping("/") public String index(Model model) String message = restTemplate.getForObject(" String.class); model.addAttribute("mensagem", mensagem); retornar "índice";
Use a interface LoadBalancerClient e injete-a em sua classe de controlador. Por exemplo:
@Controller public class MyWebController @Autowired private LoadBalancerClient loadBalancerClient; @GetMapping("/") public String index(Model model) ServiceInstance instance = loadBalancerClient.choose("my-service"); String message = new RestTemplate().getForObject(instance.getUri() + "/hello?name=LoadBalancer", String.class); model.addAttribute("mensagem", mensagem); retornar "índice"; Como usar Hystrix ou Resilience4j para padrão de disjuntor e lógica de fallback
Hystrix e Resilience4j são bibliotecas que implementam o padrão do disjuntor e a lógica de fallback para microsserviços. O padrão do disjuntor é uma forma de evitar falhas em cascata monitorando as falhas de um serviço e abrindo ou fechando o circuito (fluxo de solicitação) de acordo. A lógica de fallback é uma maneira de fornecer uma resposta ou comportamento padrão quando um serviço está indisponível ou falha.
Para usar Hystrix ou Resilience4j para padrão de disjuntor e lógica de fallback, você precisa executar as seguintes etapas:
Adicione a dependência spring-cloud-starter-netflix-hystrix ou spring-cloud-starter-circuitbreaker-resilience4j ao seu projeto.
Anote a classe principal do aplicativo com @EnableCircuitBreaker ou @EnableResilience4j.
Anote a interface do cliente Feign ou a classe do controlador com @HystrixCommand ou @CircuitBreaker e especifique o método de fallback. Por exemplo:
@FeignClient("my-service") public interface MyServiceClient @GetMapping("/hello") @HystrixCommand(fallbackMethod = "helloFallback") String hello(@RequestParam(value = "name", defaultValue = "World") String name ); padrão String helloFallback(String name) return "Olá Fallback!";
Execute o aplicativo e teste o disjuntor e a lógica de fallback parando ou reiniciando o serviço REST.
É isso! Você usou com sucesso Hystrix ou Resilience4j para padrão de disjuntor e lógica de fallback.
Conclusão e outros recursos
Neste artigo, aprendemos como baixar e instalar o arquivo jar spring-cloud-starter-netflix-eureka-client e como usá-lo para registrar e descobrir serviços com o cliente Eureka. Também aprendemos como lidar com falhas e balanceamento de carga com o cliente Eureka usando Ribbon, LoadBalancerClient, Hystrix e Resilience4j.
Alguns dos benefícios de usar o arquivo jar spring-cloud-starter-netflix-eureka-client são:
Simplifica a configuração da rede e reduz o acoplamento entre os serviços.
Ele fornece alta disponibilidade e tolerância a falhas, replicando o registro em vários nós.
Ele suporta dimensionamento dinâmico e balanceamento de carga atualizando o registro sempre que uma instância de serviço é adicionada ou removida.
Ele se integra bem com outros projetos Spring Cloud, como Feign, Ribbon, Hystrix e Zuul.
Se você quiser saber mais sobre o arquivo jar spring-cloud-starter-netflix-eureka-client e tópicos relacionados, verifique os seguintes recursos:
perguntas frequentes
Aqui estão algumas perguntas frequentes sobre o arquivo jar spring-cloud-starter-netflix-eureka-client:
P: Qual é a diferença entre o servidor Eureka e o cliente Eureka?
R: O servidor Eureka é um registro de serviço que mantém uma lista de instâncias de serviço disponíveis. O cliente Eureka é um aplicativo que se registra no servidor Eureka e descobre outros serviços por meio dele.
P: Como posso executar várias instâncias do servidor Eureka?
R: Você pode executar várias instâncias do servidor Eureka configurando-as como pares. Você precisa definir eureka.client.registerWithEureka e eureka.client.fetchRegistry como true e especificar a lista de URLs pares em eureka.client.serviceUrl.defaultZone. Por exemplo:
eureka.client.registerWithEureka=true eureka.client.fetchRegistry=true eureka.client.serviceUrl.defaultZone=
P: Como posso proteger meu servidor e cliente Eureka?
R: Você pode proteger seu servidor e cliente Eureka usando Spring Security ou Spring Cloud Security. Você precisa incluir a dependência spring-boot-starter-security ou spring-cloud-starter-security em seu projeto e configurar as propriedades de segurança em seu arquivo application.properties ou application.yml. Por exemplo:
spring.security.user.name=admin spring.security.user.password=secret eureka.client.serviceUrl.defaultZone=
Você também pode usar HTTPS, OAuth2 ou JWT para proteger seu servidor e cliente Eureka. Você pode encontrar mais detalhes sobre essas opções na documentação oficial.
P: Como posso monitorar e solucionar problemas do meu servidor e cliente Eureka?
R: Você pode monitorar e solucionar problemas do seu servidor e cliente Eureka usando o painel Eureka, Spring Boot Actuator ou Spring Cloud Netflix Turbine. O painel Eureka é uma interface da web que mostra os serviços registrados e seu status. Você pode acessá-lo em por padrão. O Spring Boot Actuator é um conjunto de endpoints que fornecem informações sobre integridade, métricas e configuração de seu aplicativo. Você pode ativá-lo adicionando a dependência spring-boot-starter-actuator ao seu projeto e configurar as propriedades do atuador em seu arquivo application.properties ou application.yml. Por exemplo:
management.endpoints.web.exposure.include=* management.endpoint.health.show-details=sempre eureka.instance.statusPageUrl= eureka.instance.healthCheckUrl= :8080/atuador/saúde
O Spring Cloud Netflix Turbine é uma ferramenta que agrega as métricas Hystrix de vários serviços e as exibe em um único painel. Você pode usá-lo para monitorar o status do disjuntor e o desempenho de seus serviços.Você pode ativá-lo adicionando a dependência spring-cloud-starter-netflix-turbine ao seu projeto e configurar as propriedades da turbina em seu arquivo application.properties ou application.yml. Por exemplo:
turbina.appConfig=meu-serviço,minha-web turbina.clusterNameExpression='padrão'
P: Como posso migrar do Eureka para outras soluções de descoberta de serviços?
R: Se você deseja migrar do Eureka para outras soluções de descoberta de serviço, como Consul, ZooKeeper ou Kubernetes, pode usar a abstração Spring Cloud DiscoveryClient. DiscoveryClient é uma interface que fornece uma API comum para registro e descoberta de serviços em diferentes implementações. Você pode usá-lo para desacoplar seu código de classes e anotações específicas do Eureka e alternar para outras dependências sem alterar muito do seu código. Por exemplo:
@Autowired private DiscoveryClient discoveryClient; lista pública getServices() return discoveryClient.getServices(); lista pública getInstances(String serviceId) return discoveryClient.getInstances(serviceId);
Você pode encontrar mais detalhes sobre o DiscoveryClient e suas implementações suportadas na documentação oficial.
P: Onde posso encontrar mais exemplos e tutoriais sobre o arquivo jar spring-cloud-starter-netflix-eureka-client?
R: Você pode encontrar mais exemplos e tutoriais sobre o arquivo jar spring-cloud-starter-netflix-eureka-client nos seguintes sites:
0517a86e26
Opmerkingen