Maison  >  Article  >  Périphériques technologiques  >  Un algorithme de consensus que les systèmes distribués doivent connaître : Raft

Un algorithme de consensus que les systèmes distribués doivent connaître : Raft

WBOY
WBOYavant
2023-04-07 17:54:521071parcourir

1. Présentation de Raft

L'algorithme Raft​​​ est le premier choix pour le développement de systèmes distribués​Algorithme de consensus​​. Par exemple, Etcd et Consul sont désormais populaires. ​Raft 算法​​​是分布式系统开发首选的​​共识算法​​。比如现在流行 Etcd、Consul。

如果​​掌握​​​了这个算法,就可以较容易地处理绝大部分场景的​​容错​​​和​​一致性​​需求。比如分布式配置系统、分布式 NoSQL 存储等等,轻松突破系统的单机限制。

Raft 算法是通过一切以领导者为准的方式,实现一系列值的共识和各节点日志的一致。

二、Raft 角色

2.1 角色

跟随者(Follower):​​普通群众​​,默默接收和来自领导者的消息,当领导者心跳信息超时的时候,就主动站出来,推荐自己当候选人。

候选人(Candidate):​​候选人​​将向其他节点请求投票 RPC 消息,通知其他节点来投票,如果赢得了大多数投票选票,就晋升当领导者。

领导者(Leader):​​霸道总裁​

Si​​ Une fois que vous maîtrisez cet algorithme, vous pouvez facilement gérer la plupart des scènes. text-indent: 0px;">​Tolérance aux pannes​​​et​​Exigences de cohérence​​. Par exemple, les systèmes de configuration distribués, le stockage NoSQL distribué, etc. peuvent facilement dépasser les limitations du système liées à une seule machine.

L'algorithme Raft parvient à un consensus sur une série de valeurs et à une cohérence dans les journaux de chaque nœud à travers toutes les méthodes basées sur le leader.

2. Rôle du radeau

2.1 Rôle

Suiveur : ​​Les gens ordinaires​​, reçoivent silencieusement les messages des dirigeants, lorsque les informations sur le rythme cardiaque du candidat expirent, il prendra l'initiative de se présenter comme candidat.

Candidat : ​​Les candidats​ demanderont des messages RPC de vote aux autres nœuds pour informer les autres nœuds de voter. S'ils remportent la majorité des votes, ils seront promus au rang de leader.

Leader : ​​Président autoritaire​​, tout m'est soumis. Traitez les demandes d'écriture, gérez la réplication des journaux et envoyez en permanence des informations de battement de cœur pour informer les autres nœuds que « Je suis le leader, je suis toujours en vie et vous ne voulez pas » lancer une nouvelle élection sans avoir à trouver un nouveau leader à remplacer. moi.

Comme le montre la figure ci-dessous, trois types de personnages sont utilisés pour représenter les adeptes, les candidats et les dirigeants.

Rôle

3. Système à nœud uniqueUn algorithme de consensus que les systèmes distribués doivent connaître : Raft

3.1 Serveur de base de données

Imaginons maintenant qu'il existe un système à nœud unique ce nœud agit comme un serveur de base de données et stocke une valeur de X.

Serveur de base de données

Un algorithme de consensus que les systèmes distribués doivent connaître : Raft3.2 Client

Le cercle vert plein à gauche est le client et le cercle bleu plein à droite est le nœud a (Nœud a). Le terme représente la durée du mandat, qui sera discuté plus tard.

Client

🎜🎜3.3 Le client envoie des données au serveur🎜🎜🎜Le client envoie une opération de mise à jour au serveur à nœud unique, en définissant la valeur stockée dans la base de données sur 8. Dans un environnement autonome (nœud de serveur unique), la valeur que le client obtient du serveur est également 8. La cohérence est très facile à assurer. 🎜🎜🎜🎜🎜Le client envoie des données au serveur🎜🎜🎜3.4 Comment assurer la cohérence entre plusieurs nœuds ? 🎜🎜🎜Mais s'il y a plusieurs nœuds de serveur, comment assurer la cohérence ? Par exemple, il y a trois nœuds : a, b, c. Comme indiqué ci-dessous. Ces trois nœuds forment un cluster de bases de données. Lorsque le client effectue des opérations de mise à jour sur ces trois nœuds, comment s'assurer que les valeurs stockées dans les trois nœuds sont cohérentes ? Il s'agit d'un problème de cohérence distribuée. L'algorithme Raft est là pour résoudre ce problème. Bien entendu, il existe d’autres protocoles qui peuvent également garantir cela. Cet article se concentre uniquement sur l’algorithme Raft. 🎜

