SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
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: 마스터 선출에 사용

Más contenido relacionado

La actualidad más candente

Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
 
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2Sho Nakazono
 
Introduction to Apache Hive
Introduction to Apache HiveIntroduction to Apache Hive
Introduction to Apache HiveAvkash Chauhan
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm Chandler Huang
 
Kakao Cloud Native Platform, 9rum
Kakao Cloud Native Platform, 9rumKakao Cloud Native Platform, 9rum
Kakao Cloud Native Platform, 9rumif kakao
 
Dive into Fluentd plugin v0.12
Dive into Fluentd plugin v0.12Dive into Fluentd plugin v0.12
Dive into Fluentd plugin v0.12N Masahiro
 
Red Hat Update Infrastructure 2.0
Red Hat Update Infrastructure 2.0Red Hat Update Infrastructure 2.0
Red Hat Update Infrastructure 2.0Etsuji Nakai
 
美团数据平台之Kafka应用实践和优化
美团数据平台之Kafka应用实践和优化美团数据平台之Kafka应用实践和优化
美团数据平台之Kafka应用实践和优化confluent
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークVirtualTech Japan Inc.
 
Zookeeper Introduce
Zookeeper IntroduceZookeeper Introduce
Zookeeper Introducejhao niu
 
HBase Operations and Best Practices
HBase Operations and Best PracticesHBase Operations and Best Practices
HBase Operations and Best PracticesVenu Anuganti
 
Apache Igniteインメモリーデータ処理プラットフォーム:特徴&利活用
Apache Igniteインメモリーデータ処理プラットフォーム:特徴&利活用Apache Igniteインメモリーデータ処理プラットフォーム:特徴&利活用
Apache Igniteインメモリーデータ処理プラットフォーム:特徴&利活用Yahoo!デベロッパーネットワーク
 
MySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slaveMySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slaveTakanori Sejima
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Ken SASAKI
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモEtsuji Nakai
 
Deep Dive into Cassandra
Deep Dive into CassandraDeep Dive into Cassandra
Deep Dive into CassandraBrent Theisen
 
RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門Yuki Morishita
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcachedJurriaan Persyn
 
Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlCassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlYutuki r
 

La actualidad más candente (20)

Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
 
Introduction to Apache Hive
Introduction to Apache HiveIntroduction to Apache Hive
Introduction to Apache Hive
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm
 
Kakao Cloud Native Platform, 9rum
Kakao Cloud Native Platform, 9rumKakao Cloud Native Platform, 9rum
Kakao Cloud Native Platform, 9rum
 
Dive into Fluentd plugin v0.12
Dive into Fluentd plugin v0.12Dive into Fluentd plugin v0.12
Dive into Fluentd plugin v0.12
 
Red Hat Update Infrastructure 2.0
Red Hat Update Infrastructure 2.0Red Hat Update Infrastructure 2.0
Red Hat Update Infrastructure 2.0
 
美团数据平台之Kafka应用实践和优化
美团数据平台之Kafka应用实践和优化美团数据平台之Kafka应用实践和优化
美团数据平台之Kafka应用实践和优化
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマーク
 
Zookeeper Introduce
Zookeeper IntroduceZookeeper Introduce
Zookeeper Introduce
 
HBase Operations and Best Practices
HBase Operations and Best PracticesHBase Operations and Best Practices
HBase Operations and Best Practices
 
Apache Igniteインメモリーデータ処理プラットフォーム:特徴&利活用
Apache Igniteインメモリーデータ処理プラットフォーム:特徴&利活用Apache Igniteインメモリーデータ処理プラットフォーム:特徴&利活用
Apache Igniteインメモリーデータ処理プラットフォーム:特徴&利活用
 
MySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slaveMySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slave
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモ
 
Deep Dive into Cassandra
Deep Dive into CassandraDeep Dive into Cassandra
Deep Dive into Cassandra
 
RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached
 
Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlCassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sql
 

Destacado

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 소개 및 실습동현 강
 

Destacado (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 a 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
 
Kubernetes in action
Kubernetes in actionKubernetes in action
Kubernetes in actionBingu Shim
 

Similar a Zookeeper 소개 (20)

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  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
 
Kubernetes in action
Kubernetes in actionKubernetes in action
Kubernetes in action
 

Más de 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
 

Más de 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)
 

Último

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Wonjun Hwang
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'Hyundai Motor Group
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and AdoptionSeung-chan Baeg
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 

Último (7)

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 

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: 마스터 선출에 사용