Учебники

Zookeeper — Лидер Выборы

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

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

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

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

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

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

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

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

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

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

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

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

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

Если лидер отключается, то соответствующий ему znode / app / leader_electionN удаляется.

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

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

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

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