Pular para o conteúdo principal

Majority Quorum

Descrição​

No Majority Quorum, uma atualização só é considerada aceita pelo cluster quando a maioria dos nós a reconhece. Para um cluster de n nós, o quórum é n/2 + 1 (divisão inteira). Em um cluster de cinco nós o quórum é três, e o sistema tolera a falha de dois. Para tolerar f falhas, são necessários 2f + 1 nós.

Esperar todos os nós deixaria o sistema lento e vulnerável a qualquer falha; esperar poucos arriscaria perder atualizações. A maioria equilibra os dois: duas maiorias sempre se intersectam, de modo que qualquer decisão posterior tem pelo menos um nó que conhece a anterior.

O padrão aparece em ZooKeeper, etcd, Raft e Paxos para confirmar escritas e eleger líderes, e em Cassandra, onde o quórum de leitura e escrita é configurável.

Problemas que resolve​

  • Decidir quantas confirmações são necessárias antes de considerar uma atualização segura.
  • Evitar perda de atualizações quando poucos nós confirmam e depois falham.
  • Evitar lentidão e indisponibilidade ao exigir confirmação de todos os nós.
  • Garantir que decisões concorrentes não conflitem (intersecção de maiorias).

Quando usar​

  • Replicação em que a escrita deve sobreviver à falha de alguns nós.
  • Eleição de líder e consenso.
  • Tomada de decisões por grupo em que um segmento minoritário isolado não deve continuar operando.

Quando evitar​

  • Clusters de dois nós ou com número par, em que o quórum não tolera mais falhas que o ímpar anterior.
  • Quando a latência de esperar a maioria entre regiões distantes é inaceitável e a consistência eventual basta.

Trade-offs​

GanhoCusto / Risco
Tolera falhas sem perder dados confirmadosExige 2f + 1 nós e comunicação com a maioria a cada escrita
Evita split brain: apenas uma partição tem maioriaSem maioria, o cluster para de aceitar escritas (prioriza consistência sobre disponibilidade)
Mais rápido que esperar todos os nósLatência dominada pelos nós mais lentos dentro da maioria
  • Número ímpar de nós: 3 ou 5 são tamanhos típicos.
  • Quórum flexível: escolher R + W > N em sistemas como Cassandra ajusta o equilíbrio entre leitura e escrita.
  • Mudança de membros: reconfigurar o cluster exige cuidado para que as maiorias antiga e nova se sobreponham.

Diagrama​

Em um cluster de três nós, duas confirmações bastam para considerar a atualização aceita, mesmo com um nó sem resposta.

Padrões relacionados​

  • Leader and Followers — o líder usa o quórum para confirmar escritas
  • High-Water Mark — marca a última entrada replicada em maioria
  • Paxos — usa quóruns de maioria nas fases de prepare e accept
  • Replicated Log — entradas só são confirmadas após o quórum
  • Two-Phase Commit — contraste: exige todos os participantes, não apenas a maioria

Referência​