Apuntes de lecturas (readings)
Lectura: «ZooKeeper 3.5 Documentation»
Fuente(s):
ZooKeeper es un servicio de coordinación de alto-rendimiento para aplicaciones distribuidas. Proporciona los siguientes servicios de apoyo a la coordinación:
- Resolución de nombres (naming),
- Gestión de la configuración (configuration management),
- Sincronización (synchronization), y
- Servicios de agrupación (group services).
Con esto facilita la implementación de algoritmos de consenso (consensus), gestión de grupos, elección de líderes, y protocolos de presencia, entre otros.
Introducción a ZooKeeper (ZooKeeper Overview)
Reseña acerca de ZooKeeper (overview)
ZooKeeper expone un conjunto reducido de primitivas que se pueden utilizar para crear aplicaciones de alto nivel. Esta diseñado para ser fácil de programar, y utiliza un modelo de datos basado en árboles, similar a una estructura de directorios. Ha sido construido en Java y dispone de interfaces construidas en Java y en C.
Metas de diseño (design goals)
Las metas de diseño de ZooKeeper han sido:
-
ZooKeeper debe ser simple. Presta servicios de coordinación entre procesos a través de un espacio de nombres jerárquico compartido entre dichos procesos. Su espacio de nombres se almacena en memoria y consiste en registros de datos llamados: znodes.
Tanto por su escalabilidad y rendimiento como por su alta disponibilidad, Zookeeper puede ser utilizado para garantizar acceso estrictamente ordenado a aplicaciones distribuidas de gran escala.
-
ZooKeeper es replicable. Como los procesos distribuidos que pretende coordinar, Zookeeper en sí mismo es un sistema distribuido redundante que proporciona fiabilidad y eliminación de únicos puntos de falla.
A cada grupo de servidores que forman parte de una misma unidad de replicación se les llama: ensemble. Dentro de estos ensembles todos los servidores ZooKeeper se conocen, mantienen una imagen común de su estado en memoria, de los registros de transacción y de las instantáneas (snapshots) del almacenamiento persistente.
Cada cliente ZooKeeper se conecta a un único servidor, manteniendo una conexión TCP que sirve para comunicarse con dicho servidor. En caso de que dicha conexión se rompa, el cliente intentará conectarse a un nuevo servidor.
-
Las transacciones en ZooKeeper están ordenadas cronológicamente. ZooKeeper mantiene el orden estricto de las transacciones, dicho ordenamiento facilita la implementación de protocolos de alto nivel (e.g. primitivas de sincronización, etc.)
-
Finalmente, ZooKeeper es rápido. Está diseñado para soportar cargas de trabajo dominadas en lecturas (read-dominant), por lo que escala muy bien cuando las ratios de lectura versus escritura están por encima de los 10:1.
Getting Started
TODO
Release Notes
TODO