내 잡다한 노트

zookeeper의 watcher 기능 본문

분산시스템/Zookeeper

zookeeper의 watcher 기능

peanutwalnut 2025. 2. 9. 15:58

ZooKeeper에서 Watcher 기능은 클라이언트가 특정 znode의 상태(데이터, 존재 여부, 자식 노드 변화 등)를 감시하고, 해당 상태에 변화가 생겼을 때 이벤트를 받아 처리할 수 있도록 해줍니다. Watcher는 일회성(one-time)으로 동작하기 때문에, 한 번 트리거되면 자동으로 해제되며, 지속적인 감시가 필요하다면 이벤트 발생 후 다시 등록해야 합니다.

 

ZooKeeper에서 특정 znode에 Watcher 기능을 설정하려면, 해당 znode에 대한 조회(존재 여부, 데이터, 자식 노드 등)를 수행하는 API 호출 시 Watcher를 함께 등록하면 됩니다. ZooKeeper API에서는 주로 아래 세 가지 메서드를 통해 Watcher를 설정할 수 있습니다.

  • exists(String path, Watcher watcher)
    → 지정한 경로의 znode의 존재 여부를 조회하면서, 해당 노드의 생성, 삭제 등 상태 변경 이벤트를 감시합니다.
  • getData(String path, Watcher watcher, Stat stat)
    → znode의 데이터를 읽으면서, 데이터 변경이나 삭제 이벤트를 감시합니다.
  • getChildren(String path, Watcher watcher)
    → znode의 자식 목록을 조회하면서, 자식 노드의 추가, 삭제 등 이벤트를 감시합니다.

 

ZooKeeper에서 Watcher 기능은 서버 측 설정이 아니라 클라이언트 측 코드에서 등록하는 기능입니다. 즉, ZooKeeper 클러스터 자체에 Watcher를 설정하는 별도의 설정 파일이나 콘솔 명령이 있는 것이 아니라, 클라이언트 애플리케이션 내에서 API 호출 시 Watcher 객체를 함께 전달해서 구현해야 합니다.

예를 들어, Java 클라이언트를 사용한다면 exists(), getData(), getChildren()와 같은 메서드 호출 시 Watcher를 인자로 넘겨줌으로써 특정 znode의 상태 변화를 감지할 수 있습니다. 이처럼 Watcher 등록은 클라이언트 코드의 일부로 작성되어야 하며, 서버나 외부 설정으로 별도로 지정할 수 있는 기능은 제공되지 않습니다.

'분산시스템 > Zookeeper' 카테고리의 다른 글

아파치의 분산 코디네이션 서비스 Zookeeper  (0) 2025.02.09