Zookeeper - wybór lidera
Przeanalizujmy, jak można wybrać węzeł lidera w zespole ZooKeeper. Rozważ, że sąNliczba węzłów w klastrze. Proces wyboru lidera wygląda następująco:
Wszystkie węzły tworzą sekwencyjny, efemeryczny znode z tą samą ścieżką, /app/leader_election/guid_.
Zespół ZooKeeper doda 10-cyfrowy numer kolejny do ścieżki, a utworzony znode będzie /app/leader_election/guid_0000000001, /app/leader_election/guid_0000000002, itp.
W danym przypadku węzeł, który utworzy najmniejszą liczbę w znodzie, staje się liderem, a wszystkie pozostałe węzły są następcami.
Każdy węzeł śledzący obserwuje znod o kolejnym najmniejszym numerze. Na przykład węzeł, który tworzy znode/app/leader_election/guid_0000000008 będzie pilnował znode /app/leader_election/guid_0000000007 oraz węzeł, który tworzy znode /app/leader_election/guid_0000000007 będzie pilnował znode /app/leader_election/guid_0000000006.
Jeśli lider upadnie, to odpowiadający mu znode /app/leader_electionN zostanie usunięty.
Następny w linii węzeł obserwujący otrzyma powiadomienie przez obserwatora o usunięciu lidera.
Następny węzeł podążający w linii sprawdzi, czy są inne znody o najmniejszym numerze. Jeśli nie, to przejmie rolę lidera. W przeciwnym razie jako lider znajduje węzeł, który utworzył znode z najmniejszą liczbą.
Podobnie, wszystkie inne węzły podążające wybierają węzeł, który utworzył znode o najmniejszej liczbie jako lidera.
Wybór lidera to złożony proces, gdy odbywa się od zera. Ale usługa ZooKeeper sprawia, że jest to bardzo proste. W następnym rozdziale przejdźmy do instalacji ZooKeepera do celów programistycznych.