Zookeeper - Выборы лидера

Давайте проанализируем, как узел-лидер может быть выбран в ансамбле ZooKeeper. Считайте, что естьNколичество узлов в кластере. Процесс избрания лидера выглядит следующим образом -

  • Все узлы создают последовательный эфемерный узел с одним и тем же путем, /app/leader_election/guid_.

  • Ансамбль ZooKeeper добавит 10-значный порядковый номер к пути, и созданный znode будет /app/leader_election/guid_0000000001, /app/leader_election/guid_0000000002, и т.п.

  • Для данного экземпляра узел, который создает наименьшее число в znode, становится лидером, а все остальные узлы - последователями.

  • Каждый ведомый узел наблюдает за znode, имеющим следующий наименьший номер. Например, узел, создающий znode/app/leader_election/guid_0000000008 буду смотреть зноде /app/leader_election/guid_0000000007 и узел, который создает znode /app/leader_election/guid_0000000007 буду смотреть зноде /app/leader_election/guid_0000000006.

  • Если лидер выходит из строя, то соответствующий ему znode /app/leader_electionN удаляется.

  • Следующий в очереди узел-последователь получит уведомление через наблюдатель об удалении лидера.

  • Следующий в очереди узел-последователь проверит, есть ли другие z-узлы с наименьшим номером. Если нет, то он возьмет на себя роль лидера. В противном случае он находит узел, который создал znode с наименьшим номером в качестве лидера.

  • Точно так же все остальные узлы-последователи выбирают узел, который создал znode с наименьшим номером в качестве лидера.

Выборы лидера - сложный процесс, когда он проводится с нуля. Но сервис ZooKeeper делает это очень просто. Давайте перейдем к установке ZooKeeper в целях разработки в следующей главе.