Tolerância a Falhas e Replicação
Tolerância a falhas e replicação são as técnicas pelas quais sistemas distribuídos continuam a fornecer serviço correto apesar da falha de alguns de seus componentes.
Definition
Tolerância a falhas é a capacidade de um sistema de continuar a atender às suas especificações apesar de falhas em alguns componentes; a replicação — manter múltiplas cópias de computação ou dados — é o principal mecanismo para alcançá-la, exigindo protocolos para manter as cópias adequadamente consistentes.
Scope
Esta área abrange a redundância como base da tolerância a falhas, a abordagem de replicação de máquina de estado para construir serviços confiáveis, a replicação de dados e os modelos de consistência que governam os dados replicados, o teorema CAP e o trade-off de consistência-disponibilidade sob partições, e técnicas de recuperação com rollback baseadas em checkpointing e logging. Ela conecta a teoria de consenso e ordenação à construção de sistemas confiáveis.
Sub-topics
Core questions
- Como a redundância transforma componentes não confiáveis em um serviço confiável?
- Que consistência as réplicas devem manter, e qual o custo de cada nível em latência e disponibilidade?
- O que é fundamentalmente impossível de garantir quando a rede pode particionar?
- Como um sistema pode se recuperar para um estado consistente após falhas?
Key theories
- Replicação de máquina de estado
- Um serviço determinístico é tornado tolerante a falhas executando réplicas idênticas que processam a mesma sequência de comandos na mesma ordem, de modo que as réplicas sobreviventes podem mascarar a falha de outras.
- Teorema CAP
- Quando a rede pode particionar, um serviço replicado não pode garantir simultaneamente forte consistência e disponibilidade; os projetistas devem escolher qual sacrificar durante uma partição, um trade-off formalizado por Gilbert e Lynch.
- Recuperação com rollback
- Ao fazer checkpointing periodicamente do estado e, opcionalmente, registrar mensagens, um sistema pode reverter processos falhos para uma linha de recuperação consistente e reproduzir para frente, recuperando-se sem reiniciar toda a computação.
Clinical relevance
A replicação e a tolerância a falhas são o que tornam o armazenamento em nuvem durável e os serviços altamente disponíveis; os modelos de consistência e os trade-offs CAP estudados aqui determinam diretamente as garantias oferecidas por bancos de dados, armazenamentos de objetos e serviços de coordenação usados em toda parte na produção.
History
O tutorial de Schneider de 1990 codificou a abordagem de máquina de estado para replicação; a conjectura CAP de Brewer (2000), provada por Gilbert e Lynch em 2002, enquadrou o debate sobre consistência-disponibilidade que moldou a era NoSQL; e pesquisas como as de Elnozahy e colegas consolidaram décadas de pesquisa em recuperação com rollback.
Debates
- Consistência forte versus eventual
- A consistência forte simplifica o raciocínio da aplicação, mas limita a disponibilidade e aumenta a latência sob partições; a consistência eventual maximiza a disponibilidade ao custo de expor desacordos temporários, e a escolha certa depende da semântica da aplicação.
Key figures
- Fred Schneider
- Leslie Lamport
- Eric Brewer
- Seth Gilbert
- Nancy Lynch
Related topics
Seminal works
- schneider1990
- gilbert2002
- elnozahy2002
Frequently asked questions
- A replicação sempre melhora a confiabilidade?
- Somente se as réplicas forem mantidas consistentes e falharem independentemente. Réplicas mal coordenadas podem divergir e servir dados conflitantes, e falhas correlacionadas (energia compartilhada, bugs de software) anulam a redundância, então a replicação deve ser combinada com o protocolo de consistência correto.