SlideShare a Scribd company logo
1 of 21
Download to read offline
Zookeeper 소개
최범균 (2014-05-23)
클러스터에 필요한 것
● 클러스터 구성원 관리
o 살았니? 죽었니?
o 누가 마스터?
● 클러스터 구성원 간 정보 공유
● 분산 서버의 동시 접근 제어
ZooKeeper 개요
● 분산 시스템을 위한 코디네이터
● 서버와 클라이언트로 구성
o 서버 앙상블: n개 서버로 단일 주키퍼 클러스터 구성
o 클라이언트: 앙상블에 속한 서버에 연결하여, 서비스
사용
● 서버 제공 서비스
o 데이터 스토리지 (영속 데이터/임시 데이터)
 클러스터 구성원 간 데이터 공유
o 데이터 변경 통지(Watch)
 클러스터 멤버십 관리
o 시퀀스 노드
 마스터, 분산 락 등에 활용
ZooKeeper 데이터 모델과 주요 기능
ZNode
● ZNode
o ZooKeeper는 계층형 네임스페이스를 가짐
o 계층의 각 노드를 ZNode라고 부름
 계층의 각 경로는 ‘/’로 구분
o znode는 데이터를 가질 수 있음 (byte[])
o znode는 자식 노드를 가질 수 있음
 예, /svc 노드는 /svc/nodes 노드를 가질 수 있음
● 영속 종류
o PERSISTENT: 클라이언트가 종료되도 유지
o EPHEMERAL: znode를 생성한 클라이언트의 연결이
끊기면 삭제
 자식 znode를 가질 수 없음
주요 오퍼레이션
● 주요 오퍼레이션
o create
o delete
o exists
o getChildren
o getData
o setData
● 언어 별 바인딩 제공
o Java, C, Python, Ruby, Scala 등
 https://cwiki.apache.org/confluence/display/ZOOKEEPER/ZKClientBindings
ZNode Watch
● znode의 변화를 통지 받음
● 오퍼레이션 실행시 Wacher 등록
o zk.getChildren(“/mysvc/nodes”, watcher)
ZK 서버클라이언트 클라이언트
Watcher 등록
변경 통지
znode 변경
ZNode Watch 이벤트 종류
Watch 생성
오퍼레이션
znode 생성 znode 삭제 자식 생성 자식 삭제 znode 값 변경
exists NodeCreated NodeDeleted NodeDataCha
nged
getData NodeDeleted NodeDataCha
nged
getChildren NodeDeleted NodeChildren
Changed
NodeChildren
Changed
Watch 특징
● 일회성 이벤트 수신
o 다시 Watch하고 싶으면 재등록해야 함
o 재등록 전에 발생한 변경은 수신하지 못함
● 상태 변경 요청한 클라이언트가 성공 코드를
받은 이후에, Watcher를 등록한 클라이언트
에 통지 됨
● ZooKeeper의 변경 순서대로 Watch 이벤트를
수신 함
시퀀스 노드
● 자식 노드가 생성한 순서에 따라 일렬 번호를
가짐
o 예, /svc 노드의 자식 노드로 /nodes를 시퀀스 노드로
생성하면 다음과 같은 순서로 노드 생성
 /svc/nodes0000000001
 /svc/nodes0000000002
o PERSISTENT와 EPHEMERAL에 모두 적용 가능
o 시퀀스 범위 (4 byte 정수)
 -2,147,483,647 ~ 2,147,483,647 (-21억~21억)
