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

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