Zookeeper - Présentation
ZooKeeper est un service de coordination distribué pour gérer un grand nombre d'hôtes. La coordination et la gestion d'un service dans un environnement distribué est un processus compliqué. ZooKeeper résout ce problème avec son architecture et son API simples. ZooKeeper permet aux développeurs de se concentrer sur la logique principale de l'application sans se soucier de la nature distribuée de l'application.
Le framework ZooKeeper a été conçu à l'origine sur "Yahoo!" pour accéder à leurs applications de manière simple et robuste. Plus tard, Apache ZooKeeper est devenu un standard pour le service organisé utilisé par Hadoop, HBase et d'autres frameworks distribués. Par exemple, Apache HBase utilise ZooKeeper pour suivre l'état des données distribuées.
Avant d'aller plus loin, il est important que nous sachions une chose ou deux sur les applications distribuées. Alors, commençons la discussion par un bref aperçu des applications distribuées.
Application distribuée
Une application distribuée peut s'exécuter sur plusieurs systèmes d'un réseau à un moment donné (simultanément) en se coordonnant entre elles pour accomplir une tâche particulière de manière rapide et efficace. Normalement, des tâches complexes et chronophages, qui prendront des heures à être exécutées par une application non distribuée (exécutée dans un seul système), peuvent être effectuées en quelques minutes par une application distribuée en utilisant les capacités de calcul de tout le système impliqué.
Le temps nécessaire pour terminer la tâche peut être encore réduit en configurant l'application distribuée pour qu'elle s'exécute sur plus de systèmes. Un groupe de systèmes dans lequel une application distribuée s'exécute est appelé unCluster et chaque machine fonctionnant dans un cluster est appelée un Node.
Une application distribuée comprend deux parties, Server et Clientapplication. Les applications serveur sont en fait distribuées et ont une interface commune afin que les clients puissent se connecter à n'importe quel serveur du cluster et obtenir le même résultat. Les applications clientes sont les outils permettant d'interagir avec une application distribuée.
Avantages des applications distribuées
Reliability - La défaillance d'un ou de quelques systèmes ne fait pas échouer l'ensemble du système.
Scalability - Les performances peuvent être augmentées au fur et à mesure des besoins en ajoutant plus de machines avec des changements mineurs dans la configuration de l'application sans temps d'arrêt.
Transparency - Cache la complexité du système et se présente comme une seule entité / application.
Défis des applications distribuées
Race condition- Deux machines ou plus essayant d'exécuter une tâche particulière, qui ne doit en fait être effectuée que par une seule machine à un moment donné. Par exemple, les ressources partagées ne doivent être modifiées que par une seule machine à un moment donné.
Deadlock - Deux opérations ou plus en attente l'une de l'autre pour se terminer indéfiniment.
Inconsistency - Panne partielle des données.
À quoi sert Apache ZooKeeper?
Apache ZooKeeper est un service utilisé par un cluster (groupe de nœuds) pour se coordonner entre eux et maintenir des données partagées avec des techniques de synchronisation robustes. ZooKeeper est elle-même une application distribuée fournissant des services d'écriture d'une application distribuée.
Les services communs fournis par ZooKeeper sont les suivants -
Naming service- Identifier les nœuds d'un cluster par leur nom. C'est similaire au DNS, mais pour les nœuds.
Configuration management - Informations de configuration les plus récentes et à jour du système pour un nœud de jonction.
Cluster management - Rejoindre / quitter un nœud dans un cluster et l'état du nœud en temps réel.
Leader election - Élire un nœud comme chef de file à des fins de coordination.
Locking and synchronization service- Verrouillage des données lors de leur modification. Ce mécanisme vous aide à effectuer une récupération automatique en cas d'échec tout en connectant d'autres applications distribuées comme Apache HBase.
Highly reliable data registry - Disponibilité des données même lorsqu'un ou quelques nœuds sont en panne.
Les applications distribuées offrent de nombreux avantages, mais elles posent également quelques défis complexes et difficiles à résoudre. Le framework ZooKeeper fournit un mécanisme complet pour surmonter tous les défis. La condition de course et l'impasse sont gérées en utilisantfail-safe synchronization approach. Un autre inconvénient majeur est l'incohérence des données, que ZooKeeper résout avecatomicity.
Avantages de ZooKeeper
Voici les avantages de l'utilisation de ZooKeeper -
Simple distributed coordination process
Synchronization- Exclusion mutuelle et coopération entre les processus serveur. Ce processus aide dans Apache HBase pour la gestion de la configuration.
Ordered Messages
Serialization- Encodez les données selon des règles spécifiques. Assurez-vous que votre application fonctionne de manière cohérente. Cette approche peut être utilisée dans MapReduce pour coordonner la file d'attente afin d'exécuter les threads en cours d'exécution.
Reliability
Atomicity - Le transfert de données réussit ou échoue complètement, mais aucune transaction n'est partielle.