ZooKeeper 몇 가지 용도
그룹 관리: 자식 ZNODE, Watch
● 그룹 멤버십 목록을 가질 부모 znode 생성
○ 예: /members
멤버십 참여
● 부모 znode에 자신을 위한 자식 znode를
ephemeral로 생성
○ 예, /members/m-hostip
● 자식 znode 데이터는 다른 구성원이 자신과 통신
하는데 필요한 정보 저장 (예, ip/port 등)
멤버십 탈퇴
● 자신에 해당하는 자식 znode를 삭제
멤버십 목록, 주기적 갱신 (각 클라이언트)
● 주기적으로 getChildlen 실행해서 목록
갱신
멤버십 목록, Watch 이용 (각 클라이언트)
● 부모 znode에 getChildlen로 WATCH
등록하고, getChildlen 결과로 목록 갱
신
● NodeChildrenChanged 이벤트 수신 시,
위 과정 재실행
마스터 선출: 시퀀스 노드, WATCH
● 마스터 후보를 보관할 znode 생성
○ 예: /masters
마스터 후보 등록
● 부모 znode에 자신을 위한 자식 znode를 시퀀
스 & ephemeral로 생성
○ 예, /masters/m-0000000010
마스터 선출 (각 후보 클라이언트에서 진행)
● 부모 znode에 getChild로 WATCH 등록
● NodeChildrenChanged 이벤트 수신시,
현재 마스터가 없는 지 확인
● 마스터에 해당하는 자식 znode가 없으
면
○ 부모 znode에 자식 znode 를 구한
뒤 시퀀스 번호가 가장 작은
znode를 마스터로 선택
● 부모 znode에 getChild로 WATCH 등록
기타 용도
● 분산 락
o EPHEMERAL 사용
● 이벤트 통지
o WATCH 사용
● pub/sub
o SEQUENCE 사용
● 분산 카운터
o SEQUENCE 또는 znode의 version 사용
● 디렉토리 서비스
o 활성화된 서비스 목록 등 제공
ZooKeeper 동작 방식 개요
버전
● zxid: ZooKeeper Transaction ID
o 모든 변경은 고유 트랜잭션 ID를 가짐
o 순서를 가짐
● version
o znode가 변경될 때 마다 버전 값 증가
● cversion
o 자식 znode가 변경될 때 마다 버전 값 증가
서버와 클라이언트 연결
ZK클라이언트 ZK서버
ZK서버
ZK서버(리더)
ZK서버
ZK서버
ZK클라이언트
연결 유지를 위해
주기적으로 PING
전송
연결된 서버에서
읽기 실행
일정 시간 동안 클라이언트로
부터 PING이 없으면 세션 종료
처리
ZK클라이언트
연결된 서버에 변
경 요청
리더에 변경 요청을 전달
하면,
리더가 트랜잭션 생성 후,
전 노드에 전파
PING 전송 실패시,
다른 서버에 연결
Quorum: 가용성, 데이터 변경
● 과반 정족수 이상 서버 다운시, 서비스 중지
o 예, 2대 중 1대 다운되면 서비스 중지
o 이런 이유로 서버 개수는 홀수로 맞춤 (3, 5 등)
● 데이터 변경시 성공 기준
o 리더 서버가 트랜잭션 생성 후 다른 서버에 전파할 때,
과반 정족수 이상 트랜잭션 성공하면 클라이언트에
변경 성공 결과 리턴
일관성 보장
● Sequential Consistency: 변경 요청은 순서대
로 적용
● Atomicity: 변경은 성공 또는 실패
● Single System Image: 클라이언트는 연결한
서버에 상관없이 동일 서비스 사용
● Reliability: 클라이언트가 성공 코드를 받으면,
서버에 반영됨을 보장
● Timeliness: 클라이언트는 일정 시간내에 최
신 상태를 사용 (Eventual Consistency)
맺음말
믿고 쓸 만한 분산 코디네이터
● 다양한 오픈소스에서 채택
o Hadoop: 마스터(Name Node) 이중화
o HBase: 마스터 선출, 리전 데이터 공유 등에 사용
o Storm: 서버 간 데이터 공유 등에 사용
o Kafka: 클러스터 관리
o Neo4j: 마스터 선출에 사용

More Related Content

What's hot

Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxFlink Forward
 
ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!Guido Schmutz
 
All about Zookeeper and ClickHouse Keeper.pdf
All about Zookeeper and ClickHouse Keeper.pdfAll about Zookeeper and ClickHouse Keeper.pdf
All about Zookeeper and ClickHouse Keeper.pdfAltinity Ltd
 
ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱confluent
 
Prometheus - basics
Prometheus - basicsPrometheus - basics
Prometheus - basicsJuraj Hantak
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARK
 
Apache Kafka® Security Overview
Apache Kafka® Security OverviewApache Kafka® Security Overview
Apache Kafka® Security Overviewconfluent
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes IntroductionPeng Xiao
 
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...confluent
 
The Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersThe Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersSATOSHI TAGOMORI
 
Storing 16 Bytes at Scale
Storing 16 Bytes at ScaleStoring 16 Bytes at Scale
Storing 16 Bytes at ScaleFabian Reinartz
 
stupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdfstupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdfDaniloQueirozMota
 
Docker swarm introduction
Docker swarm introductionDocker swarm introduction
Docker swarm introductionEvan Lin
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요Jo Hoon
 
Stephan Ewen - Experiences running Flink at Very Large Scale
Stephan Ewen -  Experiences running Flink at Very Large ScaleStephan Ewen -  Experiences running Flink at Very Large Scale
Stephan Ewen - Experiences running Flink at Very Large ScaleVerverica
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)Hyunmin Lee
 

What's hot (20)

Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptx
 
ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!
 
All about Zookeeper and ClickHouse Keeper.pdf
All about Zookeeper and ClickHouse Keeper.pdfAll about Zookeeper and ClickHouse Keeper.pdf
All about Zookeeper and ClickHouse Keeper.pdf
 
Introducing Vault
Introducing VaultIntroducing Vault
Introducing Vault
 
ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱
 
Prometheus - basics
Prometheus - basicsPrometheus - basics
Prometheus - basics
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3
 
Apache Kafka® Security Overview
Apache Kafka® Security OverviewApache Kafka® Security Overview
Apache Kafka® Security Overview
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
kafka
kafkakafka
kafka
 
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...
 
The Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersThe Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and Containers
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Storing 16 Bytes at Scale
Storing 16 Bytes at ScaleStoring 16 Bytes at Scale
Storing 16 Bytes at Scale
 
stupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdfstupid-simple-kubernetes-final.pdf
stupid-simple-kubernetes-final.pdf
 
Docker swarm introduction
Docker swarm introductionDocker swarm introduction
Docker swarm introduction
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
Stephan Ewen - Experiences running Flink at Very Large Scale
Stephan Ewen -  Experiences running Flink at Very Large ScaleStephan Ewen -  Experiences running Flink at Very Large Scale
Stephan Ewen - Experiences running Flink at Very Large Scale
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
 

Viewers also liked

Apache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsApache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsSungMin OH
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기beom kyun choi
 
Kelompok 1 struktur aljabar
Kelompok 1 struktur aljabarKelompok 1 struktur aljabar
Kelompok 1 struktur aljabarYuli Sinaga
 
AWS Webcast - Amazon Kinesis and Apache Storm
AWS Webcast - Amazon Kinesis and Apache StormAWS Webcast - Amazon Kinesis and Apache Storm
AWS Webcast - Amazon Kinesis and Apache StormAmazon Web Services
 
빅데이터실습교육 소비분야 영남대_언론정보_20141117
빅데이터실습교육 소비분야 영남대_언론정보_20141117빅데이터실습교육 소비분야 영남대_언론정보_20141117
빅데이터실습교육 소비분야 영남대_언론정보_20141117Han Woo PARK
 
빅데이터분석실습 농산물중급분야 V0.9
빅데이터분석실습 농산물중급분야 V0.9빅데이터분석실습 농산물중급분야 V0.9
빅데이터분석실습 농산물중급분야 V0.9Han Woo PARK
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다민철 정민철
 
