Apache ZooKeeper
# Apache ZooKeeper

Apache ZooKeeper est un logiciel open source de la Apache Software Foundation. Il s'agit d'un logiciel de gestion de configuration pour systèmes distribués. ZooKeeper était un sous projet de Hadoop mais il est désormais un projet top-level à part entière.

L'architecture de ZooKeeper supporte une haute disponibilité grâce à des services redondants. Les clients peuvent ainsi interroger un autre leader ZooKeeper si le premier ne répond pas. Les nœuds de ZooKeeper stockent leurs données dans un espace de noms hiérarchique, tout comme un système de fichiers ou une structure de données arborescente. Les clients peuvent lire et écrire dans les nœuds et ainsi avoir un service de configuration partagée. Les mises à jour sont totalement ordonnées.

ZooKeeper est utilisé par des sociétés comme Rackspace, Yahoo!, Odnoklassniki et eBay ainsi que des systèmes de recherche open source comme Solr.

## Architecture Apache ZooKeeper

Voici quelques termes courant dans l'architecture Zookeeper:

* Node: Les systèmes installés sur le cluster.
* ZNode: les nœuds dont le statut est mis à jour par d'autres nœuds du cluster.
* Client Applications: Les outils qui interagissent avec les applications distribuées
* Server Applications: Permet aux applications clientes d'interagir à l'aide d'une interface commune.

Les services du cluster sont répliqués et stockés sur un ensemble de serveurs (appelés "ensemble"), chacun d'entre eux maintiennent une base de données en mémoire contenant l'arbre d'état complet des données ainsi qu'un journal des transactions et des snapshots stockés en permanence. Plusieurs applications client peuvent se connecter à un serveur, et chaque client maintient une connexion TCP par laquelle il envoie des requêtes et des TIC et reçoit des réponses et surveille les événements.

## Cas d'utilisation classique

* Naming service
* Gestion de configuration
* Synchronisation
* Leader election
* File d'attente de message
* Notification system

## Bibliothèques cliente

En plus des bibliothèques clientes incluses dans la distribution ZooKeeper, un certain nombre de bibliothèques tierces telles qu'Apache Curator et Kazoo sont disponibles qui facilitent l'utilisation de ZooKeeper, ajoutent des fonctionnalités supplémentaires.

## Projets Apache utilisant ZooKeeper

* Apache Hadoop
* Apache HBase
* Apache Hive
* Apache Kafka
* Apache Solr

etc.

