zookeeper 프로젝트 에서 의 실제 응용
ZooKeeper 는 분포 식 작은 파일 시스템 으로 선거 알고리즘 과 클 러 스 터 복 제 를 통 해 단일 고장 을 피 할 수 있 습 니 다.
파일 시스템 이기 때문에 모든 ZooKeeper 노드 를 모두 끊 어도 데 이 터 를 잃 어 버 리 지 않 습 니 다.
서버 를 다시 시작 하면 데이터 가 복 구 됩 니 다.
ZooKeeper 가 실현 하 는 모든 기능 은 ZK 노드 의 특성 과 이 노드 와 관련 된 데이터 로 이 루어 집 니 다.
어떤 데이터 와 관련 이 있 는 지 는 네가 무슨 일 을 하 느 냐 에 달 려 있다.
① 클 러 스 터 관리: 임시 노드 특성 을 이용 하여 노드 와 관련 된 것 은 기계 의 호스트 이름, IP 주소 등 관련 정보 이 고 클 러 스 터 단일 고장 도 이 범주 에 속한다.
② 통일 적 인 이름: 주로 노드 의 유일 성과 디 렉 터 리 노드 트 리 구 조 를 이용 합 니 다.
③ 설정 관리: 노드 와 관련 된 것 은 설정 정보 입 니 다.
④ 분포 식 자물쇠: 노드 와 관련 된 것 은 경쟁 할 자원 이다.
다음은 프로젝트 의 실제 응용 이다.
1. watcher 메커니즘 을 이용 하여:
vqsapi 가 6 개의 인터페이스 로 데 이 터 를 보 낼 때 zookeeper 로 현재 살아 있 는 mongodb 와 api 를 모니터링 할 수 있 습 니 다.
vqsapi 동적 가 져 오기, mongodb 와 api 가 모두 살아 있 는 인터페이스 로 데 이 터 를 보 냅 니 다.
2. 임시 노드 의 특성 활용
운영 인터페이스 탐지, 모든 서버 가 zookeeper 에 임시 노드 를 등록 할 수 있 습 니 다. 인터페이스 가 끊 겼 을 때,
session 차단, 모니터링 목적 달성
3. 노드 의 유일한 특성 활용
분산 식 잠 금, 같은 자원 을 동시에 조작 하면 병발 문제 가 발생 할 수 있 습 니 다.
원생 의 zookeeper 문 구 는 비교적 번 거 롭 고 이해 하기 어렵 기 때문에 curator 프레임 워 크 가 잘 실현 되 었 습 니 다. 다음은 잠 금 작업 입 니 다.
String path = String.format(LockPathScheme.STRATEGY_MODEL_ROUTE, modelId, isp,province,value);
//
CuratorFramework curator = CuratorFrameworkFactory.builder().retryPolicy(new ExponentialBackoffRetry(10000, 3)).connectString(zookeeperserver).build();
curator.start();
InterProcessMutex lock = new InterProcessMutex(curator, path);
try {
boolean b = lock.acquire(3, TimeUnit.SECONDS);
if (!b) {
resultMap.put("statusCode", 300);
resultMap.put("message", " !");
return resultMap;
}
// ,
resultMap = this.strategyRoute_dnspod_save_detail(request, id, modelId, modelName, category, province, isp, containCname, type, remark, node, value, ttl, weight, status,customerViewId);
return resultMap;
}catch(Exception e){
e.printStackTrace();
resultMap.put("statusCode", 300);
resultMap.put("message", " !");
return resultMap;
}finally {
//
try{
lock.release();
}catch (Exception e){
System.out.println(path + " " + e);
}
CloseableUtils.closeQuietly(curator);
}
마지막 으로 아주 완벽 한 예 는 zookeeper 프레임 의 다양한 특성 을 잘 사 용 했 습 니 다.
전환 하 다 http://www.cnblogs.com/wuxl360/p/5817549.html
우리 의 군집 이 있다 고 가정 하면:
(1) 20 개의 검색엔진 서버: 총 색인 중 일 부 를 담당 하 는 검색 작업 입 니 다.
① 검색엔진 의 서버 중 15 개 서버 는 현재 검색 서 비 스 를 제공 하고 있다.
② 5 개 서버 에서 색인 생 성 중.
이 20 개의 검색엔진 서버 는 검색 서 비 스 를 제공 하고 있 는 서버 가 서 비 스 를 제공 하지 않 고 색인 을 만 들 기 시작 하거나 색인 을 만 드 는 서버 가 색인 생 성 을 완료 하면 검색 서 비 스 를 제공 할 수 있 습 니 다.
(2) 총 서버: 이 20 개의 검색엔진 서버 에 검색 요청 을 보 내 고 결과 집합 을 통합 합 니 다.
(3) 예비 총 서버: 총 서버 가 다운 되 었 을 때 총 서버 를 교체 하 는 것 을 책임 집 니 다.
(4) 웹 cgi: 전체 서버 에 검색 요청 을 보 냅 니 다.
Zookeeper 를 사용 하면 보증 할 수 있 습 니 다:
(1) 총 서버: 검색엔진 을 제공 하 는 서버 가 얼마나 되 는 지 자동 으로 감지 하고 이 서버 에 검색 요청 을 합 니 다.
(2) 예비 총 서버: 다운 되면 예비 총 서버 를 자동 으로 사용 합 니 다.
(3) 웹 의 cgi: 총 서버 의 네트워크 주소 변 화 를 자동 으로 알 수 있 습 니 다.
(4) 다음 과 같이 실현 한다.
① 검색엔진 을 제공 하 는 서버 는 Zookeeper 에 znode, zk. create ("/ search / nodes / node 1", "hostname", getBytes (), Ids. OPEN ACL UNSAFE, CreateFlags. EPHEMERAL) 를 만 듭 니 다.
② 총 서버 는 Zookeeper 에서 znode 의 하위 노드 목록, zk. getChildren ("/ search / nodes", true) 을 가 져 올 수 있 습 니 다.
③ 총 서버 가 이 하위 노드 를 옮 겨 다 니 며 하위 노드 의 데 이 터 를 가 져 와 검색엔진 을 제공 하 는 서버 목록 을 생 성 한다.
④ 총 서버 가 하위 노드 가 변 경 된 이벤트 정 보 를 받 으 면 두 번 째 단계 로 되 돌아 갑 니 다.
⑤ 총 서버 는 Zookeeper 에 노드, zk. create ("/ search / master", "hostname", getBytes (), Ids. OPEN ACL UNSAFE, CreateFlags. EPHEMERAL) 를 만 듭 니 다.
⑥ 예비 서버 는 Zookeeper 의 '/ search / master' 노드 를 모니터링 합 니 다.이 znode 의 노드 데이터 가 바 뀌 었 을 때 자신 을 전체 서버 로 시작 하고 자신의 네트워크 주소 데 이 터 를 이 노드 에 넣 습 니 다.
⑦ 웹 의 cgi 는 Zookeeper 의 '/ search / master' 노드 에서 전체 서버 의 네트워크 주소 데 이 터 를 가 져 와 검색 요청 을 보 냅 니 다.
⑨ 웹 의 cgi 는 Zookeeper 의 '/ search / master' 노드 를 모니터링 합 니 다. 이 zno de 의 노드 데이터 가 바 뀌 었 을 때 이 노드 에서 전체 서버 의 네트워크 주소 데 이 터 를 가 져 오고 현재 총 서버 의 네트워크 주 소 를 변경 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZooKeeper 서버의 예는 하나뿐입니다.-- Start zookeeper-3.4.6/conf 디렉터리에 zoo_sample.cfg의 파일입니다. 이 파일을zoo로 개명합니다.cfg, 파일 이름은zoo만 가능합니다.cfg, ZooKeeper의 스크립트가 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.