Paxos war der anerkannte Konsensalgorithmus, aber er war schwer zu verstehen und schwer zu implementieren, sodass Produktionssysteme, die darauf aufbauten, anfällig für subtile Fehler waren, die erst beim Ausfall des Leaders zutage traten.

Raft wurde mit einer anderen Priorität geschrieben: Es ist Paxos in Fehlertoleranz und Leistung ebenbürtig, und der Unterschied besteht darin, dass es auf leichte Verständlichkeit ausgelegt ist. Seine Autoren zerlegten den Konsens in eine Leader-Wahl, ein in Reihenfolge repliziertes Log und eine Sicherheitsregel.

Diese Trennung ermöglichte es einem breiteren Publikum, ihn korrekt zu implementieren. Verständlichkeit wurde als erstklassige Anforderung behandelt, und das Ergebnis war ein Konsensalgorithmus, über den Teams tatsächlich nachdenken und den sie ausliefern konnten.

Entwirf den Algorithmus für den Menschen, der ihn überprüfen muss

Verständliche Phasen entsprechen dem, was ein Programmierer überprüfen kann.

Cleverness im Konsens neigt dazu, Implementierungsfehler hervorzubringen.

Breitere korrekte Übernahme schlägt einen marginalen Leistungsvorteil.

Wenn die Korrektheit davon abhängt, dass viele andere es richtig machen, sollte man das Schwierige leicht überprüfbar machen; ein Design, das bloß clever ist, kostet durch Fehler mehr, als es an Eleganz gewinnt.

Raft wurde von etcd, Consul, CockroachDB und vielen anderen verteilten Systemen übernommen und wurde zur Standardmethode, mit der Ingenieure Konsens lernen und bauen.

DEN BELEGEN FOLGEN

Die Quellen

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