2010-06-30 16 views
5

Estoy tratando de implementar un sistema de transacción para Cassandra con la ayuda de ZooKeeper. Dado que no creo tener suficiente experiencia en la implementación de la base de datos, me gustaría saber si mi idea funcionaría en principio, o si existe algún error importante.Transacción de Cassandra con ZooKeeper - ¿Funciona?

Aquí está la descripción de alto nivel de los pasos:

  1. identificar todas las filas (claves) y columnas para ser editados. Deje que las claves sean [K0..Kn]
  2. aplican bloqueo de escritura en todas las filas involucradas (bloqueos son en memoria aplicación Zookeeper)
  3. copiar los viejos valores para separar las localidades de Cassandra que se identifican de forma única por clave: [ K'0..K'n]
  4. tienda [K'0..K'n] y la asignación de ellos a [K0..Kn] en ZooKeeper utilizando el modo persistente
  5. adelante, aplique la actualización a la
  6. datos
  7. borrar las entradas en ZooKeeper
  8. desbloquear las filas
  9. o eliminar las entradas f [K'0..K'n] perezosamente en un hilo de mantenimiento (supresión cassandra utiliza marca de tiempo, por lo K'0..K'n puede ser reutilizado para otra transacción con una marca de tiempo más reciente)

Justificación :

  1. si la transacción falló en el paso 1-4, no se aplica ningún cambio, puedo anular la transacción y eliminar lo que esté almacenado en zookeeper y backup-ed en cassandra, si corresponde.
  2. si la transacción falló en el paso 5, la información guardada en el paso 3 se usa para revertir los cambios.
  3. si el servidor falla/se cuelga/se roba por limpieza, al reiniciar antes de atender cualquier solicitud, verifico si hay alguna clave persistente en el zookeeper desde el paso 4, si es así, usaré esas claves para buscar hizo una copia de seguridad de los datos almacenados en el paso 3 y los puso en el lugar donde se encontraban, por lo tanto, revertir las transacciones fallidas.

Una de mis preocupaciones es qué pasaría si algunos de los servidores están particionados desde el clúster. No tengo experiencia en esta área, ¿mi esquema funciona en absoluto? y funciona si ocurre una partición?

+0

supongo que tendrá que averiguarlo yo mismo y dejar que ustedes saben ... – Viele

Respuesta