409 votes

Explication de Apache ZooKeeper

J'essaie de comprendre ZooKeeper, comment il fonctionne et ce qu'il fait. Existe-t-il une application comparable à ZooKeeper ?

Si vous le savez, comment décririez-vous ZooKeeper à un profane ?

J'ai essayé apache wiki, zookeeper sourceforge...mais je ne suis toujours pas capable de m'y retrouver.

Je viens de lire http://zookeeper.sourceforge.net/index.sf.shtml Il n'y a donc pas plus de services de ce type ? Est-ce aussi simple que de répliquer un service de serveur ?

7 votes

Similaire mais pas la réponse exacte que vous recherchez : stackoverflow.com/questions/1479442/real-world-use-of-zookeeper

3 votes

0 votes

Vous pouvez lire ce document ZooKeeper : Coordination sans attente pour les systèmes à l'échelle d'Internet Écrit par deux ingénieurs de Yahoo !

3voto

neel4soft Points 92

Zookeeper est un serveur open-source centralisé pour maintenir et gérer les informations de configuration, les conventions de nommage et la synchronisation pour un environnement de cluster distribué. Zookeeper aide les systèmes distribués à réduire leur complexité de gestion en fournissant une faible latence et une haute disponibilité. Zookeeper était initialement un sous-projet de Hadoop, mais c'est maintenant un projet indépendant de haut niveau de l'Apache Software Foundation.

Plus d'informations

3 votes

Qu'est-ce qui vous fait dire que zookeeper est centralisé ? Zookeeper peut et doit être géré de manière distribuée.

0 votes

Pensez-vous qu'Apache Zookeeper peut être utilisé pour exécuter le consensus en tant que système externe comme cela est expliqué dans la question suivante ? stackoverflow.com/q/70088996/5029509

2voto

yyFred Points 192

Je vous suggère les ressources suivantes :

  1. Le papier : https://pdos.csail.mit.edu/6.824/papers/zookeeper.pdf
  2. Le cours offert par le MIT 6.824 à partir de 36 heures : https://youtu.be/pbmyrNjzdDk?t=2198

Je vous suggère de regarder la vidéo, de lire le document, puis de regarder à nouveau la vidéo. Il serait plus facile de comprendre si vous connaissez le Radeau au préalable.

2voto

Michael S Points 456

Mon approche pour comprendre zookeeper a été de jouer avec le client CLI. comme décrit dans Guide de démarrage y Interface de ligne de commande

De cela, j'ai appris que la surface de zookeeper ressemble beaucoup à un système de fichiers et que les clients peuvent créer et supprimer des objets et lire ou écrire des données.

Exemples de commandes CLI

create /myfirstnode mydata
ls /
get /myfirstnode
delete /myfirstnode

Essayez vous-même

Comment créer un environnement zookeper en quelques minutes sur docker pour Windows, linux ou mac :

Mise en place unique :

docker network create dn

Exécutez le serveur dans une fenêtre de terminal :

docker run --network dn --name zook -d zookeeper
docker logs -f zookeeper

Exécutez le client dans une deuxième fenêtre de terminal :

docker run -it --rm --network dn zookeeper zkCli.sh -server zook

Voir aussi documentation de l'image sur dockerhub

0 votes

Pensez-vous qu'Apache Zookeeper peut être utilisé pour exécuter le consensus en tant que système externe comme cela est expliqué dans la question suivante ? stackoverflow.com/q/70088996/5029509

0voto

java_geek Points 2161

En un mot, ZooKeeper vous donne les outils nécessaires pour construire des applications distribuées. Par exemple, supposons que vous avez une application de serveur web distribué fonctionnant sur 10 noeuds. Disons que vous voulez obtenir le nombre total de hits en temps réel. Une façon de le faire est d'écrire une application qui se connecte aux 10 noeuds, obtient le compte de chaque noeud et présente la somme. Alternativement, vous pouvez demander à chaque application de serveur web d'écrire leur nombre d'accès à ZooKeeper à intervalles réguliers et ensuite interroger ZooKeeper pour obtenir le nombre d'accès.

ZooKeeper supporte le verrouillage, la synchronisation, les files d'attente, le service de nommage hiérarchique et bien d'autres choses encore, dès le départ.

ZooKeeper fonctionne sur un cluster de serveurs. Les données sont répliquées sur les nœuds et sont conservées en mémoire. Les clients peuvent se connecter à n'importe quel nœud pour lire et écrire, mais les écritures sont transmises au cluster. leader .

ZooKeeper est éventuellement cohérent : les écritures sont garanties d'être exécutées dans l'ordre où elles ont été reçues du client, les mises à jour sont atomiques, et seront éventuellement répliquées vers d'autres nœuds.

ZooKeeper est largement utilisé par de grands noms tels que Yahoo !, Netflix, Twitter et LinkedIn.

Les cas d'utilisation typiques de ZooKeeper sont les suivants

  1. Service de dénomination
  2. Gestion de la configuration
  3. Synchronisation
  4. Élection du leader
  5. File d'attente des messages
  6. Système de notification

Zookeeper en tant que tel est un peu complexe à mettre en œuvre correctement. Il y a donc un certain nombre de recettes disponibles qui aident à simplifier l'implémentation recettes de gardien de zoo

Zookeeper est utilisé dans de nombreux projets open source tels que HBase (élection du leader), Kafka (synchronisation entre les brokers, les consommateurs), Solr (gestion de la configuration), Hadoop, Flume, etc. en raison des capacités qu'il offre pour la construction d'applications distribuées.

Zookeeper peut également être utilisé comme une solution d'enregistrement/découverte de services dans une SOA.

  1. Pinterest utilise zookeeper pour l'enregistrement et la découverte des services et pour la gestion de la configuration dynamique. gardien de zoo sur Pinterest

  2. Airbnb possède son propre Smartstack open source, qui est construit au-dessus de Zookeeper pour l'enregistrement et la découverte des services et de HAProxy pour l'équilibrage des charges entre les instances d'un service dans une architecture orientée services. gardien de zoo à Airbnb

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X