2012-01-09 6 views
5

Il gestore di blocco distribuito di Google Chubby ha una funzionalità chiamata "sequencer" che vorrei emulare utilizzando ZooKeeper. C'è un buon modo per farlo?Come implementare sequenziatori di blocco stile Chubby con ZooKeeper?

Un sequencer funziona nel modo seguente:

  1. client acquisisce un blocco su una risorsa
  2. client richiede un sequencer per la sua serratura, che è una stringa con alcuni metadati
  3. client effettua una chiamata a un servizio e passa il sequencer come parametro
  4. il servizio utilizza il sequencer per verificare che il cliente detiene ancora il blocco prima di elaborare la richiesta

L'obiettivo è impedire una situazione in cui un client muore dopo aver effettuato una chiamata a un servizio remoto che deve essere protetto da un blocco.

La carta principale su Chubby è disponibile allo . I sequencer sono discussi nella sezione 2.4.

Grazie!

risposta

6

Il zookeeper lock recipes coinvolge tutti il ​​processo di blocco creare un sequential ephemeral znode. Il nome dello znode sequenziale sequenziale sarà univoco e il znode cesserà di esistere se la sessione degli armadietti scade a causa dell'armadio che non invia un heartbeat valido entro il timeout.

Quindi il processo di blocco deve solo passare il nome del znode sequenziale sequenziale creato durante il blocco al servizio remoto e il servizio remoto può verificare l'esistenza dello znode prima dell'elaborazione.

Si può anche avere il servizio remoto aggiungere un orologio al znode e ricevere una notifica quando viene rimosso il znode.

+0

Grazie. In qualche modo mi mancava il fatto che i numeri delle sequenze aumentassero monotonicamente. –

+0

Il sequencer è un modo per implementare i blocchi obbligatori? – ady

Problemi correlati