Gardien de zoo - Élection du chef
Analysons comment un nœud leader peut être élu dans un ensemble ZooKeeper. Considérez qu'il y aNnombre de nœuds dans un cluster. Le processus d'élection du chef est le suivant -
Tous les nœuds créent un znode séquentiel et éphémère avec le même chemin, /app/leader_election/guid_.
L'ensemble ZooKeeper ajoutera le numéro de séquence à 10 chiffres au chemin et le znode créé sera /app/leader_election/guid_0000000001, /app/leader_election/guid_0000000002, etc.
Pour une instance donnée, le nœud qui crée le plus petit nombre dans le znode devient le leader et tous les autres nœuds sont des suiveurs.
Chaque nœud suiveur regarde le znode ayant le plus petit nombre suivant. Par exemple, le nœud qui crée znode/app/leader_election/guid_0000000008 va regarder le znode /app/leader_election/guid_0000000007 et le nœud qui crée le znode /app/leader_election/guid_0000000007 va regarder le znode /app/leader_election/guid_0000000006.
Si le leader tombe en panne, alors son znode correspondant /app/leader_electionN est supprimé.
Le prochain nœud suiveur en ligne recevra la notification via Watcher concernant la suppression du leader.
Le prochain nœud suiveur en ligne vérifiera s'il existe d'autres znodes avec le plus petit nombre. Si aucun, alors il assumera le rôle de leader. Sinon, il trouve le nœud qui a créé le znode avec le plus petit nombre comme leader.
De même, tous les autres nœuds suiveurs élisent le nœud qui a créé le znode avec le plus petit nombre comme leader.
L'élection du chef est un processus complexe lorsqu'elle est faite à partir de zéro. Mais le service ZooKeeper le rend très simple. Passons à l'installation de ZooKeeper à des fins de développement dans le chapitre suivant.