10 분 시리즈-zookeeper 입문
설치 설정
분산 배치
# server.A=host1:B:C
# A: myid
# B:
# C:
server.2=host1:2888:3888
server.3=host2:2888:3888
server.4=host3:2888:3888
zkServer.sh start
을 시작 하여zkServer.sh status
leader 인지 follower 인지 확인 합 니 다ticktime:ticktime 시간 마다 심장 박동 을 보 냅 니 다.
initLimit:follower 링크 leader 가 가장 많이 허용 하 는 심장 박동 프레임 횟수:initLimit*tickTime 후 시간 초과
syncLimit:follower 와 leader 가 동기 화 될 때 가장 많이 허용 되 는 심장 박동 수 syncLimit*tickTime 이후 시간 을 초과 하여 서비스 목록 에서 follower 를 삭제 합 니 다.
내부 원리
선거 메커니즘
paxos 프로 토 콜 기반.
모두
Election
인터페이스의 실현 에 있다.package org.apache.zookeeper.server.quorum;
public interface Election {
Vote lookForLeader() throws InterruptedException;
void shutdown();
}
주로
FastLeaderElection
류 입 니 다.노드 종류
Stat 구조 체
셸 작업 을 먼저 보 는 것 을 권장 합 니 다.
get path watch
ls path watch
client--->쓰기 요청 보 내기-server 1
셸 사용
zkCli.sh 클 라 이언 트 진입
help
:명령 표시ls /
:현재 디 렉 터 리 노드 보기create /china "china"
:노드 만 들 기create /china/beijing "beijing"
:하위 노드get /china/beijing
:노드 의 값 가 져 오기create -e /china/japan "japan"
:짧 은 노드 만 들 기create -s /china/cq "cq"
:번호 가 있 는 노드 만 들 기(여러 번 실행)set /china/beijing "home"
:노드 의 값 수정get /china watch
:감청 노드 값 의 변화(등록 한 번 에 한 번 유용)ls /china watch
:감청 노드 의 변화delete /china/beijing
:노드 삭제rmr /china
:재 귀적 삭제maven 환경 준비
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
dependency>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
<dependency>
<groupId>org.apache.zookeepergroupId>
<artifactId>zookeeperartifactId>
<version>3.4.10version>
dependency>
dependencies>
클 라 이언 트 만 들 기
/**
*
*/
private static String connectString = "localhost:2181";
/**
*
*/
private static int sessionTimeout = 2000;
/**
* client
*/
private static ZooKeeper zk;
@BeforeClass
public static void init() throws IOException {
zk = new ZooKeeper(connectString, sessionTimeout, watchedEvent -> {
});
}
@AfterClass
public static void afterClass() throws Exception {
zk.close();
}
코드 구현 CRUD
@Test
public void createNode() throws KeeperException, InterruptedException {
String path = zk.create("/super", "jimo".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
assertEquals("/super", path);
}
@Test
public void getNode() throws KeeperException, InterruptedException {
List<String> children = zk.getChildren("/", false);
children.forEach(System.out::println);
}
@Test
public void getNodeWatch() throws KeeperException, InterruptedException {
zk.getChildren("/", watcher -> {
try {
getNode();
} catch (Exception e) {
e.printStackTrace();
}
});
TimeUnit.MINUTES.sleep(1L);
}
@Test
public void nodeExist() throws KeeperException, InterruptedException {
Stat exists = zk.exists("/super", false);
assertNotNull(exists);
Stat existNon = zk.exists("/hehe", false);
assertNull(existNon);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spark 의 -- Spark Submit 제출 프로그램 상세 설명이 스 크 립 트 는 Spark 류 경로 (classpath) 와 응용 프로그램 의존 패 키 지 를 설정 할 수 있 고 서로 다른 Spark 가 지원 하 는 클 러 스 터 관리 와 배치 모드 를 설정 할 수 있 습 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.