Pular para o conteúdo

Arquitetura de software · Dados · 5 min de leitura

Teorema CAP na prática

Quando a rede se parte entre servidores, um sistema distribuído precisa escolher entre responder com dados possivelmente velhos ou recusar até se reconciliar.

Nó A → PartiçãoPartição → Nó BPartição → Escolha CPPartição → Escolha APNó A — saldo = 100Nó Asaldo = 100Nó B — saldo = 100Nó Bsaldo = 100Partição — rede caiuPartiçãorede caiuEscolha CP — recusa até sincronizarEscolha CPrecusa até sincronizarEscolha AP — responde, reconcilia depoisEscolha APresponde, reconcilia depois

Arraste para o lado para ver o diagrama inteiro.

Sem partição, dá para ter consistência e disponibilidade. A escolha só é forçada durante a falha de rede.

O que o teorema diz

Entre Consistência (todos veem o mesmo dado), Disponibilidade (toda requisição recebe resposta) e tolerância a Partição (o sistema continua apesar de falhas de rede), durante uma partição você precisa abrir mão de C ou de A. Como partições acontecem, a escolha real é entre CP e AP.

Exemplos

  • CP: saldo bancário, estoque com reserva — melhor recusar do que vender duas vezes.
  • AP: curtidas, carrinho de compras — melhor aceitar e reconciliar.

O próprio Brewer lembra que a escolha pode ser feita por operação, não para o sistema inteiro, e que o teorema PACELC acrescenta a troca entre latência e consistência mesmo sem falhas.

Em resumo

Referências

Continue aprendendo

Todos os temas de arquitetura de software →