Un algorithme de consensus que les systèmes distribués doivent connaître : Raft

Dans un cluster multi-nœuds, comment l'algorithme Raft garantit-il qu'il n'y a qu'un seul leader dans le cluster en même temps dans des circonstances anormales telles qu'une panne de nœud et des erreurs de partition ? Commençons par expliquer le processus d’élection des dirigeants par l’algorithme Raft.

4. Processus d'élection du leader

4.1 État initial

Dans l'état initial, tous les nœuds du cluster sont des suiveurs.

Comme le montre la figure ci-dessous, il y a trois nœuds (Node) a, b et c, et le terme (Term) est 0.

Un algorithme de consensus que les systèmes distribués doivent connaître : Raft

État initial

4.2 Devenez candidat

L'algorithme Raft implémente la fonction de délai d'attente aléatoire, et l'intervalle de délai d'attente pour chaque nœud pour attendre les informations de battement de cœur du nœud leader est aléatoire. Par exemple, le délai d'attente du nœud A est de 150 ms, celui du nœud B est de 200 ms et celui du nœud C est de 300 ms. Ensuite, un délai d'attente expire d'abord. Tout d'abord, il expire car il n'attend pas les informations de battement de cœur du leader. Comme le montre la figure ci-dessous, les temporisateurs d'expiration des trois nœuds commencent à s'exécuter.

Timeout

Lorsque le délai d'attente du nœud A expire, le nœud A devient un candidat, augmente son numéro de terme, met à jour la valeur du terme de 0 à 1 et vote pour lui-même.

  • Nœud A : mandat = 1, nombre de votes = 1.
  • Nœud B : Terme = 0.
  • Nœud C:Term=0.

Un algorithme de consensus que les systèmes distribués doivent connaître : Raft

Devenez candidat

4.3 Votez

Voyons comment un candidat devient un leader.

Un algorithme de consensus que les systèmes distribués doivent connaître : Raft

Élection du leader

  • Étape  : Une fois que le nœud A est devenu candidat, envoyez une demande de vote RPC aux autres nœuds, leur demandant de s'élire comme dirigeants.
  • Étape 2 : Après avoir reçu les informations de demande de vote envoyées par le nœud A, le nœud B et le nœud C voteront pour le nœud A sans voter pendant le mandat numéroté 1 et ajouteront leur propre numéro de mandat.
  • Étape 3 : Le nœud A a reçu 3 votes et a reçu les votes de la majorité des nœuds, devenant ainsi le nouveau leader d'un candidat au cours de ce mandat.
  • Étape 4 : Le nœud A, en tant que leader, envoie des informations de battement de cœur au nœud B et au nœud C à intervalles fixes, indiquant aux nœuds B et C que je suis le leader et organise d'autres suiveurs pour lancer de nouvelles élections.
  • Étape 5 : Le nœud B et le nœud C envoient des informations de réponse au nœud A, indiquant au nœud A que je suis normal.

4.4 Terme

