* 주키퍼의 Origin
– Yahoo 에서 개발
– Pig 처럼 많인 프로젝트가 동물 이름이었고, 이러한 시스템들은 동물원의 동물과 같다고 느낌 -> 사육사(Zookeeper)
* 주키퍼가 사용된 예
– HBase : 클러스터 마스터 선출과 가용 서버들의 목록을 저장 / 클러스터 메타데이터 관리
– Kafka : 장애 감지/ 토픽 발견/ 토픽 생성 소모 상태를 관리
– Solr : 솔라클라우드에서 클러스터의 메타데이터 저장, 업데이트 관리
– Facebook message : 샤딩/ 장애복구/ 서비스발견을 관리
– Druid : 내부 통신에 이용
* 주키퍼 모드
– Standalone : 단독 서버, 복제 안됨
– quorum(쿼럼)
* Znode
– 용량제한 1MB
– ACL(접근권한관리)를 할 수 있다
– 주키퍼는 모든 데이터를 메모리에서 관리하기 때문에 Znode역시 메모리에 올라간다
– child 또는 바이트 배열의 데이터를 저장한다
* Znode Mode
– Persistent Node : 명시적인 삭제 명령(delete)이 있기 전까지 계속 유지되는 Node
– Ephemeral Node : Node를 생성한 ‘세션’ 이 유효한 동안에만 유지되는 Node. Ephemeral 는 child znode를 가질수 없다.
– Sequence Node : (위의 2개의 노드는 각각 이 타입을 사용 할 수 있다)
생성지 Sequence가 자동으로 붙는 Node (ex task-00000001) 유일한 이름을 보장 / 생성 순서 확인 가능
* Watch
– 1회성 작업이다. 계속 노티를 받으려면 클라이언트에서 매번 새로운 watch를 설정해야한다.
: so, 알림을 받고 새로운 watch를 등록하려는 순간에 새로운 변경사항이 발생 할 수 있다.
이 다음 새로 watch를 등록하면서 값을 읽기 때문에 놓치지는 않는다.
– 클라이언트가 감시하는 znode의 변경 사항의 ‘순서’를 보장해준다
– 데이터 변경/ Child변경 등에 따라 다른 종류의 알림을 생성한다.
* 쿼럼의구성
– 1. server.1=127.0.0.1:2222:2223
server.n각 항목은 서버 n이 사용하는 주소, 포트를 지정한다.3개의 필드
첫번째 필드는 서버 주소, 2,3번째 필드는 쿼럼 통신, 리더 선출에 사용하는 TCP포트이다.
– 서버가 시작할때 주키퍼는 data 디렉토리의 myid 파일에 있는 내용을 읽어서 자신의 ID를 인식한다