728x90
반응형
분산 시스템이란?: 네트워크를 통해 여럿의 컴퓨터에서 돌아가는 시스템
분산 시스템에서의 잇슈
- 분산된 시스템 간의 정보 공유?
- 클러스터에 있는 서버들의 상태 체크?
- 분산된 서버들 간에 동기화를 위해 잠금(Lock)?
Zookeeper - 코디네이션 서비스 시스템(Coordination Service)
주키퍼 기능
- 분산 환경에서 노드 간에 조정자 역할을 수행하는 서비스
- 노드 간 정보 공유, 잠금, 이벤트 등의 기능 수행
- 여러 개의 노드에 작업을 분산시켜주는 부하 분산 기능 제공
- 서버에서 처리된 결과를 다른 서버에게 동기화 할때 잠금(Lock) 처리 수행
- 서버 장애 시 대기 서버가 기존 서버를 대신 처리할 수 있도록 장애 상황 판단 및 복구
- 주키퍼는 관리 데이터를 메모리상에 유지함
Zookeeper 아키텍처
- ZooKeeper는 기본적으로 복수 개의 ZooKeeper 서버의 집합인 Ensemble로 구성
- Ensemble은 leader-follower 구조를 사용하며, Leader가 Follower에게 동기화 명령을 내림
(위 그림에서 Server는 주키퍼, Client는 카프카)
서버 여러 대를 앙상블(클러스터)로 구성하고, 분산 어플리케이션들이 각각 클라이언트가 되어 주키퍼 서버들과 커넥션을 맺은 후 상태 정보 등을 주고 받는다.
쿼럼(Quorum)
- 단어의미: 합의체가 의사를 진행시키거나 의결을 하는 데 필요한 최소한도의 인원 수
- 주키퍼: 주키퍼 앙상블을 이루고 있는 모든 서버 중 과반수 서버로 이루어진 그룹을 말함. 5대의 앙상블일 때 정상적인 서버 3대를 쿼럼이라고 함
트랜잭션 처리
- Leader에게 Request 전달
- 새로운 트랜잭션 요청이 Follower에게 도착하였을 경우, Follower는 Leader에게 요청을 전달
- Propose
- Propose는 Leader가 Quorum을 구성하는 서버들에게 트랙잭션을 수행해도 되는지 여부를 요청하는 과정을 의미
- Ack
- Quorum을 구성하는 서버들은 Leader로 부터 Propose 요청을 받으면, 트랙잭션을 수행해도 된다는 Ack 응답을 Leader에게 전송
- Commit
- 모든 Quorum으로 부터 Ack를 받으면, Leader는 트랙잭션을 처리하라는 Commit 명령을 broadcast 형태로 모든 Follower에 전파한다. ZooKeeper에서는 Commit 명령을 전달할 때, ZAB(ZooKeeper Atomic Broadcast) 알고리즘을 사용한다. Atomic Broadcast는 broacast 방식 중 하나로, 멀티 프로세스 시스템에서 모든 프로세스에게 동일한 순서로 메시지가 전달된다는 것을 의미한다.
이러한 과정을 도식화한 그림은 아래와 같다
Watch 기능
- 주키퍼 클라이언트가 특정 znode에 watch를 걸어 놓고 해당 znode가 변경되었음을 클라이언트에 알려줌
- 해당 znode가 변경되었을 때 클라이언트로 callback 호출을 날림
Zookeeper 데이터 모델
ZNODE
- 디렉토리(트리) 구조 기반의 데이터 저장소
- znode는 데이터(상태, 구성 및 위치 정보 등)가 저장된 객체를 제공함(key-value)
- ZNode는 최대 1MB의 데이터를 저장할 수 있음
노드 종류
Persistent Node
- 노드에 데이터를 저장하면 삭제하지 않는 이상 영구히 저장되는 노드
- 트랜잭션 로그, 스냅샷, 상태 이미지 등을 유지함
Ephemeral Node
- 노드를 생성한 클라이언트의 세션이 연결되어 있을 경우만 유효하며, 연결이 끊어지는 순간 삭제됨
- 이를 통해서 클라이언트가 연결되어 있는지 아닌지 판단함
Sequence Node
- 노드를 생성할 때 자동으로 일련 번호가 붙는 노드
- 주로 분산 Lock을 구현하는데 사용
728x90
반응형
'Bigdata > Zookeeper' 카테고리의 다른 글
Zookeeper Mac 설치 및 실행 (0) | 2024.05.28 |
---|---|
Apache Curator Example & Description (0) | 2024.05.22 |