Arquitetura tolerante
Introdução
Em geral
Tolerância a falhas é a propriedade que permite que um sistema continue funcionando corretamente em caso de falha de um ou mais de seus componentes. Se o seu desempenho diminuir, a diminuição é proporcional à gravidade da falha, em comparação com um sistema ingenuamente concebido para que mesmo uma pequena falha possa causar um colapso total do sistema. A tolerância a falhas é particularmente procurada em sistemas de alta disponibilidade.
Um projeto tolerante a falhas é um sistema que é capaz de continuar operando quando qualquer componente do sistema falha.,[1] possivelmente em um nível inferior, o que é melhor do que o sistema falhar completamente. O termo é comumente usado para descrever sistemas baseados em computador projetados para continuar, em maior ou menor grau, as operações que executa, com, na melhor das hipóteses, uma redução no desempenho ou um aumento nos tempos de resposta para componentes com falha. Isso significa que o sistema não para devido a uma falha de software ou hardware. Um exemplo em outro ramo é o de um carro projetado para continuar funcionando se um de seus pneus furar.
A tolerância a falhas é apenas uma propriedade de cada máquina, podendo também caracterizar as regras segundo as quais elas interagem. Por exemplo, o protocolo TCP foi projetado para permitir comunicação bidirecional confiável em uma rede comutada por pacotes, mesmo na presença de links de comunicação imperfeitos ou sobrecarregados. Isso ocorre porque no final da comunicação podem ser esperadas perdas de pacotes, duplicação, reordenação e corrupção, de modo que essas condições não prejudicam a integridade dos dados e apenas reduzem a capacidade em uma quantidade proporcional.
A recuperação de erros em sistemas tolerantes a falhas pode ser caracterizada como forward ou backward. Quando o sistema detecta que um erro foi cometido, a recuperação “avançar” pega o estado do sistema naquele momento e o corrige, para que ele possa seguir em frente. A recuperação de "reversão" recupera o estado do sistema para algumas das versões anteriores e corretas, por exemplo, usando pontos de recuperação, e avança. A recuperação de reversão exige que as operações entre o ponto de verificação e os erros detectados possam ser inalteráveis. Alguns sistemas utilizam ambos os tipos de recuperação de erros para diferentes partes do mesmo erro.
No nível de um sistema , a tolerância a falhas pode ser alcançada antecipando condições excepcionais e criando o sistema para lidar com a situação e, geralmente, para se autoestabilizar, de modo que o sistema convirja para um estado livre de erros. Contudo, se as consequências de uma falha do sistema forem catastróficas, ou se o custo para torná-lo suficientemente fiável for muito elevado, a melhor solução poderá ser utilizar alguma forma de espelhamento. Em qualquer caso, se a consequência de uma falha do sistema for tão catastrófica, o sistema deverá ser capaz de usar o rollback para retornar ao modo de segurança. Isto é semelhante à reversão, mas pode ser uma ação humana se humanos estiverem presentes no ciclo.