2012-01-09 5 views
5

rechoncha de Google distribuye gestor de bloqueo tiene una característica llamada "secuenciadores" que me gustaría emular usando ZooKeeper. ¿Hay una buena manera conocida de hacerlo?¿Cómo implementar secuenciadores de bloqueo de estilo Chubby con ZooKeeper?

Un secuenciador funciona de la siguiente manera:

  1. cliente adquiere un bloqueo en un recurso
  2. cliente solicita un secuenciador por su bloqueo, que es una cadena con algunos metadatos
  3. cliente realiza una llamada a una servicio y pasa el secuenciador como un parámetro
  4. El servicio usa el secuenciador para verificar que el cliente todavía tenga el bloqueo antes de procesar la solicitud

El objetivo es evitar una situación en la que un cliente muere después de hacer una llamada a un servicio remoto que debe ser protegido por una cerradura.

El papel principal en la rechoncha está disponible en . Secuenciadores se discuten en la sección 2.4.

Gracias!

Respuesta

6

todos La zookeeper lock recipes implican el proceso de bloqueo crear un sequential ephemeral znode. El nombre del znodo efímero secuencial será único, y el znode dejará de existir si la sesión de taquillas expira debido a que el casillero no envía un latido cardíaco válido dentro del tiempo de espera.

Por lo tanto, el proceso de bloqueo solo necesita pasar el nombre del znode efímero secuencial que creó mientras se bloqueaba al servicio remoto, y el servicio remoto puede verificar la existencia del znode antes del procesamiento.

Puede ser aún tiene el servicio remoto añadir un reloj para la znode, y ser notificado cuando se retira el znode.

+0

Gracias. De alguna manera me perdí el hecho de que los números de secuencia eran monótonamente cada vez mayores. –

+0

¿Es el secuenciador una forma de implementar los bloqueos obligatorios? – ady

Cuestiones relacionadas