Troque consistência por disponibilidade
Aplique o CAP, os modelos de consistência e os quóruns a dados replicados.
- 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 XPEncontre 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.
- Quais configurações garantem que uma leitura encontre o valor novo?
- 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.
Experimente
Até 15 XPQuanta consistência isto precisa?
Um mesmo sistema pode fazer escolhas diferentes para funcionalidades diferentes, e dizer isso é uma ótima jogada na entrevista.
“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…