Le mot anglais est terme, et les dirigeants ont un mandat.

  • Augmentation automatique : Une fois que le suiveur s'est recommandé comme candidat après avoir attendu que les informations sur le rythme cardiaque du leader expirent, son numéro de terme sera augmenté comme le montre la figure ci-dessus, le terme du nœud A est 0. Lorsque le nombre de termes est augmenté. suiveur se recommande comme candidat, le terme Le nombre passe à 1.
  • Mise à jour vers une valeur plus grande : lorsqu'un nœud constate que son numéro de terme est plus petit que celui des autres nœuds, il sera mis à jour vers une valeur numérique plus grande. Par exemple, le terme du nœud A est 1 et demande un vote. Le message de vote contient le numéro du terme du nœud A et le numéro est 1. Une fois que le nœud B a reçu le message, il mettra à jour son numéro de terme à 1.
  • Revenir au statut de suiveur : si un candidat ou un leader constate que son numéro de mandat est inférieur à celui des autres nœuds, il reviendra immédiatement au statut de suiveur. Ce scénario se produit lorsque le leader avec le terme 3 reçoit un message de pulsation avec le terme 4 après la récupération d'une erreur de partition. Le leader revient alors immédiatement à l'état de suiveur.
  • Message de rejet : Si un nœud reçoit une demande pour une valeur de numéro de terme plus petite, il rejettera directement la demande. Par exemple, le nœud A avec le terme numéro 6 reçoit une demande de vote du nœud B avec le terme numéro 5. RPC. message, le nœud A rejettera le message.

4.5 Règles électorales

  • Pendant un mandat, le leader sera toujours le leader jusqu'à ce qu'il y ait un problème (comme un temps d'arrêt) ou un problème de réseau (retard), et que d'autres nœuds lancent un nouveau tour d'élections.
  • Lors d'une élection, chaque nœud de serveur émettra au plus une voix pour un numéro de mandat, et elle disparaîtra une fois le vote terminé.

4.6 La plupart

En supposant qu'un cluster soit constitué de N nœuds, alors la majorité est d'au moins N/2+1. Par exemple : pour un cluster de 3 nœuds, la plupart sont 2.

4.7 Heartbeat Timeout

Afin d'empêcher plusieurs nœuds de lancer le vote en même temps, chaque nœud se verra attribuer un délai d'attente d'élection aléatoire. Pendant ce temps, le nœud ne peut pas devenir candidat et ne peut qu'attendre l'expiration du délai. Par exemple, dans l'exemple ci-dessus, le nœud A expire en premier et devient premier candidat. Grâce à cette conception intelligente, dans la plupart des cas, un seul nœud de serveur lance l'élection en premier au lieu de lancer l'élection en même temps, ce qui réduit le nombre d'échecs d'élection dus à la division des votes.

Un algorithme de consensus que les systèmes distribués doivent connaître : Raft

Devenez candidat

5. Échec du leader

Si le nœud leader échoue, un nouveau tour d'élection sera déclenché. Comme le montre la figure ci-dessous, si le nœud leader A échoue, le nœud B et le nœud C rééliront le leader.

Un algorithme de consensus que les systèmes distribués doivent connaître : Raft

Échec du leader

  • Étape  : Le nœud A a un échec, le nœud B et le nœud C ne reçoivent pas les informations de battement de cœur du nœud leader A et les délais d'attente expirent.
  • Deuxième étape : le nœud C expire en premier et le nœud C devient un candidat.
  • Étape 3 : Le nœud C lance une demande d'informations de vote au nœud A et au nœud B.
  • Étape 4 : Le nœud C a répondu au vote et a voté pour C, tandis que le nœud A n'a pas pu répondre à la demande de vote de C en raison d'un échec.
  • Étape 5 : Le nœud C reçoit deux voix (majorité des voix) et devient le leader.
  • Étape 6 : Le nœud C envoie des informations de battement de cœur aux nœuds A et B. Le nœud B répond aux informations de battement de cœur. Le nœud A ne répond pas aux informations de battement de cœur car A est défectueux.

Résumé

L'algorithme Raft utilise les méthodes suivantes pour organiser des élections à la direction, garantissant qu'il n'y a qu'un seul leader par mandat, réduisant ainsi considérablement le nombre d'échecs électoraux.

  • Terme
  • Informations sur le rythme cardiaque du leader
  • Délai d'expiration aléatoire des élections
  • Principe de vote du premier arrivé, premier servi
  • Principe du vote majoritaire

Cet article explique comment l'algorithme Raft élit les dirigeants grâce à des animations plus faciles à comprendre et à digérer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer