Consistência Eventual em Sistemas Distribuídos
Source: Dev.to
O que é Consistência Eventual?
Consistência eventual é um modelo de consistência onde, dado tempo suficiente e ausência de novas atualizações, todos os nós de um sistema distribuído convergem para o mesmo estado. Em outras palavras, os dados podem estar temporariamente inconsistentes, mas eventualmente se tornam consistentes.
Por que isso existe?
A resposta está no famoso Teorema CAP, que afirma que um sistema distribuído só pode garantir, ao mesmo tempo, duas das três propriedades:
- Consistência (C) – Todos os nós veem os mesmos dados ao mesmo tempo
- Disponibilidade (A) – Cada solicitação recebe uma resposta (bem‑sucedida ou falha)
- Tolerância a Partições (P) – O sistema continua operando apesar de falhas de rede
Como falhas de rede são inevitáveis (logo, P é obrigatório), precisamos escolher entre consistência e disponibilidade.
Como funciona na prática?
Imagine um sistema com múltiplos servidores replicando dados:
- Um usuário faz uma atualização em um nó.
- A atualização é propagada para os demais nós de forma assíncrona.
- Enquanto a propagação ocorre, outros usuários podem ver um estado desatualizado.
- Após algum tempo, sem novas atualizações, todos os nós convergem para o mesmo estado.
Já percebeu quando você posta algo e demora um pouco para aparecer para outras pessoas? Isso pode ser um exemplo de consistência eventual.
Vantagens
Para trabalhar com consistência eventual, algumas estratégias são comuns:
- Versionamento de dados (timestamps, vetores de versão)
- Reconciliamento automático entre réplicas divergentes
- Técnicas de anti‑entropia (por exemplo, Merkle trees)
Quando não é indicada
Consistência eventual não é recomendada para:
- Transações financeiras críticas
- Sistemas que exigem garantias de integridade imediata (por exemplo, controle de estoque em tempo real)
Pergunta chave
A questão não é “Meu sistema deve ser consistente?”
Mas sim “Quando ele precisa ser consistente?”
Referências
DE CANDIA, Giuseppe et al. Dynamo: Amazon’s Highly Available Key-value Store. In: Proceedings of the 21st ACM Symposium on Operating Systems Principles (SOSP). New York: ACM, 2007. p. 205–220.