Modelo de datos

En zookeeper, se puede decir que todos los datos almacenados en zookeeper están compuestos por znode, los nodos también se denominan znode, y almacenan datos en forma de clave/valor.

La estructura general es similar al modo del sistema de archivos de Linux, se almacena en una estructura de árbol. Donde la ruta raíz/comienza.

Ingrese al directorio bin de la instalación de zookeeper, abra la terminal de línea de comandos con sh zkCli.sh, ejecute el comando "ls /" para mostrar:
$ ls /
$ ls /zookeeper
$ ls /zookeeper/quota

Vemos intuitivamente que los datos almacenados en este momento tienen dos nodos, ejemplo y zookeeper, en el directorio raíz, y debajo del nodo zookeeper existe el nodo quota.

El nodo ejemplo fue creado en el capítulo anterior, y se le estableció el valor 0 mediante el cliente Java. Ahora en la terminal de línea de comandos ejecutamosget /ejemplopara mostrar los atributos de este nodo.

$ get /ejemplo

El 0 que se muestra en la primera línea es el valor de ese nodo.

Atributos de estado de Znode

cZxidID de transacción al crear el nodo
ctimeHora de creación del nodo
mZxidID de transacción de la última modificación del nodo
mtimeHora de la última modificación del nodo
pZxidIndica el ID de transacción de la última modificación de la lista de nodos hijos. Agregar o eliminar nodos hijos afecta la lista de nodos hijos, pero modificar el contenido de datos de los nodos hijos no afecta este ID.(Nota: solo los cambios en la lista de nodos hijos modifican pzxid; los cambios en el contenido de los nodos hijos no afectan a pzxid).
cversionNúmero de versión de los nodos hijos; cada modificación de un nodo hijo incrementa el número de versión en 1.
dataversionNúmero de versión de datos; cada modificación de datos incrementa este número de versión en 1.
aclversionNúmero de versión de permisos; cada modificación de permisos incrementa este número de versión en 1.
ephemeralOwnerEl sessionID de la sesión que creó este nodo temporal.(**Si el nodo es persistente, entonces el valor de este atributo es 0)**
dataLengthLa longitud de los datos del nodo.
numChildrenLa cantidad de nodos hijos que posee el nodo.(Solo se cuenta el número de nodos hijos directos)

Después de comprender los valores de los atributos de estado anteriores, nosotros/ejemplorealizamos una modificación al nodo, ejecutamos el comandoset /ejemplo 1, como se muestra en la siguiente figura:

$ set /ejemplo 1

Comparando los resultados anteriores, se puede ver que mZxid, mtime y dataVersion han cambiado.

En/ejemploDebajo del nodo, agregamos un nodo hijo más, ejecutamos:

$ create -e  /ejemplo/child  0
$ get /ejemplo

Consejo:El uso de más comandos se explicará en detalle en capítulos posteriores.

Después de ejecutar el comando en la terminal, se muestra:

Se puede ver/ejemploLos valores pZxid, cversion y numChildren del nodo han cambiado correspondientemente.