Zookeeper - Elección de líder

Analicemos cómo se puede elegir un nodo líder en un conjunto ZooKeeper. Considere que hayNnúmero de nodos en un clúster. El proceso de elección de líder es el siguiente:

  • Todos los nodos crean un znodo secuencial y efímero con la misma ruta, /app/leader_election/guid_.

  • El conjunto ZooKeeper agregará el número de secuencia de 10 dígitos a la ruta y el znode creado será /app/leader_election/guid_0000000001, /app/leader_election/guid_0000000002, etc.

  • Para una instancia determinada, el nodo que crea el número más pequeño en el znode se convierte en el líder y todos los demás nodos son seguidores.

  • Cada nodo seguidor observa el znode que tiene el siguiente número más pequeño. Por ejemplo, el nodo que crea znode/app/leader_election/guid_0000000008 mirará el znode /app/leader_election/guid_0000000007 y el nodo que crea el znode /app/leader_election/guid_0000000007 mirará el znode /app/leader_election/guid_0000000006.

  • Si el líder cae, entonces su correspondiente znode /app/leader_electionN se elimina.

  • El siguiente nodo seguidor en línea recibirá la notificación a través del observador sobre la eliminación del líder.

  • El siguiente nodo seguidor de la línea comprobará si hay otros znodes con el número más pequeño. Si no hay ninguno, asumirá el papel de líder. De lo contrario, encuentra el nodo que creó el znode con el número más pequeño como líder.

  • De manera similar, todos los demás nodos seguidores eligen el nodo que creó el znode con el número más pequeño como líder.

La elección de un líder es un proceso complejo cuando se hace desde cero. Pero el servicio ZooKeeper lo hace muy simple. Pasemos a la instalación de ZooKeeper con fines de desarrollo en el siguiente capítulo.