BaeBox

Znode 는 무엇인가? 본문

개발 관련

Znode 는 무엇인가?

배모씨. 2019. 10. 21. 13:51
반응형

※ 주의. 솔직히 나도 제대로 이해하고 있는지 잘 모르겠음. 반드시 다른 글과 교차대조 하면서 볼 것!! 

※ 주의. 내 글 보고 zookeeper를 잘못 이해해도 책임 안 짐.

 

앞선 글에 zookeeper 는 분산 어플리케이션을 구성하기 쉽게 도와주는 서비스(솔직히 난 서비스라는 말 어렵더라. 그냥 도구라고 하자) 라고 설명한 바 있다.

zookeeper 는 그런 기능을 어떤 방식으로 제공하고 있는 걸까?

znode 를 설명하기 위해서는 zookeeper 의 데이터 모델을 알아야한다.

zookeeper 의 구성도

znode는 클러스터를 구성하고 있는 각각의 서버(컴퓨터)를 뜻한다.

조금 삼천포로 새서 예를 하나 들어보겠다.

당신은 군인이다. 갓 입대한 짬찌이다. 행보관이 청소하라고 시켰는데 빗자루가 하나밖에 없다. 근데 일할 사람은 넷이다. 내 장담하는데 한 명 일하고, 셋은 옆에서 논다고 누가 안 갈굴까 안절부절하면서 멀뚱멀뚱 남 청소하는거 쳐다보고 있을거다. 아니면, 그 중 힘센놈이 '너 딴거해' 하면서 빗자루 뺏어서 지가 청소하던가. (이것이 선점)

어쨌든, 혼자 일하느니 못한 상황을 막기 위해서는 관리자가 필요하다. 우리는 그것을 leader 라고 부른다. 

znode 중에서도 leader 가 있다. zookeeper 가 알아서 선출해준다. 아래 글에 어떻게 선출해주는지 나와있다. 난 안 읽어봤다. 

https://www.outbrain.com/techblog/2011/07/leader-election-with-zookeeper/

 

Leader Election with Zookeeper | Outbrain Tech Blog

Zookeeper maintains an active connection with all its clients using a heartbeat mechanism. Zookeeper keeps a session for each active client

www.outbrain.com

어쨌든, leader 노드의 역할은 우리가 생각하는 일반적인 리더의 역할과 같다. 보고받고 일시키고 뭐 그런거다. 알릴 사항이 있으면 다른 노드에 알리면서(broadcast) 모든 znode 의 데이터를 동일하게 유지한다. 

The name space provided by ZooKeeper is much like that of a standard file system. => zookeeper 가 제공하는 name space 가 파일 시스템과 비슷한 기능을 제공한다는 것은 알겠다. 근데 그게 대체 무슨 소리야 ㅋㅋㅋㅋㅋㅋ

일단 내가 (약식으로)이해한 것은 이렇다.

zookeeper 가 구성한 클러스터 내에서 파일 시스템을 구성

zookeeper 는 zookeeper 클러스터 내에서 동작하는 일종의 파일 시스템을 제공한다. 그리고 이 파일시스템은 리눅스마냥 slash(/) 로 경로(path)를 구분한다. zookeeper 서비스 내부의 각 노드는 이 경로명을 통해 구분된다. 

앞서 쓴 글에 이런 내용이 있었다. 추측컨대 Namming service 를 이용하는 방식인 것 같다.

 

* 아래 노드의 설명 참조(https://www.slideshare.net/sunnykwak90/apache-zoo-keeper)

 

zookeeper 는 기본적으로 두 가지 타입의 노드를 가진다.

  • Persistent Node (영구 노드)
    • 명시적으로 삭제되기 전까지 존재
  • Ephemeral Node (임시 노드)
    • 세션이 유지되는 동안 존재
    • 자식 노드를 가질 수 없다

옵션으로 영구/임시 노드 모두 Sequential node (순차 노드)로  만들 수 있다. 이는 경로의 끝에 일정하게 증가하는 카운터를 추가하는 것이다. 

 

*정리

znode는 클러스터를 구성하고 있는 각각의 서버(컴퓨터)를 뜻한다.

zookeeper service 는 일종의 파일 시스템을 제공한다. 그 구분은 node 의 이름으로 한다. 

znode 는 영구/임시 두 가지로 나뉜다. 

반응형

'개발 관련' 카테고리의 다른 글

Apache Storm  (0) 2019.10.21
사전지식  (0) 2019.10.21
Zokeeper  (0) 2019.10.21
분산 어플리케이션(Distributed app/system)  (0) 2019.10.21
Matrix ( transformation)  (0) 2019.10.21
Comments