Zookeeper

Server|2019. 12. 9. 19:04

Zookeeper는 Zookeeper 단독으로도 사용되지만, 하둡이나 카프카 등 여러 다른 시스템들과 함께 활용되고 있지만

저의 경우에는 Zookeeper 자체에서 어떤 기능들을 제공하는지 조차 모르고 사용하기도 했습니다.

그래서 조금씩 파악중이며 조금씩 수정해갈 예정입니다.

Zookeeper는 기본적으로

  • 메타 저장소

  • 데이터 변화 감시를 위한 Watcher

  • 데이터 snyc 혹은 분산 어플리케이션을 위한 lock 제공

  • 간단한 설정을 통한 클러스터 지원
    와 같은 기능들을 제공하며(이것 말고도 많겠지만)

    참고로 메타는 각 노드에 저장되며, 노드는 트리구조로 되어있고, 트리를 쉽게 접근할수 있도록 파일시스템과 같이 접근할 수 있습니다(/data/node1/info).

    그리고 노드도 여러가지 종류들을 제공합니다.

    • Ephemeral Nodes
      • 세션동안 유지되는 노드, 연결이 끊어지면 삭제
    • Sequence Nodes
      • 고유명을 위한 노드
    • Container Nodes
      • 락을 위한 노드(3.5.3에 추가됬다고 하는데 사용을 아직 못해봤네요)
    • TTL Nodes
      • 마찬가지로 3.5.3에 추가

분산 어플리케이션들은 보통 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

댓글()