[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScienceNAVER D2
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기beom kyun choi
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for HadoopSeungYong Baek
 
Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기SangWoo Kim
 
Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습동현 강
 

Viewers also liked (13)

Apache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsApache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloops
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기
 
Kelompok 1 struktur aljabar
Kelompok 1 struktur aljabarKelompok 1 struktur aljabar
Kelompok 1 struktur aljabar
 
Mhug apache storm
Mhug apache stormMhug apache storm
Mhug apache storm
 
AWS Webcast - Amazon Kinesis and Apache Storm
AWS Webcast - Amazon Kinesis and Apache StormAWS Webcast - Amazon Kinesis and Apache Storm
AWS Webcast - Amazon Kinesis and Apache Storm
 
빅데이터실습교육 소비분야 영남대_언론정보_20141117
빅데이터실습교육 소비분야 영남대_언론정보_20141117빅데이터실습교육 소비분야 영남대_언론정보_20141117
빅데이터실습교육 소비분야 영남대_언론정보_20141117
 
빅데이터분석실습 농산물중급분야 V0.9
빅데이터분석실습 농산물중급분야 V0.9빅데이터분석실습 농산물중급분야 V0.9
빅데이터분석실습 농산물중급분야 V0.9
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다
 
[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
 
Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기
 
Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습
 

Similar to Zookeeper 소개

Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개중선 곽
 
A review of zookeeper 2010.12
A review of zookeeper 2010.12A review of zookeeper 2010.12
A review of zookeeper 2010.12HoJin Ha
 
Zoo keeper 소개
Zoo keeper 소개Zoo keeper 소개
Zoo keeper 소개주표 홍
 
Concurrent servers
Concurrent serversConcurrent servers
Concurrent serversTonyYoon12
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?nexusz99
 
Npac(엔팩) 가이드
Npac(엔팩) 가이드Npac(엔팩) 가이드
Npac(엔팩) 가이드VentureSquare
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Sung-jae Park
 
파워서포트 가이드
파워서포트 가이드파워서포트 가이드
파워서포트 가이드StartupAlliance
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3Sung-jae Park
 
클라우드 환경을 위한 네트워크 가상화와 NSX(기초편)
클라우드 환경을 위한 네트워크 가상화와 NSX(기초편)클라우드 환경을 위한 네트워크 가상화와 NSX(기초편)
클라우드 환경을 위한 네트워크 가상화와 NSX(기초편)Laehyoung Kim
 
[E6]2012. netty internals
[E6]2012. netty internals[E6]2012. netty internals
[E6]2012. netty internalsNAVER D2
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개태준 문
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)Cloud-Barista Community
 
resource on openstack
 resource on openstack resource on openstack
resource on openstackjieun kim
 
Private cloud network architecture (2018)
Private cloud network architecture (2018)Private cloud network architecture (2018)
Private cloud network architecture (2018)Gasida Seo
 
Tcp ip & io model
Tcp ip & io modelTcp ip & io model
Tcp ip & io modelNam Hyeonuk
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)Amazon Web Services Korea
 

Similar to Zookeeper 소개 (20)

Apache ZooKeeper 소개
Apache ZooKeeper 소개Apache ZooKeeper 소개
Apache ZooKeeper 소개
 
A review of zookeeper 2010.12
A review of zookeeper 2010.12A review of zookeeper 2010.12
A review of zookeeper 2010.12
 
OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
 
Zoo keeper 소개
Zoo keeper 소개Zoo keeper 소개
Zoo keeper 소개
 
Concurrent servers
Concurrent serversConcurrent servers
Concurrent servers
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
 
Npac(엔팩) 가이드
Npac(엔팩) 가이드Npac(엔팩) 가이드
Npac(엔팩) 가이드
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2
 
파워서포트 가이드
파워서포트 가이드파워서포트 가이드
파워서포트 가이드
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
 
클라우드 환경을 위한 네트워크 가상화와 NSX(기초편)
클라우드 환경을 위한 네트워크 가상화와 NSX(기초편)클라우드 환경을 위한 네트워크 가상화와 NSX(기초편)
클라우드 환경을 위한 네트워크 가상화와 NSX(기초편)
 
[E6]2012. netty internals
[E6]2012. netty internals[E6]2012. netty internals
[E6]2012. netty internals
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
Network researching
Network researchingNetwork researching
Network researching
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
 
resource on openstack
 resource on openstack resource on openstack
resource on openstack
 
Private cloud network architecture (2018)
Private cloud network architecture (2018)Private cloud network architecture (2018)
Private cloud network architecture (2018)
 
Tcp ip & io model
Tcp ip & io modelTcp ip & io model
Tcp ip & io model
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
 

More from beom kyun choi

옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개beom kyun choi
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기beom kyun choi
 
TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나beom kyun choi
 
keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)beom kyun choi
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀beom kyun choi
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugbeom kyun choi
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초beom kyun choi
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128beom kyun choi
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유beom kyun choi
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰beom kyun choi
 
ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료beom kyun choi
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)beom kyun choi
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개beom kyun choi
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해beom kyun choi
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개beom kyun choi
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개beom kyun choi
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)beom kyun choi
 

More from beom kyun choi (20)

옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기
 
TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나
 
keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)
 
DDD 준비 서문래
DDD 준비 서문래DDD 준비 서문래
DDD 준비 서문래
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksug
 
MVP 패턴 소개
MVP 패턴 소개MVP 패턴 소개
MVP 패턴 소개
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유
 
Spring Boot 소개
Spring Boot 소개Spring Boot 소개
Spring Boot 소개
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰
 
ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)
 

Zookeeper 소개

  • 2. 클러스터에 필요한 것 ● 클러스터 구성원 관리 o 살았니? 죽었니? o 누가 마스터? ● 클러스터 구성원 간 정보 공유 ● 분산 서버의 동시 접근 제어
  • 3. ZooKeeper 개요 ● 분산 시스템을 위한 코디네이터 ● 서버와 클라이언트로 구성 o 서버 앙상블: n개 서버로 단일 주키퍼 클러스터 구성 o 클라이언트: 앙상블에 속한 서버에 연결하여, 서비스 사용 ● 서버 제공 서비스 o 데이터 스토리지 (영속 데이터/임시 데이터)  클러스터 구성원 간 데이터 공유 o 데이터 변경 통지(Watch)  클러스터 멤버십 관리 o 시퀀스 노드  마스터, 분산 락 등에 활용
  • 5. ZNode ● ZNode o ZooKeeper는 계층형 네임스페이스를 가짐 o 계층의 각 노드를 ZNode라고 부름  계층의 각 경로는 ‘/’로 구분 o znode는 데이터를 가질 수 있음 (byte[]) o znode는 자식 노드를 가질 수 있음  예, /svc 노드는 /svc/nodes 노드를 가질 수 있음 ● 영속 종류 o PERSISTENT: 클라이언트가 종료되도 유지 o EPHEMERAL: znode를 생성한 클라이언트의 연결이 끊기면 삭제  자식 znode를 가질 수 없음
  • 6. 주요 오퍼레이션 ● 주요 오퍼레이션 o create o delete o exists o getChildren o getData o setData ● 언어 별 바인딩 제공 o Java, C, Python, Ruby, Scala 등  https://cwiki.apache.org/confluence/display/ZOOKEEPER/ZKClientBindings
  • 7. ZNode Watch ● znode의 변화를 통지 받음 ● 오퍼레이션 실행시 Wacher 등록 o zk.getChildren(“/mysvc/nodes”, watcher) ZK 서버클라이언트 클라이언트 Watcher 등록 변경 통지 znode 변경
  • 8. ZNode Watch 이벤트 종류 Watch 생성 오퍼레이션 znode 생성 znode 삭제 자식 생성 자식 삭제 znode 값 변경 exists NodeCreated NodeDeleted NodeDataCha nged getData NodeDeleted NodeDataCha nged getChildren NodeDeleted NodeChildren Changed NodeChildren Changed
  • 9. Watch 특징 ● 일회성 이벤트 수신 o 다시 Watch하고 싶으면 재등록해야 함 o 재등록 전에 발생한 변경은 수신하지 못함 ● 상태 변경 요청한 클라이언트가 성공 코드를 받은 이후에, Watcher를 등록한 클라이언트 에 통지 됨 ● ZooKeeper의 변경 순서대로 Watch 이벤트를 수신 함
  • 10. 시퀀스 노드 ● 자식 노드가 생성한 순서에 따라 일렬 번호를 가짐 o 예, /svc 노드의 자식 노드로 /nodes를 시퀀스 노드로 생성하면 다음과 같은 순서로 노드 생성  /svc/nodes0000000001  /svc/nodes0000000002 o PERSISTENT와 EPHEMERAL에 모두 적용 가능 o 시퀀스 범위 (4 byte 정수)  -2,147,483,647 ~ 2,147,483,647 (-21억~21억)
  • 12. 그룹 관리: 자식 ZNODE, Watch ● 그룹 멤버십 목록을 가질 부모 znode 생성 ○ 예: /members 멤버십 참여 ● 부모 znode에 자신을 위한 자식 znode를 ephemeral로 생성 ○ 예, /members/m-hostip ● 자식 znode 데이터는 다른 구성원이 자신과 통신 하는데 필요한 정보 저장 (예, ip/port 등) 멤버십 탈퇴 ● 자신에 해당하는 자식 znode를 삭제 멤버십 목록, 주기적 갱신 (각 클라이언트) ● 주기적으로 getChildlen 실행해서 목록 갱신 멤버십 목록, Watch 이용 (각 클라이언트) ● 부모 znode에 getChildlen로 WATCH 등록하고, getChildlen 결과로 목록 갱 신 ● NodeChildrenChanged 이벤트 수신 시, 위 과정 재실행
  • 13. 마스터 선출: 시퀀스 노드, WATCH ● 마스터 후보를 보관할 znode 생성 ○ 예: /masters 마스터 후보 등록 ● 부모 znode에 자신을 위한 자식 znode를 시퀀 스 & ephemeral로 생성 ○ 예, /masters/m-0000000010 마스터 선출 (각 후보 클라이언트에서 진행) ● 부모 znode에 getChild로 WATCH 등록 ● NodeChildrenChanged 이벤트 수신시, 현재 마스터가 없는 지 확인 ● 마스터에 해당하는 자식 znode가 없으 면 ○ 부모 znode에 자식 znode 를 구한 뒤 시퀀스 번호가 가장 작은 znode를 마스터로 선택 ● 부모 znode에 getChild로 WATCH 등록
  • 14. 기타 용도 ● 분산 락 o EPHEMERAL 사용 ● 이벤트 통지 o WATCH 사용 ● pub/sub o SEQUENCE 사용 ● 분산 카운터 o SEQUENCE 또는 znode의 version 사용 ● 디렉토리 서비스 o 활성화된 서비스 목록 등 제공
  • 16. 버전 ● zxid: ZooKeeper Transaction ID o 모든 변경은 고유 트랜잭션 ID를 가짐 o 순서를 가짐 ● version o znode가 변경될 때 마다 버전 값 증가 ● cversion o 자식 znode가 변경될 때 마다 버전 값 증가
  • 17. 서버와 클라이언트 연결 ZK클라이언트 ZK서버 ZK서버 ZK서버(리더) ZK서버 ZK서버 ZK클라이언트 연결 유지를 위해 주기적으로 PING 전송 연결된 서버에서 읽기 실행 일정 시간 동안 클라이언트로 부터 PING이 없으면 세션 종료 처리 ZK클라이언트 연결된 서버에 변 경 요청 리더에 변경 요청을 전달 하면, 리더가 트랜잭션 생성 후, 전 노드에 전파 PING 전송 실패시, 다른 서버에 연결
  • 18. Quorum: 가용성, 데이터 변경 ● 과반 정족수 이상 서버 다운시, 서비스 중지 o 예, 2대 중 1대 다운되면 서비스 중지 o 이런 이유로 서버 개수는 홀수로 맞춤 (3, 5 등) ● 데이터 변경시 성공 기준 o 리더 서버가 트랜잭션 생성 후 다른 서버에 전파할 때, 과반 정족수 이상 트랜잭션 성공하면 클라이언트에 변경 성공 결과 리턴
  • 19. 일관성 보장 ● Sequential Consistency: 변경 요청은 순서대 로 적용 ● Atomicity: 변경은 성공 또는 실패 ● Single System Image: 클라이언트는 연결한 서버에 상관없이 동일 서비스 사용 ● Reliability: 클라이언트가 성공 코드를 받으면, 서버에 반영됨을 보장 ● Timeliness: 클라이언트는 일정 시간내에 최 신 상태를 사용 (Eventual Consistency)
  • 21. 믿고 쓸 만한 분산 코디네이터 ● 다양한 오픈소스에서 채택 o Hadoop: 마스터(Name Node) 이중화 o HBase: 마스터 선출, 리전 데이터 공유 등에 사용 o Storm: 서버 간 데이터 공유 등에 사용 o Kafka: 클러스터 관리 o Neo4j: 마스터 선출에 사용