본문 바로가기

Thinking/Study

Apache ZooKeeper

728x90

Apache ZooKeeper


: W3ii.com 에 있는 ZooKeeper 가이드 문서(http://www.w3ii.com/zookeeper/zookeeper_overview.html) 주요 내용을 발췌해보았습니다. 더불어 타 사이트에서 본 내용을 정리해보려고 합니다.


Distributed Applications 에서 고민해야할 사항들

- Race condition 

- Deadlock

- Inconsistency


ZooKeeper 는 race condition 과 deadlock 를 "fail-safe synchronization approach" 를 사용해 처리한다. data inconsistency 도 "atomicity" 로 해결한다.


ZooKeeper 의 이점(benefits)

- 단순한 분산 조정 처리

- 동기화 : 상호 배제(mutual exclusion) 과 서버 프로세스 간 협력

- 순서화된 메시지

- 직렬화 : 데이터를 특정 규칙을 따르도록 인코딩한다. 응용 앱이 지속적으로 실행되도록 한다.

- 신뢰성

- 원자성(atomicity) : 데이터 전송이 트랜잭션 일부가 아니라 완전히 성공하거나 실패한다.


구성 요소

- 쓰기(Write) : 쓰기 처리는 리더(Leader) 노드에 의해 처리된다. 리더는 쓰기 요청을 모든 znode 에 전달하고 응답을 기다린다. znode 의 응답이 절반이 되면 쓰기 처리는 완료된다.

- 읽기(Read) :  읽기는 특정 연결된 znode 에 의해 내부에서 수행되어서 클러스터와 상호 작용이 필요없다.

- 복제된 데이터베이스(Replicated Database) : ZooKeeper 에서 데이터를 저장하기 위해 사용된다. 각 znode 는 자신의 데이터베이스를 가지고 모든 znode 는 일관성의 도움으로 매 시간마다 동일한 데이터를 가진다.

- 리더(Leader) : 쓰기 요청(write request) 처리를 책임지는 znode 이다.

- 팔로워(Follower) : 클라이언트에서 쓰기 요청을 받아사 리더에게 전달한다.

- 요청 프로세스(Request Processor) : 리더 노드에만 존재한다. 팔로워 노드의 쓰기 요청을 적용한다.

- 원자 브로드캐스트(Atomic broadcasts) : 리더 노드에서 팔로워 노드로 변경 내용을 브로드캐스팅하는 책임이 있다.


활용 분야

분산 locking, 동적 configuration 관리, 마스터 선출(election), 메시지 큐, ...


설정 예제

# wget http://apache.tt.co.kr/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

# ls

# tar xvfz zookeeper-3.4.9.tar.gz

# cd zookeeper-3.4.9/

# vi zoo_sample.cfg

# cp zoo_sample.cfg zoo.cfg

# vi zoo.cfg

# bin/zkServer.sh

# bin/zkServer.sh start

# bin/zkServer.sh stop

# bin/zkServer.sh  --server localhost:2181

# bin/zkServer.sh start

# ls bin

# bin/zkCli -server 127.0.0.1:2181

# bin/zkCli.sh -server 127.0.0.1:2181

# vi conf/zoo.cfg

    bin/zkCli.sh -server 127.0.0.1:2181


참고 :

http://www.w3ii.com/zookeeper/zookeeper_overview.html

'Thinking > Study' 카테고리의 다른 글

[내용 정리] 토비의 봄 TV 1회 Double dispatch example  (0) 2017.11.17
JAVA 8 에서 추가된 forEach 문 사용 예제  (0) 2017.11.15
패턴 정리  (0) 2015.08.24
python 출력 테스트  (0) 2015.08.21
Professional C# 5.0 and .NET 4.5.1  (0) 2015.05.14