projet-systemes-algorithmes.../slides.md
2022-12-23 19:22:23 +01:00

7.4 KiB
Raw Blame History

marp paginate author
true true Clément Contet, Laurent Fainsin

The Raft Consensus Algorithm

bg right:60%

Diego Ongaro, John Ousterhout, Stanford University

Consensus ?

Consensus algorithms allow a collection of machines to work as a coherent group that can survive the failures of some of its members. RAFT authors


  • Accord sur l'état partagé (image système unique)
  • Réparation autonome en cas de défaillance d'un serveur
    • Une minorité de serveurs HS: pas de problème
    • La majorité des serveurs HS: perte de disponibilité, maintien de la cohérence
  • La clé pour construire des systèmes de stockage cohérents

Architecture typique des systèmes de consensus

bg 95%


Motivation ?

Paxos domine le marché depuis ~25 ans (Leslie Lamport, 1989)

  • Difficile à comprendre
  • Difficile à implémenter

The dirty little secret of the NSDI community is that at most five people really, truly understand every part of Paxos ;-). NSDI reviewer

There are significant gaps between the description of the Paxos algorithm and the needs of a real-world system…the final system will be based on an unproven protocol. Chubby authors


Pourquoi RAFT ?

Prendre des décisions de conception fondées sur la compréhensibilité

  • Décomposition du problème
  • Minimiser l'espace des états
    • Traiter plusieurs problèmes avec un seul mécanisme
    • Éliminer les cas particuliers
    • Minimiser le non-déterminisme
    • Maximiser la cohérence

Décomposition du problème

  1. Élection d'un leader (mandat)
    • Sélectionner un serveur qui sera le leader
    • Détecter les pannes, choisir un nouveau leader
  2. Réplication des logs (fonctionnement normal)
    • Le leader accepte les commandes des clients et les ajoute à son journal.
    • Le leader réplique son journal aux autres serveurs (écrase les incohérences).
  3. Sécurité
    • Maintenir la cohérence des journaux
    • Seuls les serveurs dont les journaux sont à jour peuvent devenir des leaders.

Minimiser l'espace des états

bg 90%


Mandats

bg 90%


Leader Election

TODO


Election Correctness

TODO


Démo interactive


Log Structure

TODO


Log Inconsistencies

TODO


Log Matching Property

TODO


De nombreuses implémentations

Name Primary Authors Language License
etcd/raft Blake Mizerany, Xiang Li and Yicheng Qin (CoreOS) Go Apache 2.0
go-raft Ben Johnson (Sky) and Xiang Li (CMU, CoreOS) Go MIT
hashicorp/raft Armon Dadgar (hashicorp) Go MPL-2.0
copycat Jordan Halterman Java Apache2
LogCabin Diego Ongaro (Stanford, Scale Computing) C++ ISC
akka-raft Konrad Malawski Scala Apache2
kanaka/raft.js Joel Martin Javascript MPL-2.0

How much randomization is needed to avoid split votes?

bg 90%


User Study: Is Raft Simpler than Paxos?

bg 70% bg 90%