주키퍼란?
- 분산 코디네이션 서비스 제공
- 코디네이션 서비스는 분산 시스템 내에서 중요한 상태정보를 유지하기 때문에 고가용성을 제공해야함
- 서버와 클라이언트로 구성
- 서버앙상블 : n개 서버로 단일 주키퍼 클러스터 구성
- 클라이언트 : 앙상블에 속한 서버에 연결하여 서비스 사용
주키퍼 아키텍처
- znode는 데이터를 저장할 수 있는 디렉토리 구조를 제공하며, 디렉토리와 비슷한 구조로 byte[]형태의 정보를 저장
- Persistent Node : 노드에 데이터를 저장하면 일부러 삭제하지 않는 이상 삭제되지 않고 영구히 저장
- Ephemeral Node : 노드를 생성한 클라이언트의 세션이 연결되어 있을 경우만 유효, 즉 클라이언트 연결이 끊어지는 순간 삭제 -> 이를 통해 클라이언트가 연결되어있는지 아닌지 판단
- Sequence Node : 노드를 생성할 때 자동으로 Sequent 번호가 붙는 노드
- Watcher는 클라이언트가 znode에 watch를 걸어 놓으면 해당 znode가 변경이 되었을 때 클라이언트로 callback호출을 날려서 클라이언트에 해당 znode가 변경되었음을 알려주고 해당 watcher는 삭제됨
- 클라이언트들은 주키퍼서버들로 이루어진 앙상블에 접근하여 znode의 데이터를 읽거나 씀
- 쓰기 과정
- 클라이언트가 특정 서버로 접속하여 데이터 업데이트
- 업데이트 된 서버는 leader 서버에 그 데이터를 알리고 업데이트
- leader 서버는 그정보를 나머지 follower 서버들에게 broadcast
- 그 정보를 받은 follower 서버들도 데이터 업데이트
특징
- https://d2.naver.com/helloworld/583580
- https://www.slideshare.net/madvirus/zookeeper-34888385
- 과반 정족수 이상 서버 다운시, 서비스 중지
- ex) 2대 중 1대 다운되면 서비스 중지
- 이런 이유로 서버 개수는 홀수로 맞춤 (3, 5 등)
- 데이터 변경시 성공 기준
- leader 서버가 트랜잭션 생성 후 다른 서버에 전파할 때, 과반 정족수 이상 트랜잭션 성공하면 클라이언트에 변경 성공 결과 리턴
'Apache' 카테고리의 다른 글
[설치] 암바리 설치 (Ambari install on CentOS7) (0) | 2019.12.30 |
---|