2012-01-09 4 views
5

Google의 Chubby 분산 잠금 관리자에는 ZooKeeper를 사용하여 에뮬레이션하려는 "시퀀서"라는 기능이 있습니다. 그렇게 할 수있는 좋은 방법이 있습니까? 다음과 같이ZooKeeper에서 Chubby 스타일 잠금 시퀀서를 구현하는 방법은 무엇입니까?

시퀀서 작동 :

  1. 클라이언트가 어떤 메타 데이터
  2. 클라이언트와 문자열 잠금,의 A를 호출 할 용 클라이언트는 시퀀서를 요청
  3. 리소스에 대한 잠금을 획득 서비스를 실행하고 시퀀서를 매개 변수로 전달합니다.
  4. 이 서비스는 시퀀서를 사용하여 요청을 처리하기 전에 클라이언트가 여전히 잠금을 유지하는지 확인합니다.

목표는 잠금으로 보호해야하는 원격 서비스를 호출 한 후 클라이언트가 종료되는 상황을 방지하는 것입니다.

츄비 (Chubby)의 주요 논문은 입니다. 시퀀서는 2.4 절에서 논의된다.

감사합니다.

답변

6

zookeeper lock recipes에는 모두 잠금 프로세스가 적용되어 sequential ephemeral znode을 만듭니다. 순차적 인 임시 znode의 이름은 고유 할 것이며, 로커 세션이 만료되면 로커가 유효한 하트 비트를 보내지 않아 znode가 존재하지 않게됩니다.

그래서 잠금 프로세스는 원격 서비스에 잠그는 동안 생성 된 순차적 znode의 이름을 전달하면되고 원격 서비스는 처리하기 전에 znode의 존재를 검사 할 수 있습니다.

원격 서비스가 znode에 시계를 추가하고 znode가 제거 될 때 알림을받을 수도 있습니다.

+0

감사합니다. 어떻게 든 일련 번호가 단조롭게 증가한다는 사실을 놓쳤습니다. –

+0

시퀀서가 필수 잠금을 구현하는 방법입니까? – ady