Paxos era el algoritmo de consenso aceptado, pero era difícil de entender y difícil de implementar, por lo que los sistemas en producción construidos sobre él eran propensos a errores sutiles que solo afloraban ante fallos del líder.
Raft se escribió con una prioridad distinta: es equivalente a Paxos en tolerancia a fallos y rendimiento, y la diferencia es que está diseñado para ser fácil de entender. Sus autores dividieron el consenso en una elección de líder, un registro replicado en orden y una regla de seguridad.
Esa separación fue lo que permitió que un público más amplio lo implementara correctamente. La comprensibilidad se trató como un requisito de primer orden, y el resultado fue un algoritmo de consenso sobre el que los equipos podían realmente razonar y desplegar.
Diseñar el algoritmo para la persona que tiene que verificarlo
Las fases comprensibles se corresponden con lo que un programador puede verificar.
La astucia en el consenso tiende a generar errores de implementación.
Una adopción correcta más amplia supera a una ventaja marginal de rendimiento.
Cuando la corrección depende de que muchos otros lo hagan bien, haz que lo difícil sea fácil de verificar; un diseño que es meramente astuto cuesta más por los errores de lo que gana en elegancia.
Raft fue adoptado por etcd, Consul, CockroachDB y muchos otros sistemas distribuidos, y se convirtió en la forma predeterminada en que los ingenieros aprenden y construyen consenso.
CONSULTA LAS PRUEBAS
Las fuentes
- In Search of an Understandable Consensus Algorithm (Raft) Stanford University · raft.github.io
- etcd documentation etcd · etcd.io