O Paxos era o algoritmo de consenso aceito, mas era difícil de entender e de implementar, então os sistemas de produção construídos sobre ele eram propensos a bugs sutis que só apareciam sob falha do líder.

O Raft foi escrito com uma prioridade diferente: é equivalente ao Paxos em tolerância a falhas e desempenho, e a diferença é que foi projetado para ser fácil de entender. Seus autores dividiram o consenso em uma eleição de líder, um log replicado em ordem e uma regra de segurança.

Essa separação foi o que permitiu que um público mais amplo o implementasse corretamente. A compreensibilidade foi tratada como requisito de primeira classe, e o resultado foi um algoritmo de consenso sobre o qual as equipes realmente conseguiam raciocinar e entregar.

Projete o algoritmo para o humano que precisa verificá-lo

Fases compreensíveis correspondem ao que um programador consegue verificar.

Esperteza em consenso tende a gerar bugs de implementação.

Adoção correta mais ampla supera uma vantagem marginal de desempenho.

Quando a correção depende de muitos outros acertarem, torne a coisa difícil fácil de verificar; um design meramente engenhoso custa mais em bugs do que ganha em elegância.

O Raft foi adotado pelo etcd, Consul, CockroachDB e muitos outros sistemas distribuídos, e se tornou a forma padrão pela qual engenheiros aprendem e constroem consenso.

CONFIRA AS EVIDÊNCIAS

As fontes

  1. In Search of an Understandable Consensus Algorithm (Raft) Stanford University · raft.github.io
  2. etcd documentation etcd · etcd.io