Zookeeper 정리
기본
분산 환경을 통해 얻을 수 있는 장점
멀티 프로세서
스케일 아웃
분산 환경에서 생길 수 있는 문제점
추가적인 코디네이션 서비스 구축 필요
경합, 협력의 문제
네트워크상에서 이루어짐
메세지 지연
프로세서 속도
클럭 드리프트
주키퍼를 사용해 얻을 수 있는 것
견고한 일관성, 순서, 내구성 보장
synchronization primitive 구현 제공
동시성 관련 문제에 대한 솔루션 제공
마스터-워커 아키텍쳐
생길 수 있는 장애
마스터 장애
워커 장애
통신 장애
요구사항
마스터 선출 기능
워커 상태 탐지 기능
사용 가능한 워커 리스트 관리 기능
메타데이터 관리 기능
znode
파일 시스템과 유사하게 이루어진 트리구조 각 노드는 persistent(세션이 만료되어도 znode는 보존됨)하거나 ephemeral(세션이 만료되면 삭제됨)하며, 또한 sequential(새롭게 생성되는 노드의 뒷부분에 순차 번호를 할당) 할 수 있다. 생성 삭제 등에 대한 API가 제공되고, 이는 레시피를 통해서 구현됨.
Notification
주키퍼에서는 polling 대신에 watch를 등록하여 변경사항이 발생하면 Notification을 받도록 함.
1회성 작업. get 작업으로 매번 다시 watch를 등록해야 함.
Global order으로 변경 사항의 순서 보존
Version
데이터의 변경마다 버전이 증가
쓰기 작업을 할 때, 자신의 버전과 서버의 버전이 다르다면 실패함
주키퍼 아키텍쳐
단독 - 단독 서버로 구성됨
쿼럼
다수의 서버 그룹(쿼럼)으로 구성됨
변경이 이루어 질 때, 한 서버에서 일어난 변경은 앙상블 내의 다른 서버로 전파되어 복제되는데 쿼럼은 이러한 복제가 이용가능한 수준까지 이루어졌다는 최소 기준
짝수로 할 때보다 홀수로 할 때 서버 장애 허용 범위가 커짐
Last updated