Apache ZooKeeper es un servidor de código abierto para la coordinación distribuida altamente confiable de aplicaciones en la nube. [2] Es un proyecto de la Apache Software Foundation .
Desarrollador (es) | Fundación de software Apache |
---|---|
Lanzamiento estable | 3.6.2 / 9 de septiembre de 2020 [1] |
Repositorio | Repositorio de ZooKeeper |
Escrito en | Java |
Sistema operativo | Multiplataforma |
Tipo | Computación distribuída |
Licencia | Licencia Apache 2.0 |
Sitio web | cuidador del zoológico |
ZooKeeper es esencialmente un servicio para sistemas distribuidos que ofrece un almacén de clave-valor jerárquico , que se utiliza para proporcionar un servicio de configuración distribuida , un servicio de sincronización y un registro de nombres para grandes sistemas distribuidos (consulte Casos de uso ). [3] ZooKeeper era un subproyecto de Hadoop, pero ahora es un proyecto Apache de alto nivel por derecho propio.
Descripción general
La arquitectura de ZooKeeper admite alta disponibilidad a través de servicios redundantes . De este modo, los clientes pueden preguntar a otro líder de ZooKeeper si el primero no responde. Los nodos de ZooKeeper almacenan sus datos en un espacio de nombres jerárquico, muy parecido a un sistema de archivos o una estructura de datos de árbol . Los clientes pueden leer y escribir en los nodos y de esta manera tener un servicio de configuración compartido. ZooKeeper puede verse como un sistema de transmisión atómico , a través del cual las actualizaciones están totalmente ordenadas . El protocolo ZooKeeper Atomic Broadcast (ZAB) es el núcleo del sistema. [4]
ZooKeeper es utilizado por empresas como Yelp , Rackspace , Yahoo! , [5] Odnoklassniki , Reddit , [6] NetApp SolidFire , [7] Facebook , [8] Twitter [9] y eBay , así como sistemas de búsqueda empresarial de código abierto como Solr . [10]
ZooKeeper sigue el modelo del servicio de bloqueo Chubby de Google [11] [12] y se desarrolló originalmente en Yahoo! para agilizar los procesos que se ejecutan en clústeres de big data almacenando el estado en archivos de registro locales en los servidores de ZooKeeper. Estos servidores se comunican con las máquinas cliente para proporcionarles la información. ZooKeeper se desarrolló para corregir los errores que ocurrían al implementar aplicaciones distribuidas de big data.
Algunas de las características principales de Apache ZooKeeper son:
- Sistema confiable: este sistema es muy confiable ya que sigue funcionando incluso si falla un nodo.
- Arquitectura simple: la arquitectura de ZooKeeper es bastante simple ya que hay un espacio de nombres jerárquico compartido que ayuda a coordinar los procesos.
- Procesamiento rápido: ZooKeeper es especialmente rápido en cargas de trabajo de "lectura dominante" (es decir, cargas de trabajo en las que las lecturas son mucho más comunes que las escrituras).
- Escalable: el rendimiento de ZooKeeper se puede mejorar agregando nodos.
Arquitectura
Algunas terminologías comunes con respecto a la arquitectura de ZooKeeper:
- Nodo: los sistemas instalados en el clúster
- ZNode: los nodos donde el estado es actualizado por otros nodos en el clúster
- Aplicaciones cliente: las herramientas que interactúan con las aplicaciones distribuidas.
- Aplicaciones de servidor: permite que las aplicaciones cliente interactúen utilizando una interfaz común.
Los servicios del clúster se replican y almacenan en un conjunto de servidores (llamado "conjunto"), cada uno de los cuales mantiene una base de datos en memoria que contiene todo el árbol de estado de datos, así como un registro de transacciones e instantáneas almacenadas de forma persistente. Varias aplicaciones cliente pueden conectarse a un servidor, y cada cliente mantiene una conexión TCP a través de la cual envía solicitudes y latidos y recibe respuestas y observa eventos para monitorear. [13]
Casos de uso
Los casos de uso típicos de ZooKeeper son:
- Servicio de nombres
- Gestión de la configuración
- Sincronización de datos
- Elección de líder
- Cola de mensajes
- Sistema de notificación
Bibliotecas cliente
Además de las bibliotecas cliente incluidas con la distribución de ZooKeeper, hay disponibles varias bibliotecas de terceros, como Apache Curator y Kazoo, que facilitan el uso de ZooKeeper, agregan funcionalidad adicional, lenguajes de programación adicionales, etc.
Proyectos de Apache usando ZooKeeper
- Apache Hadoop
- Apache Accumulo
- Apache HBase
- Apache Hive
- Apache Kafka
- Apache Solr
- Apache Spark
- Apache NiFi
- Apache Druida
- Apache Helix
Ver también
- Hadoop
Referencias
- ^ "Apache ZooKeeper - lanzamientos" . Consultado el 10 de diciembre de 2020 .
- ^ "Apache Zookeeper4" . Consultado el 31 de enero de 2021 .
- ^ "Índice - Apache ZooKeeper - Apache Software Foundation" . cwiki.apache.org . Consultado el 26 de agosto de 2016 .
- ^ "Descripción general de Zookeeper" .
- ^ "ZooKeeper / Desarrollado por" . Archivado desde el original el 9 de diciembre de 2013 . Consultado el 25 de enero de 2012 .
- ^ "Por qué Reddit cayó el 11 de agosto" .
- ^ "5 desafíos de Big DaaS y cómo superarlos | Sala de prensa de NetApp" . Sala de prensa de NetApp . 2016-06-20 . Consultado el 24 de mayo de 2017 .[ enlace muerto permanente ]
- ^ "Distribución según la ubicación: configuración de servidores a escala" . Código de Facebook . 2018-07-19 . Consultado el 20 de julio de 2018 .
- ^ "ZooKeeper en Twitter" . Blog de ingeniería de Twitter . 2018-10-11 . Consultado el 8 de diciembre de 2018 .
- ^ "SolrCloud" .
- ^ Burrows, Mike (2006). "El servicio de bloqueo Chubby para sistemas distribuidos débilmente acoplados" . 7º Simposio USENIX sobre Diseño e Implementación de Sistemas Operativos (OSDI) .
- ^ Chandra, Tushar Deepak; Griesemer, Robert; Redstone, Joshua (2007). "Paxos Made Live - Una perspectiva de ingeniería (charla invitada 2006)" . Investigación de Google . Consultado el 3 de marzo de 2020 .
- ^ "Guardián del zoológico" .
enlaces externos
- Página web oficial