SlideShare uma empresa Scribd logo
Circuit Breaker
Introdução
Introdução
• Quando desenvolvemos aplicações, geralmente precisamos realizar chamadas a
serviços e aplicações externas
 Ex.: Um sistema de compra de eletrodomésticos que realiza chamadas a serviços de
pagamento e anti-fraude, validando se os dados do cliente são válidos
• Sempre que realizamos chamadas a serviços externos, existe a possibilidade de ocorrer
problemas na rede ou então que o serviço esteja com falhas.
• Sendo assim, se o serviço externo está com falhas, realizar novas tentativas de acesso
ao serviço não irá ajuda-lo a serem recuperados.
• Se soubermos que o problema está com o serviço de fato, pode-se implementar o
padrão Circuit Breaker na aplicação do cliente
Padrão Circuit Breaker
Padrão Circuit Breaker
• Escrito por Michael T. Nygard no
livro Design and Deploy
Production-Ready Software
(2007).
• Previne que a aplicação tente
repetidamente executar uma
operação que provavelmente irá
falhar.
• O padrão também permite que
uma aplicação detecte se a falha
foi resolvida.
Padrão Circuit Breaker
• Circuit Breaker age como um proxy para operações que podem falhar.
• O proxy deve monitorar o número de falhas recentes que ocorreram e usar esta
informação para decidir quando permitir que a operação continue, ou
simplesmente retornar uma exceção.
• O proxy pode ser implementado como uma máquina de estados, que simulam
um circuito (Circuit Breaker).
Máquina de estados Circuit Breaker
Estado 1: Closed
• O proxy mantém a quantidade de falhas recentes, e se
uma chamada a operação ocorre novamente, o proxy
incrementa um contador de falhas.
• Caso a operação ocorra com sucesso, o resultado é
retornado com sucesso.
• Se o número de falhas excedem a quantidade ao
threshold em um certo período, o proxy é
redirecionado para o estado Open.
• Um timer referente a timeout é iniciado neste estado.
Quando este timer expira, o proxy é redirecionado para
o estado Half-Open.
Estado 1I: Open
• Uma requisição da aplicação falha imediatamente e
uma exceção é retornada para a aplicação.
• Se o Timer expira, é redirecionado para o estado Half-
Open.
Estado III: Half-Open
• Estado invocado apenas se um determinado número de
requisições da aplicação foi atingido.
• Se as requisições ocorreram com sucesso, assume-se
que a falha anterior foi fixada e que então o Circuit
Breaker poderá ir para o estado Closed (e o contador é
reiniciado).
• Se as requisições falham, o Circuit Breaker assume que
a falha continua presente e o estado é alterado para
Open, reiniciando o Timer de timeout.
Considerações sobre o padrão Circuit Breaker
Considerações sobre o padrão Circuit Breaker
• Ao implementar o padrão Circuit Breaker, é necessário realizar as seguintes
considerações:
• Tratamento de exceções: O Cirtuit Breaker deve ser capaz de examinar o máximo de
exceções possíveis.
• Logs de erros: Sempre devem ocorrer para que o administrador do sistema possa
verificar o comportamento do mesmo.
• Concorrência: O Circuit Breaker pode ser acessado por um alto número de instâncias
da aplicação simultaneamente. A aplicação não deverá bloquear requisições que sejam
concorrentes.
• Timeouts Inapropriados de Serviços Externos: O Circuit Breaker pode não ser capaz
de proteger aplicações que tenham um timeout específico.
Considerações sobre o padrão Circuit Breaker
• O padrão Circuit Breaker deverá ser utilizado quando:
• Deve-se impedir que a aplicação tente invocar um serviço remoto ou acessar um
recurso compartilhado, caso esta operação provavelmente falhe.
• O padrão Circuit Breaker não deverá ser considerado quando:
• Tenta-se manipular recursos privados de uma aplicação, como por exemplo a estrutura
de dados. Neste caso, o Circuit Breaker irá gerar uma sobrecarga no sistema.
• Como um substituto de manipulador de exceções para tratar lógica de negócio nas
aplicações.
Exemplo Prático

Mais conteúdo relacionado

Semelhante a Circuit Breaker

Sistemas Distribuídos
Sistemas DistribuídosSistemas Distribuídos
Sistemas Distribuídos
Roberto Aragy
 
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorCategorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
Sofia Trindade
 
DB2 Express-C
DB2 Express-CDB2 Express-C
DB2 Express-C
Bruno Dadalt Zambiazi
 
