Programing

ZooKeeper 대안?

lottogame 2020. 11. 2. 07:33
반응형

ZooKeeper 대안? (클러스터 조정 서비스)


ZooKeeper 는 데이터 센터를위한 고 가용성 조정 서비스입니다. Hadoop 프로젝트에서 시작되었습니다. 잠금, 장애 복구, 리더 선택, 그룹 멤버십 및 기타 조정 문제를 구현할 수 있습니다. ZooKeeper에 대한 대안이 있습니까? (물론 무료 소프트웨어)


나는 Zookeeper / Curator , Eureka , etcd , consul을 광범위하게 살펴 보았습니다 . Zookeeper / Curator와 Eureka는 Java 세계에서 가장 세련되고 통합하기 쉬운 제품입니다. Etcd 는 매우 멋지고 매우 유연하지만 실제로는 HA 키 저장소 일 뿐이 므로 독자적인 서비스 검색 시스템으로 전환하려면 많은 코드를 작성해야합니다.

영사 는 (나에게) 두 세계의 최고입니다. 그것은 클러스터 합의를 위해 뗏목을 사용하고 의사 소통을 위해 가십을 사용하여 serf 위에 작성된 독단적 인 서비스 발견 시스템입니다 . 잘 문서화 된 REST API로 검색 / 등록 엔드 포인트를 노출하고 DNS SRV 레코드로 서비스를 검색하고 구성을 사용하여 서비스를 등록 할 수 있습니다 (예 : 클라이언트와 통합 할 수없는 데이터베이스 또는 애플리케이션을 등록 할 수 있음, 또는 서비스 검색을 앱에서 분리하여 유지하려는 경우)

더 많은 것을 배우고 제 "시도해보기"데모를 살펴볼 수있는 영사 관련 블로그 게시물을 작성했습니다.

사용자 지정 코드가 어떻게 생겼는지 자세히 알고 싶다면 etcd 및 docker로 서비스 검색에 대해 논의했습니다 .

마지막 한가지! etcd & consul은 go로 작성되었으므로 zookeeper와 같은 Java 솔루션보다 유지 관리가 훨씬 쉽습니다. consul / etcd 바이너리 만 있으면됩니다. 종속성, 링크 된 라이브러리, jvm이 없습니다.


CoreOS 팀이 작성한 etcd (github.com/coreos/etcd) 라는 ZooKeeper의 매우 유망한 대안이 있습니다. Doozerd와 달리 etcd는 활발하게 개발되고 있습니다.


흥미로운 솔루션이 될 수있는 Accord (C) 및 OpenReplica / ConCoord (Python)를 방금 발견했습니다.

[편집] Vagrant와 Packer로 유명한 Hashicorp 팀은 Serf 라는 "서비스 검색 및 오케스트레이션을위한 분산 솔루션"을 요리하고 있습니다.

[EDIT2] Hashicorp가 다시 파업! 그들은 방금 Serf 위에 지어진 Consul을 출시했습니다 . 피치 : "서비스 검색 및 구성을위한 솔루션, 완전 분산, 고 가용성, 여러 데이터 센터에 걸쳐 수천 개의 노드 및 서비스로 확장 가능".


예, Doozerd (https://github.com/ha/doozerd)도 있습니다. 잘보세요. Heroku에서 개발 한 멋진 단일 바이너리 분산 조정 서비스입니다. java / python / ruby ​​/ node 용 바인딩 / 라이브러리를 사용합니다. 시작하고 놀기 매우 쉽습니다.


Serf를 보세요 . 여기에 Zookeeper 대 비교가 있습니다 .


제 연구 그룹의 OpenReplica 는 데이터 센터를위한 고 가용성 FOSS 조정 서비스입니다. 잠금, 장애 복구, 리더 선택, 그룹 멤버십 및 기타 조정 서비스를 구현하는 데 사용할 수 있습니다. 두 가지 중요한 측면에서 ZooKeeper와 다릅니다.

  • 객체 지향 API를 사용합니다. 이렇게하면 조정 서비스를 훨씬 쉽게 작성할 수 있습니다. OpenReplica의 동기화 코드는 교과서와 똑같습니다. ZooKeeper 및 Chubby와 같이 파일 및 상향 호출 기반 API를 마스터 할 필요가 없습니다.

  • 복제 세트에 대한 동적 멤버십 업데이트를 가능하게합니다. 정적 구성 파일이 필요하지 않습니다. 시스템은 DNS (권한, OpenReplica의 슬레이브 또는 Amazon Route 53)에 통합됩니다.

우리는 시스템을 적극적으로 지원합니다. 추가 질문이 있으면 주저하지 말고 알려주십시오.


흥미로운 github에 Noah라는 프로젝트가 있습니다.이 프로젝트는 "Apache ZooKeeper를 기반으로 느슨하게 기반" https://github.com/lusis/Noah 와 REST 지원이 핵심 기능 이라고 말합니다 (ZK는이를 기여 / 옵션으로 제공합니다. 내장 된 것보다).


다양한 엔지니어링 트레이드 오프를 최적화하는 다양한 도구가 있습니다.

  • ZooKeeper 읽기를 위해 약간 확장됩니다. 관찰자가 많은 경우 쓰기 속도가 느릴 수 있습니다. 입증되었으며 상당한 규모의 커뮤니티가 있습니다.
  • Accord 는 쓰기 집약적 인 사용에 흥미로워 보이지만 일반적인 사용 사례에는 이미 도메인 별 솔루션 (예 : 로깅, 원격 측정)이 있습니다.

다른 것들은 다소 흥미롭지 만 일반적으로 입증되지 않았습니다. 프로덕션 용도로 의도 된 경우이 오류가 발생하지 마십시오.


Zookeeper, etcd 및 Doozer의 비교를 찾았습니다. http://devo.ps/blog/zookeeper-vs-doozer-vs-etcd/

Serf (serfdom.io)도 간단하기 때문에 좋은 솔루션입니다! 그러나 SERF는 모든 클러스터 노드에 사용자 지정 이벤트를 보낼 수있는 클러스터 관리자 일 뿐이라는 점을 고려해야합니다. 좋지만 자신 만의 셸 스크립트 (이벤트라고도 함)를 작성해야합니다. 다음 예를 참조하십시오. " https://www.digitalocean.com/community/articles/how-to-set-up-a-serf-cluster-on-several-ubuntu-vps "

장점은 매우 간단한 클러스터 관리자를 확보하고이를 선호하는 구성, 배포 또는 지속적 통합 도구와 결합 할 수 있다는 것입니다.


Corosync 도 ZooKeeper와 같은 것 같습니다 .


이 게시물이 꽤 오래되었다는 것을 알고 있지만 가능한 모든 대안을 찾고있는 사람은 프로덕션 환경에서 사용할 수있을만큼 충분히 성숙 된 JGroups 라이브러리를 제안하고 싶습니다. 주로 분산 조정 및 클러스터 간 메시지 공유를 위해 내 프로젝트 중 하나에서 성공적으로 사용했습니다. 또한 스택을 사용자 지정하여 필요한 것을 얻을 수있는 유연한 아키텍처 외에도 AWS 지원을 지원합니다. 나는 당신이 그것을 보도록 제안 합니다

참고 URL : https://stackoverflow.com/questions/6047917/zookeeper-alternatives-cluster-coordination-service

반응형