분산 시스템을 설계 시 발생되는 문제점

- 분산된 시스템간의 정보를 어떻게 공유할것이고, 

- 클러스터에 있는 서버들의 상태를 체크할 필요가 있으며 

- 분산된 서버들간에 동기화를 위한 락(lock)을 처리하는 것



=> 이러한 문제를 해결하는 시스템을 코디네이션 서비스 시스템 (coordination service)라고 하는데, 

Apache Zookeeper가 대표적

- Zookeeper는 자체적으로 클러스터링을 제공하며, 장애에도 데이타 유실 없이 fail over/fail back이 가능.



코디네이션 서비스는 분산 시스템 내에서 중요한 상태 정보나 설정 정보 등을 유지하기 때문에, 

코디네이션 서비스의 장애로 인한 전체 시스템의 장애를 유발하는 경우

이중화 등을 통하여 고가용성을 제공해야 함



ZooKeeper는 이러한 특성을 잘 제공하고 있는데, 

그런 이유로 이미 유명한 분산 솔루션에 많이 사용되고 있다. 

NoSQL의 한종류인 Apache HBase, 대용량 분산 큐 시스템인 Kafka등이 그 대표적인 사례.


분산 시스템을 코디네이션 하는 용도로 디자인이 되었기 때문에, 

- 데이타 엑세스가 빨라야 하며, 

- 자체적으로 장애에 대한 대응성을 가져야 함



Apache Zookeeper의 기능

- 디렉토리 구조기반으로 znode라는 데이타 저장 객체를 제공하고, (key-value식). 

 . 이 객체에 데이타를 넣고 빼는 기능만을 제공

 . 디렉토리 형식을 사용하기 때문에 데이타를 계층화된 구조로 저장하기 용이.




데이타 모델

- 디렉토리 구조의 각 노드에 데이타를 저장




노드는 아래와 같이 기능에 따라 몇가지 종류로 나뉘어 지는데 



Persistent Node : 노드에 데이타를 저장하면 일부러 삭제하지 않는 이상 삭제되지 않고 영구히 저장된다.


Ephemeral Node : 노드를 생성한 클라이언트의 세션이 연결되어 있을 경우만 유효하다. 즉 클라이언트 연결이 끊어지는 순간 삭제 된다. 이를 통해서 클라이언트가 연결이 되어 있는지 아닌지를 판단하는데 사용할 수 있다. (클러스터를 구성할때 클러스터내에 서버가 들어오면, 이 Ephemeral Node로 등록하면 된다.)


Sequence Node : 노드를 생성할때 자동으로 sequence 번호가 붙는 노드이다. 주로 분산락을 구현하는데 이용된다.



Watcher

Watch 기능은 ZooKeeper 클라이언트가 특정 znode에 watch를 걸어놓으면, 해당 znode가 변경이 되었을때, 클라이언트로 callback 호출을 날려서 클라이언트에 해당 znode가 변경이 되었음을 알려준다. 그리고 해당 watcher는 삭제 된다. 



출처: http://bcho.tistory.com/1016 [조대협의 블로그]

'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글

Jenkins [제킨스]  (0) 2018.11.28
빌드란? 그리고 Jenkins(젠킨스)란? 써야 하는 이유  (0) 2018.11.28
Redis cluster  (2) 2018.11.20
DB 분류 및 종류  (0) 2018.11.20
REDIS( REmote DIctionary Server)  (0) 2018.11.20

+ Recent posts