Aula 04 qs - sistemas embarcados
Aula 04   qs - sistemas embarcadosAula 04   qs - sistemas embarcados
Aula 04 qs - sistemas embarcados
Junior Gomes
 
Estudo sistemas operacionais p2
Estudo sistemas operacionais  p2Estudo sistemas operacionais  p2
Estudo sistemas operacionais p2
Gustavo Souza
 
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, DeadlockApresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Williams Gomes da Silva
 
the-hard-road.PDF
the-hard-road.PDFthe-hard-road.PDF
the-hard-road.PDF
VictorFelix44
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Edlaine Zamora
 
Teste de Software - Especialização Univem
Teste de Software - Especialização UnivemTeste de Software - Especialização Univem
Teste de Software - Especialização Univem
André Abe Vicente
 
Introdução aos Testes de Desempenho
Introdução aos Testes de DesempenhoIntrodução aos Testes de Desempenho
Introdução aos Testes de Desempenho
Base2 Tecnologia
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeter
Edlaine Zamora
 
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execuçãoTreinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Beatriz Makiyama Celestino
 
Aula 6 semana
Aula 6 semanaAula 6 semana
Aula 6 semana
Jorge Ávila Miranda
 
ITIL na prática - Gerenciamento de Incidentes, Problemas e Mudanças
ITIL na prática - Gerenciamento de Incidentes, Problemas e MudançasITIL na prática - Gerenciamento de Incidentes, Problemas e Mudanças
ITIL na prática - Gerenciamento de Incidentes, Problemas e Mudanças
Wise Systems
 
Redes industriais a informática aplicada no chão das fábricas
Redes industriais   a informática aplicada no chão das fábricasRedes industriais   a informática aplicada no chão das fábricas
Redes industriais a informática aplicada no chão das fábricas
Wilson Mathias Pereira Florentino
 
[GUTS-RS] Testes de Performance
 [GUTS-RS] Testes de Performance [GUTS-RS] Testes de Performance
[GUTS-RS] Testes de Performance
GUTS-RS
 
Dba Ciclo Palestra P5 V1a
Dba Ciclo Palestra P5 V1aDba Ciclo Palestra P5 V1a
Dba Ciclo Palestra P5 V1a
Leonardo Molinari
 
Serminario itil service_desk
Serminario itil service_deskSerminario itil service_desk
Serminario itil service_desk
RADILSON RIPARDO DE FRETIAS
 
ALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um IncidenteALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um Incidente
Alan Carlos
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiula
Daniel Silveira
 

Semelhante a Circuit Breaker (20)

Sistemas Distribuídos
Sistemas DistribuídosSistemas Distribuídos
Sistemas Distribuídos
 
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorCategorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
 
DB2 Express-C
DB2 Express-CDB2 Express-C
DB2 Express-C
 
Aula 04 qs - sistemas embarcados
Aula 04   qs - sistemas embarcadosAula 04   qs - sistemas embarcados
Aula 04 qs - sistemas embarcados
 
Estudo sistemas operacionais p2
Estudo sistemas operacionais  p2Estudo sistemas operacionais  p2
Estudo sistemas operacionais p2
 
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, DeadlockApresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
 
the-hard-road.PDF
the-hard-road.PDFthe-hard-road.PDF
the-hard-road.PDF
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Teste de Software - Especialização Univem
Teste de Software - Especialização UnivemTeste de Software - Especialização Univem
Teste de Software - Especialização Univem
 
Introdução aos Testes de Desempenho
Introdução aos Testes de DesempenhoIntrodução aos Testes de Desempenho
Introdução aos Testes de Desempenho
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeter
 
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execuçãoTreinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execução
 
Aula 6 semana
Aula 6 semanaAula 6 semana
Aula 6 semana
 
ITIL na prática - Gerenciamento de Incidentes, Problemas e Mudanças
ITIL na prática - Gerenciamento de Incidentes, Problemas e MudançasITIL na prática - Gerenciamento de Incidentes, Problemas e Mudanças
ITIL na prática - Gerenciamento de Incidentes, Problemas e Mudanças
 
Redes industriais a informática aplicada no chão das fábricas
Redes industriais   a informática aplicada no chão das fábricasRedes industriais   a informática aplicada no chão das fábricas
Redes industriais a informática aplicada no chão das fábricas
 
[GUTS-RS] Testes de Performance
 [GUTS-RS] Testes de Performance [GUTS-RS] Testes de Performance
