Zookeeper - Elezione del leader

Analizziamo come un nodo leader può essere eletto in un insieme ZooKeeper. Considera che ci sonoNnumero di nodi in un cluster. Il processo di elezione del leader è il seguente:

  • Tutti i nodi creano uno znodo sequenziale ed effimero con lo stesso percorso, /app/leader_election/guid_.

  • L'ensemble ZooKeeper aggiungerà il numero di sequenza di 10 cifre al percorso e lo znode creato sarà /app/leader_election/guid_0000000001, /app/leader_election/guid_0000000002, eccetera.

  • Per una data istanza, il nodo che crea il numero più piccolo in znode diventa il leader e tutti gli altri nodi sono seguaci.

  • Ogni nodo follower guarda lo znode con il numero più piccolo successivo. Ad esempio, il nodo che crea znode/app/leader_election/guid_0000000008 guarderà lo znode /app/leader_election/guid_0000000007 e il nodo che crea lo znode /app/leader_election/guid_0000000007 guarderà lo znode /app/leader_election/guid_0000000006.

  • Se il leader va giù, allora il suo znode corrispondente /app/leader_electionN viene eliminato.

  • Il successivo nodo follower in linea riceverà la notifica tramite watcher sulla rimozione del leader.

  • Il successivo nodo follower in linea controllerà se ci sono altri znode con il numero più piccolo. In caso contrario, assumerà il ruolo di leader. Altrimenti, trova il nodo che ha creato lo znode con il numero più piccolo come leader.

  • Allo stesso modo, tutti gli altri nodi follower eleggono il nodo che ha creato lo znode con il numero più piccolo come leader.

L'elezione del leader è un processo complesso quando viene eseguita da zero. Ma il servizio ZooKeeper lo rende molto semplice. Passiamo all'installazione di ZooKeeper per scopi di sviluppo nel prossimo capitolo.