사육사-리더 선거
ZooKeeper 앙상블에서 리더 노드를 선택하는 방법을 분석해 보겠습니다. 거기 고려N클러스터의 노드 수. 리더 선출 과정은 다음과 같습니다.
모든 노드는 동일한 경로로 순차적 인 임시 znode를 만듭니다. /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 znode를 볼 것입니다 /app/leader_election/guid_0000000007 및 znode를 생성하는 노드 /app/leader_election/guid_0000000007 znode를 볼 것입니다 /app/leader_election/guid_0000000006.
리더가 다운되면 해당 znode /app/leader_electionN 삭제됩니다.
다음 인라인 팔로워 노드는 리더 제거에 대해 감시자를 통해 알림을받습니다.
다음 라인 추종자 노드는 가장 작은 숫자를 가진 다른 znode가 있는지 확인합니다. 없으면 리더의 역할을 맡습니다. 그렇지 않으면 리더로 가장 작은 숫자의 znode를 생성 한 노드를 찾습니다.
마찬가지로, 다른 모든 팔로워 노드는 가장 적은 수의 znode를 리더로 만든 노드를 선택합니다.
리더 선출은 처음부터 끝날 때 복잡한 과정입니다. 그러나 ZooKeeper 서비스는 매우 간단합니다. 다음 장에서 개발 목적으로 ZooKeeper 설치로 넘어가겠습니다.