Camada Zero · 30 · Teorema CAP & Partições de Rede

Toda explicação de boteco do CAP diz "escolhe 2 de 3" e está errada. Partição não é uma escolha, ela acontece sozinha quando um cabo cai ou o GC trava 30s. Aqui você quebra a rede na mão e vê o que sobra pra escolher: consistência ou disponibilidade.
nãoPartição ativa
CPModo
SIMConsistência mantida
totalDisponibilidade
0Conflitos resolvidos
réplica saudável lado A (divergente) lado B (divergente) indisponível (CP) link cortado
5 réplicas do mesmo dado. Sem partição você tem consistência e disponibilidade juntas. Quando a rede racha, a maioria (3 nós) tem quórum e a minoria (2 nós) não. É aí que o tradeoff aparece. CP recusa escrita no lado sem quórum pra nunca divergir. AP aceita dos dois lados e te entrega o problema de reconciliar depois.

Escrita com quórum (a raiz do CP)

func write(v Value) error {
    acks := replicate(v, replicas)
    quorum := len(replicas)/2 + 1
    if acks < quorum {
        // minoria sem maioria: recusa
        return ErrNoQuorum // CP: C sobre A
    }
    return nil
}

CP vs AP durante a partição

CPAP
Escrita no minoritáriorecusaaceita
Consistênciamantidadiverge
Disponibilidadeparcialtotal
Ao curarminoria sincronizareconcilia conflito
Exemplosetcd, ZooKeeperCassandra, DNS

🧠 Desafio — CAP & Partições

Quebra a rede aqui de cima nos dois modos antes de responder. As duas últimas são de reflexão: escreve a sua e só então revela o modelo.