2011-10-24 1 views
6

목록에 포함되어 있지 않은 사용자에게 작업을 거부해야하는 여러 프런트 엔드 노드가 포함 된 분산 응용 프로그램을 작성하고 있습니다.Zookeeper를 사용하여 사용자 권한을 저장하는 것이 합리적입니까

지금 우리는 그 중 4 개 이상이 노드가 있지만 DB2를 실행하는 데이터베이스 서버가 하나만 있습니다.이 데이터베이스는 유지 관리를 위해 자주 다운됩니다.

지금 우리는 메모리 목록을 업데이트하기 위해 데이터베이스를 폴링하여 사용자가 목록에서 제거 된 경우 변경 사항이 모든 4 개의 노드에 반영되도록합니다. 그러나 데이터베이스가 다운 된 상태에서 노드 중 하나가 재부팅되면 빈 목록으로 끝나고 우리는 원하지 않는 모든 사용자 요청을 거부합니다. 데이터베이스가 다운 된 경우에도 메시지 대기열에 버퍼링 할 때 사용자의 요청을 수락 할 수 있지만 거부해야하는 경우 즉시 거부합니다.

각 4 노드에서 사육사 인스턴스를 실행하고 사육사에 사용자 권한을 저장하는 것이 합리적입니까? 따라서 독서는 빠르며 데이터는 매우 유용하고 공평해야합니다. 우리는 폴링을 더 이상 할 필요가 없으며 데이터베이스를 다시 시작하더라도 노드는 사육사로부터 구성을 가져올 수 있습니다!

답변

10

예, 문제를 설명한대로, 사육사는 청구서에 완벽하게 맞아야합니다. 몇 가지 질문은 대답해야하지만이 있습니다 얼마나 많은 데이터를 우리가 얘기

  • ? 동물원은 데이터를 디스크에 저장하지만 데이터가 RAM에 적합 할 때만 작동합니다.

  • 얼마나 자주 데이터가 변경됩니까? Zookeeper는 노드 절반 이상이 업데이트를 받았으므로 쓰기가 정확하지 않습니다.

  • 얼마나 많은 데이터를 한 번에 읽어야합니까? 사육사는 응답 크기가 1MB로 제한되어 있지만 권장 사항은 데이터를 그 한도 이하로 유지하는 것입니다. 이 제한은 자식 이름이 데이터로 간주되므로 많은 자식이있는 노드를 나열하는 경우에도 발생할 수 있습니다. 데이터를 고려

은 큰 문제가 안 읽기, RAM에서 제공됩니다,하지만 당신은 항상 캐시 결과, 적절한 노드에서 설정 한 시계는 로컬 데이터를 무효로 할 수 있습니다.