2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
ZooKeeper는 분산 시스템의 일관성 문제를 해결하기 위해 분산 시스템에서 널리 사용되는 고가용성 분산 조정 서비스입니다. 다음은 아키텍처, 데이터 모델, 핵심 메커니즘 및 일관성 프로토콜을 포함하여 ZooKeeper의 기본 원칙을 자세히 소개합니다.
ZooKeeper는 일반적으로 리더와 여러 팔로워로 구성된 마스터-슬레이브 아키텍처를 채택하며 읽기 요청의 압력을 공유하기 위해 비투표 노드인 관찰자 노드도 있습니다.
ZooKeeper는 파일 시스템과 유사한 트리 구조로 데이터를 저장하며 각 노드를 znode라고 합니다.
각 클라이언트와 ZooKeeper 클러스터 사이에 세션이 설정되어 연결 상태를 유지하고 임시 노드를 관리합니다. ZooKeeper는 하트비트 메커니즘을 통해 클라이언트의 연결 상태를 감지합니다. 일정 시간 동안 하트비트가 수신되지 않으면 세션 연결이 끊어진 것으로 간주됩니다.
각 노드의 데이터 일관성을 보장하기 위해 ZooKeeper는 데이터 동기화 메커니즘을 채택합니다. Leader 노드가 쓰기 요청을 처리하면 모든 Follower 노드에 변경 작업을 보냅니다. Follower 노드는 변경 작업을 수락한 후 확인하고 최종적으로 Leader 노드는 변경 작업의 성공 여부를 결정합니다.
ZooKeeper는 Watch 메커니즘을 지원합니다. 클라이언트는 지정된 znode에 Watch를 등록할 수 있습니다. znode의 데이터 또는 하위 노드가 변경되면 ZooKeeper가 클라이언트에 알립니다.
ZooKeeper는 ZAB(Zookeeper Atomic Broadcast)라는 일관성 프로토콜을 사용하여 데이터 일관성을 보장합니다. ZAB는 선거 단계와 방송 단계의 두 단계로 구성됩니다.
ZooKeeper 클러스터가 시작되거나 리더 노드가 실패하면 새 리더를 결정하기 위해 선택이 필요합니다. 선거단계는 크게 다음과 같은 단계로 나누어집니다.
리더가 결정되면 브로드캐스트 단계가 시작됩니다. 리더는 클라이언트의 쓰기 요청을 처리하고 변경 작업을 모든 팔로어 노드에 브로드캐스팅하는 역할을 담당합니다. 구체적인 단계는 다음과 같습니다:
다음은 ZooKeeper를 사용하는 간단한 예로서 노드 생성, 노드 데이터 읽기 및 Watch 등록 방법을 보여줍니다.
존재하다 pom.xml
ZooKeeper 클라이언트 종속성을 도입합니다.
xml코드 복사