[GUTS-RS] Testes de Performance
 
Dba Ciclo Palestra P5 V1a
Dba Ciclo Palestra P5 V1aDba Ciclo Palestra P5 V1a
Dba Ciclo Palestra P5 V1a
 
Serminario itil service_desk
Serminario itil service_deskSerminario itil service_desk
Serminario itil service_desk
 
ALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um IncidenteALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um Incidente
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiula
 

Último

Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 

Último (8)

Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 

Circuit Breaker

  • 3. Introdução • Quando desenvolvemos aplicações, geralmente precisamos realizar chamadas a serviços e aplicações externas  Ex.: Um sistema de compra de eletrodomésticos que realiza chamadas a serviços de pagamento e anti-fraude, validando se os dados do cliente são válidos • Sempre que realizamos chamadas a serviços externos, existe a possibilidade de ocorrer problemas na rede ou então que o serviço esteja com falhas. • Sendo assim, se o serviço externo está com falhas, realizar novas tentativas de acesso ao serviço não irá ajuda-lo a serem recuperados. • Se soubermos que o problema está com o serviço de fato, pode-se implementar o padrão Circuit Breaker na aplicação do cliente
  • 5. Padrão Circuit Breaker • Escrito por Michael T. Nygard no livro Design and Deploy Production-Ready Software (2007). • Previne que a aplicação tente repetidamente executar uma operação que provavelmente irá falhar. • O padrão também permite que uma aplicação detecte se a falha foi resolvida.
  • 6. Padrão Circuit Breaker • Circuit Breaker age como um proxy para operações que podem falhar. • O proxy deve monitorar o número de falhas recentes que ocorreram e usar esta informação para decidir quando permitir que a operação continue, ou simplesmente retornar uma exceção. • O proxy pode ser implementado como uma máquina de estados, que simulam um circuito (Circuit Breaker).
  • 7. Máquina de estados Circuit Breaker
  • 8. Estado 1: Closed • O proxy mantém a quantidade de falhas recentes, e se uma chamada a operação ocorre novamente, o proxy incrementa um contador de falhas. • Caso a operação ocorra com sucesso, o resultado é retornado com sucesso. • Se o número de falhas excedem a quantidade ao threshold em um certo período, o proxy é redirecionado para o estado Open. • Um timer referente a timeout é iniciado neste estado. Quando este timer expira, o proxy é redirecionado para o estado Half-Open.
  • 9. Estado 1I: Open • Uma requisição da aplicação falha imediatamente e uma exceção é retornada para a aplicação. • Se o Timer expira, é redirecionado para o estado Half- Open.
  • 10. Estado III: Half-Open • Estado invocado apenas se um determinado número de requisições da aplicação foi atingido. • Se as requisições ocorreram com sucesso, assume-se que a falha anterior foi fixada e que então o Circuit Breaker poderá ir para o estado Closed (e o contador é reiniciado). • Se as requisições falham, o Circuit Breaker assume que a falha continua presente e o estado é alterado para Open, reiniciando o Timer de timeout.
  • 11. Considerações sobre o padrão Circuit Breaker
  • 12. Considerações sobre o padrão Circuit Breaker • Ao implementar o padrão Circuit Breaker, é necessário realizar as seguintes considerações: • Tratamento de exceções: O Cirtuit Breaker deve ser capaz de examinar o máximo de exceções possíveis. • Logs de erros: Sempre devem ocorrer para que o administrador do sistema possa verificar o comportamento do mesmo. • Concorrência: O Circuit Breaker pode ser acessado por um alto número de instâncias da aplicação simultaneamente. A aplicação não deverá bloquear requisições que sejam concorrentes. • Timeouts Inapropriados de Serviços Externos: O Circuit Breaker pode não ser capaz de proteger aplicações que tenham um timeout específico.
  • 13. Considerações sobre o padrão Circuit Breaker • O padrão Circuit Breaker deverá ser utilizado quando: • Deve-se impedir que a aplicação tente invocar um serviço remoto ou acessar um recurso compartilhado, caso esta operação provavelmente falhe. • O padrão Circuit Breaker não deverá ser considerado quando: • Tenta-se manipular recursos privados de uma aplicação, como por exemplo a estrutura de dados. Neste caso, o Circuit Breaker irá gerar uma sobrecarga no sistema. • Como um substituto de manipulador de exceções para tratar lógica de negócio nas aplicações.