Carregando
0x70Lição 8 de 13

Troque consistência por disponibilidade

Aplique o CAP, os modelos de consistência e os quóruns a dados replicados.

20 min Questionário com 6 perguntas
Ao final desta lição, você saberá
  • Dizer o que o teorema CAP afirma e o que ele não afirma.
  • Associar funcionalidades do produto a modelos de consistência.
  • Usar R + W > N para raciocinar sobre leituras e escritas com quórum.

Quando os dados são replicados entre máquinas, a rede entre elas pode falhar. O teorema CAP diz que, durante uma partição de rede, um sistema precisa escolher entre consistência (toda leitura vê a escrita mais recente) e disponibilidade (toda requisição recebe uma resposta sem erro). Partições não são opcionais em redes reais, então a escolha de verdade é do que abrir mão quando uma acontece. O PACELC estende isso: senão (else), quando não há partição, você ainda troca latência por consistência.

Modelos de consistência e quóruns

  • Forte (linearizável): as leituras sempre refletem a última escrita concluída. Necessária para saldos, estoque e locks.
  • Read-your-writes / leituras monotônicas: garantias mais fracas, por usuário, que parecem corretas para cada usuário.
  • Eventual: se as escritas pararem, as réplicas convergem. Serve para contagem de curtidas, contadores de visualizações e feeds.

Bancos sem líder (no estilo do Dynamo) escrevem cada chave em N réplicas. Uma escrita dá certo depois que W réplicas confirmam; uma leitura consulta R réplicas e fica com a versão mais nova. Se R + W > N, todo conjunto de leitura se sobrepõe a todo conjunto de escrita, então as leituras veem a escrita mais recente.

Conferindo duas configurações: com N=3, W=2, R=2, temos 2 + 2 > 3, então a sobreposição é garantida. Com N=3, W=1, R=1, 1 + 1 não é maior que 3, então leituras desatualizadas são possíveis.

As configurações de quórum são ajustáveis: W = N, R = 1 deixa as leituras rápidas, mas as escritas frágeis; W = 1, R = N faz o contrário. Quando as réplicas divergem, o sistema precisa reconciliá-las. Last-write-wins (a última escrita vence) é simples, mas descarta em silêncio atualizações concorrentes; vetores de versão detectam conflitos para a aplicação mesclá-los; CRDTs são tipos de dados que se mesclam automaticamente.

Prática: ajuste um quórum

Experimente

Até 15 XP

Encontre configurações que se sobrepõem

Isto mostra o pior caso para N=3: uma escrita chega só às primeiras W réplicas, e uma leitura consulta só as últimas R.

  1. Quais configurações garantem que uma leitura encontre o valor novo?
  2. Compare W=3, R=1 com W=1, R=3. Clique numa réplica para derrubá-la. Qual operação para de funcionar em cada caso?

Cada bloco é uma réplica: “novo” tem a gravação mais recente, e “leitura” é onde a leitura consulta. Clique em um bloco para derrubar essa réplica.

Uma leitura pode perder totalmente o valor novo, porque R + W não é maior que N.
As gravações funcionam. As leituras funcionam.

Experimente

Até 15 XP

Quanta consistência isto precisa?

Um mesmo sistema pode fazer escolhas diferentes para funcionalidades diferentes, e dizer isso é uma ótima jogada na entrevista.

0 de 5 classificadosPontuação 0/0
  • “Gastar o saldo de uma conta.”

  • “Vender o último ingresso.”

  • “Um usuário recarregando a biografia que acabou de editar.”

  • “Um contador de curtidas.”

  • “Sugestões de amigos.”

Principais conclusões

  • Durante uma partição, você escolhe consistência ou disponibilidade; sem partição, você troca latência por consistência.

  • Ajuste a consistência à funcionalidade - forte para dinheiro, eventual para contadores.

  • Com R + W > N, as leituras com quórum veem a escrita mais recente.

Quiz da aula

6 perguntas · aprovação com 5 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…