Capa do Ebook gratuito Desenvolvimento de Microservices com Spring Boot

Desenvolvimento de Microservices com Spring Boot

Novo curso

24 páginas

Circuit Breaker com Spring Cloud Hystrix

Capítulo 16

Tempo estimado de leitura: 6 minutos

Audio Icon

Ouça em áudio

0:00 / 0:00

Em um ambiente de microservices, onde várias aplicações e serviços interagem entre si, a resiliência é um aspecto crítico para garantir que o sistema como um todo continue a funcionar mesmo quando partes dele falham. Um dos padrões de design mais efetivos para alcançar a resiliência é o padrão Circuit Breaker, que pode ser implementado utilizando o Spring Cloud Hystrix.

O padrão Circuit Breaker é inspirado no dispositivo elétrico homônimo e é usado para detectar falhas e encapsular a lógica de recuperação. Em um sistema de microservices, o Circuit Breaker monitora chamadas para serviços remotos e, em caso de falha, interrompe as chamadas subsequentes por um período de tempo, permitindo que o sistema se recupere sem ser sobrecarregado por novas requisições falhas.

Princípios de Tolerância a Falhas

Tolerância a falhas é a capacidade de um sistema continuar operando adequadamente na ocorrência de falhas de alguns de seus componentes. Em microservices, isso é particularmente importante, pois a falha de um serviço pode impactar outros serviços que dependem dele. O Circuit Breaker atua como uma proteção, evitando que falhas se propaguem e afetem todo o sistema.

Os principais princípios de tolerância a falhas incluem:

Continue em nosso aplicativo

Você poderá ouvir o audiobook com a tela desligada, ganhar gratuitamente o certificado deste curso e ainda ter acesso a outros 5.000 cursos online gratuitos.

ou continue lendo abaixo...
Download App

Baixar o aplicativo

  • Isolamento: Cada microservice deve ser isolado para que suas falhas não afetem outros serviços. O Circuit Breaker contribui para esse isolamento ao interromper chamadas para um serviço falho.
  • Fallback: Quando um serviço falha, o sistema deve ser capaz de fornecer uma resposta alternativa, conhecida como fallback. Isso pode ser uma resposta padrão ou uma mensagem de erro amigável.
  • Monitoramento: É crucial monitorar as interações entre serviços para detectar falhas rapidamente e tomar medidas corretivas. O Circuit Breaker fornece métricas valiosas sobre o estado das interações entre serviços.

Implementando Circuit Breaker com Spring Cloud Hystrix

Spring Cloud Hystrix é uma biblioteca que facilita a implementação do padrão Circuit Breaker em aplicações Spring Boot. Hystrix fornece uma maneira simples de adicionar tolerância a falhas aos seus serviços, monitorando e controlando o comportamento de chamadas para serviços remotos.

Para começar a usar o Hystrix em sua aplicação Spring Boot, você precisa adicionar a dependência do Hystrix ao seu projeto. Isso pode ser feito adicionando a seguinte linha ao arquivo pom.xml:

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

Após adicionar a dependência, você pode habilitar o Hystrix na sua aplicação usando a anotação @EnableCircuitBreaker em sua classe principal:

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

Com o Hystrix habilitado, você pode usar a anotação @HystrixCommand para definir métodos que devem ser protegidos por um Circuit Breaker. Aqui está um exemplo de como isso pode ser feito:

@Service public class MyService { @HystrixCommand(fallbackMethod = "fallbackMethod") public String callRemoteService() { // Lógica para chamar um serviço remoto return remoteService.call(); } public String fallbackMethod() { return "Serviço indisponível no momento. Por favor, tente novamente mais tarde."; } }

Neste exemplo, o método callRemoteService está protegido por um Circuit Breaker. Se o serviço remoto falhar, o Hystrix chamará o método fallbackMethod, que fornece uma resposta alternativa.

Configurações Avançadas do Hystrix

O Hystrix oferece várias opções de configuração para ajustar o comportamento do Circuit Breaker, incluindo:

  • Timeout: Define o tempo máximo que Hystrix deve esperar por uma resposta antes de considerar a chamada como uma falha.
  • Threshold: Especifica o número mínimo de falhas necessárias para abrir o Circuit Breaker.
  • Sleep Window: Define o tempo que o Circuit Breaker deve permanecer aberto antes de tentar permitir chamadas novamente.

Essas configurações podem ser ajustadas no arquivo de propriedades da sua aplicação, como mostrado abaixo:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000 hystrix.command.default.circuitBreaker.requestVolumeThreshold=10 hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=5000

Essas configurações garantem que o Circuit Breaker seja aberto após 10 falhas consecutivas e permaneça aberto por 5 segundos antes de permitir novas tentativas de chamadas.

Monitoramento e Dashboard do Hystrix

O Hystrix também oferece um dashboard para monitorar o desempenho dos Circuit Breakers em tempo real. Isso permite que você visualize métricas como taxas de falhas, tempos de resposta e o estado atual do Circuit Breaker.

Para configurar o dashboard do Hystrix, você precisa adicionar a dependência do Hystrix Dashboard ao seu projeto:

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency>

Em seguida, habilite o dashboard usando a anotação @EnableHystrixDashboard em sua classe principal:

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

Com o dashboard habilitado, você pode acessá-lo em http://localhost:8080/hystrix para visualizar o estado dos Circuit Breakers em sua aplicação.

Conclusão

O padrão Circuit Breaker é uma técnica poderosa para aumentar a resiliência de sistemas de microservices, e o Spring Cloud Hystrix facilita a implementação desse padrão em aplicações Spring Boot. Ao proteger chamadas para serviços remotos e fornecer fallbacks, o Hystrix ajuda a garantir que seu sistema continue a operar mesmo na presença de falhas. Além disso, as opções de configuração avançadas e o dashboard de monitoramento permitem que você ajuste e monitore o desempenho dos Circuit Breakers de forma eficaz.

Agora responda o exercício sobre o conteúdo:

Qual é o padrão de design usado para garantir a resiliência em sistemas de microservices quando partes dele falham?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

O Padrão Circuit Breaker é usado para detectar falhas e encapsular a lógica de recuperação em sistemas de microservices, prevenindo sobrecarga de requisições falhas ao interromper chamadas subsequentes por um tempo determinado.

Próximo capitúlo

Balanceamento de carga com Spring Cloud LoadBalancer

Arrow Right Icon
Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.
  • Leia este curso no aplicativo para ganhar seu Certificado Digital!
  • Ouça este curso no aplicativo sem precisar ligar a tela do celular;
  • Tenha acesso 100% gratuito a mais de 4000 cursos online, ebooks e áudiobooks;
  • + Centenas de exercícios + Stories Educativos.