(Présentation de l'algorithme de RAFT pour l'UE PPD)
L'algorithme de RAFT est algorithme de consensus se proposant comme une alternative à l'algorithme de Paxos. Il se veut simple à comprendre et réduit aussi le nombre de communications que Paxos peut provoquer.
Dans l'algorithme un noeud doit avoir un des rôles suivants :
L'algorithme de RAFT se base sur l'utilisation d'un leader. Pour créer un leader il y un processus d'élection. Pour déclencher une élection il y a 2 situations. La première situation est lors du démarrage aucun leader existe. La seconde situation ce déclenche quand les battements de coeur du leader ne sont plus reçus par un suiveur.
Quand un suiveur atteint la fin de son term sans recevoir de message du leader alors il devient candidat. Une fois devenu candidat le noeuds envoie un message à tous les autres noeuds pour qu'ils votent. Si le candidat reçoit la majorité de votes alors il devient le leader et commence créer des battements de coeur.
Si plusieurs candidats se présente en même temps et qu'aucun n'obtient de majorité alors au prochain term une nouvelle élection est lancé et ainsi de suite jusqu'à ce qu'un leader soit élu.
Quand un client souhaite faire un ajout sur le cluster, il envoie ce qu'il souhaite rajouter au leader. Le leader envoie durant un de ces battements de coeur la valeur du client. Lorsqu'un suiveur reçoit cette demande d'ajout il envoie au leader un message qu'il a bien pris en compte cette demande. Une fois que le leader a reçu une majorité de réponse des suiveurs il écrit alors la valeur dans les logs et prévient les suiveurs qu'ils peuvent en faire autant.
Avec RAFT si à la suite d'une panne le réseau se retrouve séparer, les plusieurs sous-réseaux fonctionne toujours indépendamment et ont chacun leur leader. Au moment où les deux sous réseaux refusionnent pour n'en former qu'un se pose la question de qui devient le leader. Pour choisir le leader dans cette situation il n'y pas d'élection. Parmi les leaders existant RAFT garder le leader ayant le term le plus élevé. Suite à ça le leader restant envoie dans ses battements de coeur les informations pour mettre à jour les informations dans tous les noeuds du cluster.