Gidhub BE Developer

주키퍼(Zookeeper)

2019-11-22
goodGid

이 글의 코드 및 정보들은 을 바탕으로 작성하였습니다.

주키퍼(Zookeeper)

  • 주키퍼는 분산 애플리케이션을 위한 코디네이션 시스템이다.


  • 분산 애플리케이션이

    안정적인 서비스를 할 수 있도록

    분산되어 있는 각 애플리케이션의 정보를

    중앙에 집중하고 구성 관리, 그룹 관리 네이밍, 동기화 등의 서비스를 제공한다.


  • 주키퍼는 위 그림처럼

    서버 여러 대를 앙상블(클러스터)로 구성한다.


  • 분산 어플리케이션들이 각각 클라이언트가 되어

    주키퍼 서버들과 커넥션을 맺은 후 상태 정보 등을 주고받는다.


지노드(Znode)

  • 상태 정보들은 주키퍼의 지노드(Znode)라 불리는 곳에

    Key-Value 형태로 저장된다.


  • 지노드에 Key-Value 저장된 값을 이용하여

    분산 애플리케이션들은 서로 데이터를 주고 받게 된다.


  • 주키퍼에서 사용되는 지노드는

    데이터를 저장하기 위한 공간 이름을 말한다.

    파일이나 폴더 개념이라 생각하면 된다.


  • 일반적으로 지노드에 저장되는 데이터 크기는

    바이트(Byte) 에서 킬로바이트(Kilobyte) 정도로 매우 작다.


  • 지노드는 일반적인 디렉토리와 비슷한 형태의 계층형 구조이다.

  • 주키퍼의 각 지노드는

    데이터 변경 등에 대한 유효성 검사등을 위해

    버전 번호를 관리하게 되며

    지노드의 데이터가 변경될 때마다 지노드의 버전 번호가 증가한다.


서비스 이용 조건

  • 주키퍼는 신뢰성 있는 서비스를 위해

    앙상블(클러스터)이라는 호스트 세트로 구성이 가능하다.

  • 앙상블로 구성되어 있는 주키퍼는

    과반수 방식에 따라 살아 있는 노드 수가 과반수 이상 유지된다면 지속적인 서비스가 가능하다.

Case 1.

  • 앙상블을 3대로 구성

  • 1대의 노드가 다운되더라도

    과반수 이상(2) 살아 있기 때문에 지속적인 서비스 이용이 가능하다.

Case 2.

  • 살아 있는 노드의 수가

    과반수가 안되기 때문에 서비스 장애 상태에 빠진다.

Case 3.

  • 2대 노드까지 다운되더라도

    과반수 이상 살아있기 때문에 서비스 이용이 가능하다.


Reference


Recommend

Index