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
- In Search of an Understandable Consensus Algorithm (Raft) Stanford University · raft.github.io
- etcd documentation etcd · etcd.io