Zoo Keeper의 간단한 이해

4171 단어

1 ZooKeeper의 일관성 특징


개념
묘사
비고
순차적 일관성
ZXID로 트랜잭션의 순차성을 보장합니다.
원자성
ZAB로 원자 조작을 보증합니다. 성공하거나 실패합니다.
단일 뷰
클라이언트가 어느 서버에서 응용에 관한 데이터를 얻든지 간에 모두 일치한다
믿음직하다
데이터 쓰기 정확성을 보장하는 "쓰기 검증"버전
실시간
성능으로 실시간 보장
.

2 ZK 설계 목표


개념
묘사
비고
간단한 데이터 모델
기존 파일 시스템과 유사한 트리 구조, Znode는 절대 경로로 식별
클러스터 구축
여러 개의 ZooKeeper 서버를 통해 집단을 구성할 수 있으며 leader+follower+observer 형식으로 구성되어'과반 생존'을 충족시키면 사용할 수 있습니다. 추천 집단 수는 단수 3, 5, 7...
순차 액세스
ZXID의 점차적인 증가로 업무의 순서성을 확보하다
고성능
읽기/쓰기 성능 = 10:1
.

3 ZK 시스템 모델


개념
묘사
비고
데이터 모델
- 핵심은 데이터 노드 Znode입니다. Znode는 데이터를 저장하고 마운트할 수 있는 하위 노드 - 노드용 경로 표지 - 트리 구조 - 트랜잭션: Znode의 생성과 삭제, Znode의 데이터 업데이트 등 ZK 서버 상태를 변경할 수 있는 모든 작업 - 각 트랜잭션은 하나의 트랜잭션 ID(ZXID)를 지정하여 식별합니다.
노드 특성
- 영구 노드: 삭제가 표시될 때까지 - 임시 노드: 세션이 끝날 때까지 하위 노드를 마운트할 수 없습니다.
노드에 znode 정보, 예를 들어 znode 버전 정보, znode 하위 노드 버전 정보, znode_acl의 버전 정보, 하위 노드 포인트, 노드 데이터 등 정보
버전
-version -znode 버전 정보 -cversion -znode 하위 노드 버전 정보 -aversion -acl 버전 정보
버전은 검증에 사용되며, 노드가 데이터를 업데이트할 때 버전 번호가 변경된 것을 발견하면 이상이 발생합니다
Wathcer 메커니즘
클라이언트가 서버에 감청기를 등록합니다. 감청된 이벤트가 발생하면 서버는 클라이언트에게 알림을 보냅니다.
클라이언트가 ZK 서버에 Wathcer를 등록하면 Watcher 객체가 클라이언트의 WatchManger에 저장됩니다.ZK가 Watcher 이벤트를 터치하면 클라이언트에게 알림을 보내고, 클라이언트가 WM에서 Watcher에 대한 리셋을 실행합니다.

4 ZK의 ZAB 프로토콜(원자 방송 프로토콜)


ZooKeeper에서 충돌 복구를 지원하는 마지막 원자 방송 프로토콜
개념
묘사
비고
붕괴 복구
1. 리더 붕괴 2.새 리더 선출 (모든 서버에서 가장 높은 번호의 ZXID를 가진 서버) 3.데이터 동기화를 하고,leader 서버의 업무를 기준으로 하며, 모든follower의 업무와leader 서버의 업무를 동기화합니다.follower에 있는, 리더에 없는 일을 버리다
ZXID는 64비트의 숫자로 구성되어 있으며, 앞의 32비트는 주기(즉 leader 선거 1회 +1), 뒤의 32비트는 사무 조작 횟수(사무 1회 +1 증가)
뉴스 방송
1.leader는 클라이언트 요청을 수신하여 요청이 사무인지 판단하고, 요청을 사무proposal로 전환하여 각각follower에 단독 대기열을 구축하여 FIFO2를 진행합니다.follower가 업무를 받은 후 로컬 디스크에 사무를 쓴 후leader (ack) 3에 답장합니다.leader는follower가 되돌려주는ack를 수신합니다. 절반이 넘는follwer가ack을 진행하면leader는 제출 지령을 보냅니다.
.

5 ZK 데이터 스토리지


개념
묘사
비고
DataTree
zk의 모든 노드 정보를 저장하는 데 사용
DataNode
각 노드 경로, 노드 데이터, acl, 버전 정보와 하위 노드 정보를 저장하는 데 사용
ZkDatabase
메모리 데이터베이스, 세션, DataTree 및 트랜잭션 로그 저장, 로컬 디스크에 데이터 쓰기
로그
- 데이터에 저장LogDir/version-/log.zxid - 형식: 세션 ID, 클라이언트 ID, ZXID, 작업 유형, 노드 경로 및 노드 컨텐트
데이터 스냅샷
- dataDir/version-2/snapshot에 저장됩니다.zxid - ZK의 모든 메모리 데이터 내용을 기록하고 지정한 파일에 기록합니다. - 메타데이터만 저장합니다.
.

6 ZK 서버 역할


개념
묘사
비고
leader
- 사무 요청의 유일한 스케줄러와 처리자, 집단 사무 처리의 순서성 보장 - 집단 내 각 서버의 스케줄러leader는 각각follower와observer와 tcp장 연결을 구축하고 각각follower와observer를 위한learnerhandler를 구축하여 데이터 동기화, 전송 요청과proposal 투표 등 기능
follwer
- 클라이언트의 비사무 요청을 처리하여 리더에게 전송 - 사무 요청 참여 Proposal 투표 - 리더 선거 투표 참여 - 현재 요청이 사무 요청인지 판단하고, 만약 리더에게 사무 로그 기록을 완성한 후 리더에게ack 메시지를 전송
observer
- follower와 같은 작업 원리로 어떠한 형태의 투표에도 참여하지 않고 비사무 서비스를 제공
.
Propsal 투표: 모든 사무는 그룹 중 절반이 넘는 기계 투표가 인정되어야 ZK의 메모리 데이터베이스에 진정으로 응용될 수 있습니다.

7 ZK의 구축 포인트


구성 파일에서 dataDir 및 dataLogDir 구성 포트를 구성합니다.
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/home/hadoop/data/zookeeper/zkdata
dataLogDir=/home/hadoop/data/zookeeper/zkdatalog
# the port at which the clients will connect
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
server.4=slave3:2888:3888
server.5=slave4:2888:3888
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

그리고 dataDir에서 myid를 만들고 현재 기계의 id 수를 적으십시오

좋은 웹페이지 즐겨찾기