최근 에 Zookeeper를 살펴 보았는데 현재 사용중인 사람이 있는지, 저장을 위해 특별히 사용하고있는 것이 무엇인지 궁금했습니다.
가장 일반적인 사용 사례는 구성 정보입니다.하지만 어떤 종류의 데이터를 저장하고 있습니까?
최근 에 Zookeeper를 살펴 보았는데 현재 사용중인 사람이 있는지, 저장을 위해 특별히 사용하고있는 것이 무엇인지 궁금했습니다.
가장 일반적인 사용 사례는 구성 정보입니다.하지만 어떤 종류의 데이터를 저장하고 있습니까?
답변:
DOSGi 의 Apache CXF 구현 은 서비스 등록 저장소로 zookeeper를 사용합니다. 개별 컨테이너에는 모든 서비스 이벤트를 수신하고 서비스 상태가 변경 될 때 배포를 나타내는 속성이있는 분산 소프트웨어 (dsw) 번들이 있습니다. dsw는 참조 구현 사례에서 zookeeper를 사용하여 서비스를 임시 노드로 저장하는 검색 번들과 통신합니다. 다른 인스턴스는 노드 구조의 변경 사항을 찾고 로컬 시스템에 프록시를 등록합니다. 최종 결과는 일반 OSGi로 코딩하고 투명한 배포로 끝낼 수 있다는 것입니다.
ZooKeeper가 지원하는 무료 소프트웨어 프로젝트 :
ZooKeeper가 지원하는 Apache 프로젝트 :
출처 : https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
HBase는 현재 버전 이전에 "헤드 노드"가 담당했던 활동을 조정하기 위해 Zookeeper를 사용합니다. Zookeeper 사용으로 이동하면 중앙 제어가 더 이상 단일 실패 지점이 아닙니다.
사육사는 매우 다재다능합니다. 다음은이를 사용하여 분산 동시 대기열을 만드는 예입니다.
http://blog.cloudera.com/blog/2009/05/building-a-distributed-concurrent-queue-with-apache-zookeeper/
물론 분산 시스템에서 리소스 잠금 등을 만드는 데 사용할 수도 있습니다.
Norbert 는 확장 가능한 프로덕션 시스템의 좋은 예입니다. 저는 일반적으로 Netty, Protocol Buffers 및 Zookeeper를 클러스터 된 서비스를 실행하기위한 경량 프레임 워크로 통합합니다. 프로토콜 버퍼는 서비스 API를 지정하는 데 사용되며 Netty는 전송 계층 추상화를 구현하며 Zookeeper는 본질적으로 내결함성 검색 서비스입니다.
서비스 인스턴스가 시작될 때마다 Norbert는이를 특정 서비스 유형의 사용 가능한 인스턴스로 등록합니다. 구현 관점에서 두 개의 Zookeeper 트리를 만듭니다.
각 노드의 가장 중요한 속성은 해당 서비스 인스턴스에 연결하는 데 사용할 URL입니다. 이는 클라이언트 측로드 밸런싱을 가능하게합니다. Norbert 클라이언트는 주어진 서비스 이름에 대한 URL 목록을 찾고 그중 하나에 연결을 시도하는 것은 순서입니다 (예 : 라운드 로빈 또는 무작위).
Elastic Cloud의 ZooKeeper에 대한 좋은 기사 ZooKeeper-The King of Coordination이 있습니다.
예를 들어 Found에서는 검색, 리소스 할당, 리더 선택 및 우선 순위가 높은 알림을 위해 ZooKeeper를 광범위하게 사용합니다. 이 기사에서는 조정의 왕을 소개하고 Found에서 ZooKeeper를 사용하는 방법을 자세히 살펴 봅니다.
Solr은 또한 ZooKeeper를 통합하기 위해 노력하고 있습니다. 여기에서 동적 구성, 샤딩, SPOF 제거 (마스터 / 슬레이브 선택), 재조정 등에 사용중인 것을 볼 수 있습니다.
Storm 은 Zookeeper를 사용하여 모든 상태를 저장하므로 (분산) 구성 요소 서비스의 중단에서 복구 할 수 있습니다.
이렇게하면 구성 데이터가 필요할 때 구성 요소 서비스가 상태 비 저장 상태가되고 Zookeeper 서버와 간단히 다운로드하거나 동기화 할 수 있습니다. 프로덕션 서버를 복구해야했다면 이것이 얼마나 골치 아픈 일인지 알게 될 것입니다!
Kafka 대기열 소비자는 Zookeeper를 사용하여 대기열에서 소비 된 항목에 대한 정보 (최고 수위 표시)를 저장할 수 있습니다.
제 경우에는 클러스터 사용을 위해 zookeeper 앙상블에 구성 파일을 저장하고 있습니다. 우리는 리더-> 팔로어 스키마를 사용하고 있습니다. 따라서 사육사 한 명이 다운되면 다른 사육사로 전환됩니다 (복제 모드).
Zookeeper는 구성 이외의 많은 용도로 사용되었습니다. 다음은 zookeeper를 사용하여 배포 된 기본 요소를 구현하는 공식 목록입니다.
Neo4j는 Zookeeper를 고 가용성 엔터프라이즈 서버로 사용합니다! http://docs.neo4j.org/chunked/milestone/ha.html
datomic 은 apache zookeeper를 사용하여 riak 기반 데이터 저장소를 관리합니다.
Riak은 현재 최종 일관성 만 지원하므로 Riak에서 실행되는 Datomic 시스템은 고 가용성 조정 서비스 인 Apache ZooKeeper도 사용합니다. Datomic은 트랜스 액터 장애 조치 조정과 CAS로 업데이트해야하는 데이터베이스 당 몇 개의 키에 ZooKeeper를 사용합니다. 출처 : http://blog.datomic.com/2012/11/riak-and-couchbase-support.html
다음은 HBase가 ZooKeeper를 사용하는 방법에 대한 세부 정보입니다. 향후 사용 계획에 대한 정보도 포함됩니다. 일반적으로 ZooKeeper를 사용하여 구현 된 리더 선택을 통해 지역 서버에서 SPOF를 제거하는 데 사용합니다.