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
참고 :
'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 |