분산 작업 제어 트리 형태의 데이터 저장소
- 분산된 어플리케이션들을 위한 분산 Coordination 서비스입니다.
- Coordination이란 다양한 노드가 함께 잘 어울릴 수 있도록 동작하도록 조정하는 행위
Zookeeper의 Cluster를 Ensemble(앙상블)이라 부름.
위 Zookeeper 클러스터는 자동으로 Leader를 선정하며 이 Leader는 데이터 저장을 주도합니다.
클라이언트가 Follower 노드로 데이터 저장 요청이 들어오면 Follower는 Leader에게 전달하고
Leader는 과반 이상의 Follower가 쓰기 가능한 상태가 되면 Follower에게 쓰기 명령을 한다.
반면, 데이터 읽기 요청은 어떤 노드(Leader or Followers)로 들어와도 즉시 데이터를 리턴한다.
클라이언트는 단일 Zookeeper 서버에 연결하고, TCP 연결을 유지합니다.
TCP 연결이 끊어지면 다른 서버에 연결을 시도합니다.
활용 용도
- 분산 서버간의 정보 공유
- 서버 투입 / 제거 시 이벤트 처리
- 서버 모니터링
- 시스템 관리
- 분산 락 처리
- 장애 상황 판단
- 데이터 변경을 감시
위 활용도 중에 데이터 변경 감시를 위한 Watcher 활용도가 가장 높습니다.
데이터가 변경되면 Data Polling없이 특정 Node에 등록되어 있는 Watcher의 콜백으로 알려줍니다..
그러나, 주의하셔야 할 것이 자주 변경되는 데이터를 감시하는 곳에는 사용하지 않는 것이 좋습니다.
Zookeeper가 버벅댑니다 ㅠ.ㅠ
Zookeepr가 데이터를 디렉토리 구조로 저장을 하고,
지속성(Persistent)을 위해 트랜잭션 로그, 스냅샷 파일을 디스크에 저장을 합니다.
서버를 재시작을 해도 서비스가 유지되도록 하기 위합니다.
또한, 중요한 기능 중에 하나는 노드별 ACL(Access Control List)를 제공해줍니다.
Zookeeper와 같은 코디네이션 시스템은 중요한 상태 정보나 설정 정보를 유지하기 때문에 시스템에 망가지면 전면 장애로 이어지는 경우가 발생할 수 있어서 적어도 이중화를 유지하여 고가용성을 유지합니다.
그러다 보니, Zookeeper를 유지함에 있어서 물리적으로는 시스템 낭비가 심한 경우에 포함이 되죠.
다만, 하나의 클러스터를 구성하여 여러 어플리케이션이 사용하면 시스템 낭비를 줄일 수 있는데,
여기서 문제점은 여러 어플리케이션이 여러 노드에 접근 가능하여 오히려 보안성에 문제가 발생할 수 있는데
이럴 경우에는 ACL 기능을 사용하면 좋겠습니다.
'IT > 개념' 카테고리의 다른 글
[웹 2.0] 소개 (0) | 2008.05.22 |
---|---|
Mash-up 이란... 오십세주 (0) | 2008.02.18 |