Zookeeper
Zookeeper는 Zookeeper 단독으로도 사용되지만, 하둡이나 카프카 등 여러 다른 시스템들과 함께 활용되고 있지만
저의 경우에는 Zookeeper 자체에서 어떤 기능들을 제공하는지 조차 모르고 사용하기도 했습니다.
그래서 조금씩 파악중이며 조금씩 수정해갈 예정입니다.
Zookeeper는 기본적으로
메타 저장소
데이터 변화 감시를 위한 Watcher
데이터 snyc 혹은 분산 어플리케이션을 위한 lock 제공
간단한 설정을 통한 클러스터 지원
와 같은 기능들을 제공하며(이것 말고도 많겠지만)참고로 메타는 각 노드에 저장되며, 노드는 트리구조로 되어있고, 트리를 쉽게 접근할수 있도록 파일시스템과 같이 접근할 수 있습니다(/data/node1/info).
그리고 노드도 여러가지 종류들을 제공합니다.
- Ephemeral Nodes
- 세션동안 유지되는 노드, 연결이 끊어지면 삭제
- Sequence Nodes
- 고유명을 위한 노드
- Container Nodes
- 락을 위한 노드(3.5.3에 추가됬다고 하는데 사용을 아직 못해봤네요)
- TTL Nodes
- 마찬가지로 3.5.3에 추가
- Ephemeral Nodes
분산 어플리케이션들은 보통 Zookeeper의 클라이언트가 되고, Connection을 지속적으로 유지하고 있습니다.
Zookeeper에서 데이터 변화 감지를 위해 Watcher를 제공하기 때문에 polling을 하며 감시 할 필요 없이
동작만 CallBack 코드만 작성해 두면 되기에 훨씬 간결해 질 수 있습니다.
Watcher의 경우 노드 하나 변화에 Wacher를 설정할 수 있고, 노드 하위에 변화에도 대해 설정 할 수 도 있습니다.
- 데이터 변화에 대한 Watcher
- get -w /data
- 데이터 하위 생성에 대한 Watcher
- ls -w /data
Zookeeper를 활용하여 할수 있는 것들은 많겠지만
일단 간단하게 구현 해본 부분은 "분산 어플리케이션에서 서로의 노드 추가 삭제 감지 에 따른 동작"
상위 Node를 하나 생성하고, 어플리케이션마다 하위에 ephemeral + sequence Node를 생성하고
서로 상위 Node를 Watcher 하게 하면
간단히 분산 어플리케이션에서 어플리케이션 변화를 감지 할 수 있고
Watcher 코드에 대응되는 동작을 넣는것으로 간단히 "분산 어플리케이션 상황에서 각 어플리케이션 감지 및 동작" 을 처리 할 수 있습니다.
해당 글은 Zookeeper를 살펴보거나 사용할 때 마다 기록을 위해 업데이트 할 예정입니다.
'Server' 카테고리의 다른 글
[Oracle] auto commit error (0) | 2020.07.29 |
---|---|
[Kafka] 토픽 삭제 후, 브로커 기동안됨 (0) | 2020.06.24 |
Nginx Service 로 등록 (0) | 2014.08.13 |
Jconsole (톰캣 모니터링,자바 모니터링) (0) | 2014.08.12 |
Varnish 설치 Centos, FreeBSD (0) | 2013.10.30 |