L'algorithme de consensus RAFT, développé par Diego Ongaro et John Ousterhout, est une solution simple, robuste et efficace pour résoudre les problèmes de consensus dans les systèmes distribués.
Dans un système distribué, chaque nœud exécute sa propre copie d'une application. Les nœuds doivent alors parvenir à un accord afin d'éviter les incohérences, de manière à exécuter exactement la même chose et obtenir les mêmes résultats, et ce, qu'importe les défaillances individuelles ou les perturbations réseaux. De ce fait, les algorithmes de consensus deviennent un impératif.
Avec RAFT, chaque nœud possède un rôle parmi trois possibilités : leader, suiveur ou candidat. De manière assez explicite, le leader prend les décisions, les suiveurs les suivent, et les candidats cherchent à devenir leader.
L'algorithme RAFT fonctionne en trois étapes clés :
L'élection du leader :
La réplication des logs :
Le commit et consensus :
Avec ce système de leader fonctionnant à la majorité, il est induit que les nœuds ont conscience du système auquel ils appartiennent, et donc du nombre de nœuds de ce dernier. Cela permet également un système robuste car il faut un minimum de la moitié des nœuds plus un pour que le système fonctionne. Cela veut donc dire qu'un certain nombre de nœuds peuvent tomber en panne sans causer de problèmes. Si cela arrivait tout de même, le système ne serait pas en erreur, mais simplement en pause, car aucune action ne passerait avec la majorité, le temps qu'un nombre suffisant de nœuds soient de nouveau fonctionnels.
RAFT est un algorithme réellement efficace, comme peut le souligner son adoption croissante dans des environnements réels. C'est un choix attrayant pour un certain nombre d'applications variées. Son implémentation simple et sa capacité à maintenir des consensus fiables, font de lui un excellent choix que ce soit pour de la gestion de bases de données partagées, des systèmes de fichiers partagés, etc...
Dans le domaine des systèmes distribués, RAFT se démarque des autres algorithmes par son approche pragmatique et technique. Avec un mécanisme simple, il parvient à coordonner les actions des différents nœuds pour assurer un consensus fiable. Ce qui en fait une option solide pour garantir la stabilité des infrastructures informatiques modernes, c'est une multitude de mécanismes sophistiqués participant à la simplicité de l'algorithme. La clarté opérationnelle de RAFT permet aux experts en systèmes distribués d'opter pour une solution fiable, efficace et facile à mettre en œuvre.
In Search of an Understandable Consensus Algorithm - Diego Ongaro and John Ousterhout - Stanford University
raft.github.io
thesecretlivesofdata.com
wikipedia.org
medium.com
geeksforgeeks.org