ZooKeeper meilleur guide - pile de technologie de plate-forme cloud

plate-forme Cloud 0-1 l'attention du public sur lui comme No.

EXAMEN: Avant de publier la pile de la technologie de plate-forme cloud (ps: Cliquer pour voir), parler principalement sur le Zookeeper eux!

avant-propos

Je crois que nous ne devrions pas peu familiers à ZooKeeper. Mais savez-vous vraiment ZooKeeper est ce qu'il? Si quelqu'un d'autre / intervieweur vous demande de lui donner quelque chose au sujet ZooKeeper est ce qui, dans quelle mesure pouvez-vous répondre?

Je me suis utilisé comme centre d'enregistrement ZooKeeper Dubbo, et l'autre dans le temps de construire un solr de cluster, je l'habitude d'outils de gestion de cluster ZooKeeper comme solr. Il y a quelques jours, a résumé l'expérience du projet, je me suis soudain demandé ZOOKEEPER à la fin est quoi? Comme depuis longtemps, l'esprit ne peut tout simplement émerger de quelques mots: « Zookeeper peut être utilisé comme un centre d'enregistrement .Zookeeper est un écosystème Hadoop, lors de la construction grappe Zookeeper, le serveur utilise le meilleur est des unités impaires. « Ainsi, je suis Zookeeper comprendre juste rester dans la surface.

Par conséquent, Dans cet article, nous espérons apporter un peu plus de détails pour savoir ZooKeeper. Si vous ne l'avez pas appris ZooKeeper, alors cet article sera votre porte pour entrer dans des briques ZooKeeper pieds. Si vous avez des contacts avec ZooKeeper, alors cet article vous amène à revoir quelques-uns des concepts de base de ZooKeeper.

Enfin, Cet article ne couvre que quelques-uns des concepts ZooKeeper n'implique pas l'utilisation de structures et de cluster ZooKeeper ZooKeeper.  L'utilisation de l'Internet a introduit ZooKeeper ZooKeeper et construire un groupe d'articles, vous devrez peut-être d'avoir leur opinion.

Qu'est-ce qu'un ZooKeeper

L'origine de ZooKeeper

Ci-dessous cet extrait « de Paxos à Zookeeper » un morceau de contenu Chapitre IV, Section, je recommande la lecture de ce qui suit:

Zookeeper son origine dans un groupe de recherche sur Yahoo! Recherche. À l'époque, les chercheurs ont constaté que, dans de nombreux grands besoins du système de base de Yahoo interne à compter sur un système similaire pour la coordination distribuée, mais ces systèmes sont souvent distribués l'existence d'un seul point. Par conséquent, Les développeurs de Yahoo ont essayé de développer un cadre commun pour la coordination de la distribution sans point unique de l'émission, afin de permettre aux développeurs de se concentrer sur la logique métier. À propos du nom « ZooKeeper » Ce projet est, en fait, il y a quelques anecdotes. Au début du projet, avant de prendre en compte les nombreux projets internes utilisent le nom de l'animal nommé (comme le fameux projet Pig), les ingénieurs de Yahoo ont voulu donner à ce projet aussi prendre le nom d'un animal. Institut scientifique en chef RaghuRamakrishnan quand il dit en plaisantant: « En cela continue, nous sommes là pour devenir le zoo » Ses paroles, nous avons exprimé zookeepers ont appelé cent onze nommé parce que chaque distribution des animaux les composants de la formule ensemble, ensemble de Yahoo regards du système distribué comme un grand zoo, mais juste à utiliser pour la coordination de l'environnement distribué Zookeeper onze puis, le nom de Zookeeper aussi est né.

1.1 ZooKeeper Vue d'ensemble

ZooKeeper est un service de coordination distribuée open source, cadre ZooKeeper à l'origine sur « Yahoo! » construit pour un moyen simple et robuste pour accéder à leurs applications. Plus tard, Apache ZooKeeper devenir la norme des services organisés Hadoop, HBase et autres cadres distribués à l'utilisation. Par exemple, hbase distribué des données en utilisant l'état de suivi ZooKeeper. L'objectif de ZooKeeper est de concevoir la cohérence complexe et sujette à erreur distribuée de paquets de services pour former un ensemble très efficace et fiable des primitives, et une série de facile à utiliser l'interface pour les utilisateurs.

primitives:  système d'exploitation réseau informatique ou d'une catégorie de langue. Il est composé par un certain nombre d'instructions d'un processus pour compléter certaines fonctions. · Que l'exécutif a l'indivisibilité des primitives doit être continue, ne pas être interrompu lors de l'exécution.

ZooKeeper est une des solutions de cohérence des données distribuées typiques, les applications distribuées peuvent être réalisées à partir des données ZooKeeper telles que publish / subscribe, l'équilibrage de charge, les services de nom, distribuée coordination / notification, gestion de cluster, élection Master, verrouillage distribué et la distribution type et faire la queue.

Zookeeper l'un des plus scénario d'utilisation commune est pour son service aux producteurs et aux consommateurs du registre de service.  les producteurs de services offriront leurs propres services au centre Zookeeper enregistré, le service de recherche de service à la clientèle au cours de la première fois dans l'appel de service Zookeeper, après avoir obtenu les producteurs de services d'information détaillés, aller à des services de contenu d'appel et les producteurs de données . Comme on le voit ci-dessous, dans l'architecture Dubbo Zookeeper servi comme centre d'enregistrement dans ce rôle.

Dubbo

1.2 combiné à usage personnel à parler ZooKeeper

Dans mes propres projets réalisés principalement utilisé pour ZooKeeper comme centre d'inscription à Dubbo (officiel Dubbo recommandé registre ZooKeeper). De plus dans le bâtiment cluster solr, comme je l'utilise solr ZooKeeper outils de gestion de cluster. A cette époque, ZooKeeper fournit principalement plusieurs fonctions à ce qui suit: 1, gestion de cluster: la tolérance aux pannes, l'équilibrage de charge. 2, gestion centralisée profils 3, entrée de grappes.

Je me sens personnellement lors de l'utilisation ZooKeeper, il est préférable d'utiliser une version de groupe de la ZooKeeper plutôt que la version autonome. Graphique donné sur le site officiel décrit une version de groupe de ZooKeeper. Habituellement, trois serveur peut former un groupe de ZooKeeper.

Pourquoi est préférable d'utiliser un nombre impair de serveurs constituent groupe ZooKeeper?

La tolérance aux pannes est la soi-disant Zookeeper, Zookeeper lorsque le Abattre plusieurs serveurs, le nombre doit être supérieur au nombre restant de Abattre les mots entiers Zookeeper était toujours disponible. Si notre groupe il y a serveur n Zookeeper, qui est, le nombre de services restant doit être supérieur à n / 2. Permettez-moi de parler des conclusions, 2n-12n, et la tolérance sont les mêmes, sont n-1, nous pouvons penser à eux-mêmes d'abord, cela devrait être un problème mathématique très simple. Par exemple, si nous avons trois, le tournage maximum autorisé vers le bas serveur Taiwan Zookeeper, si nous avons le temps quatre des permis également que d'abattre Taiwan. Si nous avons cinq, le maximum admissible tirer vers le bas deux serveurs de Zookeeper, si nous avons le temps six également permis seulement abattre deux.

En résumé, pourquoi ajouter inutilement que Zookeeper il?

Deux concepts importants au sujet de la ZooKeeper

2.1 concepts importants Résumer

  • ZooKeeper lui-même est un programme distribué (plus de la moitié aussi longtemps que le nud survivant, ZooKeeper sera en mesure de service normal).
  • Afin d'assurer une haute disponibilité, le mieux est de déployer sous forme de cluster ZooKeeper, aussi longtemps que la plupart des machines du cluster est disponible (peut tolérer un certain degré de défaillance mécanique), le ZooKeeper lui-même est toujours disponible.
  • ZooKeeper données stockées dans la mémoire, ce qui assure également un débit élevé et une faible latence (Cependant, la limite de mémoire qui peut être stockée la capacité ne soit pas trop grande, cette limite est maintenue petite quantité de données stockées dans znode d'autres raisons).
  • ZooKeeper est une haute performance. En haute performance notamment dans les applications « lire » plus que « d'écriture », parce que les causes « d'écriture » parmi tous les serveurs de synchronisation. ( « Lire » plus « écriture » est un service de coordination typique de la scène.)
  • notion ZooKeeper de nuds temporaires. Lors de la création d'une session temporaire client noeud reste actif, les noeuds transitoires a été en existence. Et quand à la fin de la session, sont supprimés nuds transitoires. Une fois que le noeud est un ZNode durable créé, à moins que l'initiative pour mener à bien l'opération d'enlèvement ZNode, sinon cela aurait été enregistré sur ZNode Zookeeper.
  • ZooKeeper fait sous-jacente ne fournit que deux fonctions: la gestion des données (stockage, lecture) le programme utilisateur soumis; soumettre un service de surveillance de nud de données pour le programme utilisateur.

La conversation qui suit au sujet (Session), Znode version, Watcher, concepts ACL sont résumés dans le chapitre IV, section VIII, chapitre VII et mentionne "de Paxos à Zookeeper", look peut intéresser à!

2.2 session (session)

Session se réfère à la session du serveur et le client ZooKeeper. En ZooKeeper, la connexion client est une connexion TCP fait référence à une longueur entre le client et le serveur . Lorsque le client démarre, d'abord établir une connexion TCP avec le serveur, la première connexion est établie depuis le début du cycle de vie de la session client a commencé. Peut être transmis par cette connexion, le client peut maintenir une session valide avec le serveur par le rythme cardiaque Zookeeper la demande et le serveur accepte la réponse, tout en montre reçoit des notifications d'événements du serveur via la connexion.  SESSION.WAIT_TIMEOUT sessionTimeout utilisée pour définir une session client de délai d'attente. En raison de diverses raisons quand trop de pression sur le serveur, une défaillance du réseau ou le client se déconnecte autre client actif déconnecté plomb, Tant que le sessionTimeout Dans le délai prévu à re-connecter un serveur du cluster, la session créée précédemment est toujours valide.

Avant de créer une session pour le client, le serveur d'abord attribuer un idSession pour chaque client. Depuis idSession est important d'identifier une session Zookeeper, beaucoup liés à la session mécanisme de fonctionnement idSession sont basées sur ce point, donc peu importe quel serveur est attribué au client idSession, ne manqueront pas de garantir un unique au monde.

2.3 Znode

Quand il vient à distribuer, nous disons habituellement « nud » fait référence à la composition du groupe chaque machine. Cependant, dans Zookeeper, le « nud » classés en deux types, un premier type composé du même groupe est une machine, la machine que nous appelons un nud, le second fait référence à l'unité de données dans le modèle de données, que nous appelons des données noeud onze zNode.

Zookeeper toutes les données stockées dans la mémoire, le modèle de données est un arbre (Znode Tree), le chemin d'une barre oblique (/) est divisé, il est un znode, par exemple / foo / path1. Chacun sauvegarder vos données sur le contenu, tout en économisant une série d'informations d'attribut.

Dans le Zookeeper, le nud peut être divisé en types de noeuds de noeud temporaires et persistants. Le soi-disant nud persistant se réfère ZNode Une fois que cela est créé, à moins que l'initiative pour mener à bien l'opération d'enlèvement ZNode, sinon cela aurait été enregistré sur ZNode Zookeeper. Le nud temporaire n'est pas le même, son cycle de vie et session client de liaison, une fois la session client échoue, le client crée seront supprimés tous les nuds temporaires. En outre, ZooKeeper permet à un utilisateur d'ajouter un attribut spécial pour chaque noeud: SÉQUENCE Une fois que le noeud est marqué sur cette propriété, lorsque le noeud est créé, Zookeeper automatiquement sur le nom de noeud ajoute un nombre entier, le nombre entier est maintenu par un noeud parent de plus en plus nombreux.

version 2.4

Nous avons déjà mentionné, les données sont stockées sur chaque ZNode Zookeeper, ce qui correspond à chaque ZNode, Zookeeper seront appelés à maintenir un Stat  Structure de données, les données enregistrées dans Stat trois versions de ce ZNode, respectivement la version (ZNode version actuelle), cversion (nuds enfants de ZNode de la version actuelle) et cversion (ACL ZNode la version actuelle).

2,5 Watcher

Watcher (écouteur d'événement), est une caractéristique très importante dans Zookeeper. Zookeeper permet aux utilisateurs d'enregistrer une partie de l'observateur sur le noeud spécifié, et lorsque certains éléments déclencheurs, serveur ZooKeeper avisera les clients à des événements d'intérêt pour finir, ce mécanisme est une caractéristique importante pour obtenir des services de coordination Zookeeper distribués.

2.6 ACL

Zookeeper utilise des politiques (ACL) AccessControlLists aux autorisations de contrôle, similaire au contrôle d'accès au système de fichiers UNIX. Zookeeper définit les cinq types d'autorisations suivantes.

Ce qui, en particulier, il convient de noter que, créer et privilèges de suppression sont les autorisations de contrôle nuds enfants.

Trois ZooKeeper Caractéristiques

  • Cohérence séquentielle:  Originaires des mêmes demandes de transaction du client, et en fin de compte sera strictement appliqué pour aller ZooKeeper.
  • atomicité:  Les résultats de traitement de toutes les demandes de transactions à travers l'application de cluster sur toutes les machines sont les mêmes, qui est, soit l'ensemble du cluster toutes les machines ont été appliquées avec succès à une opération ou ne sont pas appliquées.
  • Système unique Image:  Peu importe où un client est connecté au serveur sur lequel ZooKeeper pour voir le modèle de données du serveur sont cohérentes.
  • fiabilité:  Une fois qu'une demande de modification est appliquée, les résultats de vos modifications seront persisté jusqu'à la prochaine couverture du changement.

Quatre objectifs de conception ZooKeeper

4.1 Modèle de données simple

ZooKeeper permet aux processus distribués par une hiérarchie d'espace partagé coordination mutuelle, qui est similaire au système de fichiers standard. les données d'espace de noms ZooKeeper dans les registres - visés znode, ceux similaires aux fichiers et répertoires. Avec un système de fichiers typique conçu pour stocker différentes données ZooKeeper stockées dans la mémoire, ce qui signifie que ZooKeeper peut atteindre un débit élevé et une faible latence.

4.2 peut construire un cluster

Afin d'assurer une haute disponibilité, de préférence dans les grappes de forme à déployer ZooKeeper, aussi longtemps que la plupart des machines du cluster est disponible (peut tolérer un certain degré de défaillance mécanique), le Zookeeper lui-même est toujours disponible.  Lorsque le client en utilisant ZooKeeper, les clusters ont besoin de connaître la liste des machines à utiliser le service en établissant une connexion TCP à l'une des machines du cluster, les clients utilisent ce lien pour envoyer des requêtes TCP, obtenir des résultats, des événements, et d'obtenir des paquets de rythme cardiaque d'écoute sont envoyés. Si cette connexion est déconnectée de façon anormale, le client peut se connecter à une autre machine.

Graphique ZooKeeper offre officielle:

Chaque figure ci-dessus représente un serveur de service Zookeeper Server est installé. Composition des services de serveur ZooKeeper maintiendront l'état actuel du serveur en mémoire et maintenue entre chaque serveur de communiquer entre eux. Entre le cluster pour maintenir la cohérence des données par le protocole Zab (Zookeeper diffusion atomique).

4.3 accès séquentiel

Pour chaque demande de mise à jour du client, ZooKeeper est attribué un numéro supplémentaire unique au monde, ce chiffre reflète l'ordre, toutes les applications d'opérations de transaction peuvent utiliser cette fonction pour ZooKeeper atteindre un niveau plus élevé de primitives de synchronisation.   Ce numéro est également appelé --zxid horodatage (Zookeeper Transaction Id)

4.4 haute performance

ZooKeeper est une haute performance. En haute performance notamment dans les applications « lire » plus que « d'écriture », parce que les causes « d'écriture » parmi tous les serveurs de synchronisation. ( « Lire » plus « écriture » est un service de coordination typique de la scène.)

Cinq ZooKeeper description du rôle de cluster

Le mode le plus typique trunked: Mode maître / esclave (mode veille) . Dans ce mode, généralement serveur maître fournit des services d'écriture comme serveur principal, les autres serveurs esclaves fournissent des services de lecture pour les dernières données du serveur serveur maître via la réplication asynchrone.

Cependant, Dans ZooKeeper ne choisit pas le concept traditionnel maître / esclave, mais l'introduction du chef, Follower et observateurs trois rôles . Comme le montre la figure.

Toutes les machines ZooKeeper cluster pour sélectionner une machine appelée un « leader » dans le processus électoral par un chef, le client leader qui peut offrir des services de rédaction peut fournir des services de lecture. En plus de Leader, Suiveur et observateur ne peut fournir des services de lecture. Suiveur et Observer seule différence est que la machine ne participe pas au processus électoral observateur Leader, ni impliqué dans l'opération d'écriture, « a écrit plus de la moitié succès » stratégie, donc la machine Observer peut améliorer les performances de lecture du cluster dans le cas ne modifie pas les performances en écriture.

Lorsque le serveur Leader a des pannes de réseau, des accidents et d'autres anomalies quitter et redémarrer, un accord ZAB peut passer en mode de récupération et l'élection d'un nouveau serveur Leader. Ce processus est à peu près comme ceci:

  • élection du chef (période électorale) : Les nuds sont dans les premières étapes de l'élection, tant qu'il y est un nud de nud reçoit plus de la moitié des voix, il peut chef quasi élu.
  • Discovery (phase de découverte) : A ce stade, les adeptes de communiquer avec le leader potentiel, les adeptes de synchronisation de transaction proposés récemment reçus.
  • Synchronisation (phase de synchronisation) : La phase synchrone est l'utilisation du dernier chef historique de la proposition de l'étape précédente pour obtenir toutes les copies groupe synchronisées. Une fois la synchronisation terminée quasi-leader va devenir un véritable leader.
  • Diffusion (stade de diffusion)  : A ce stade, groupe Zookeeper pour fournir officiellement des services de transaction, et le chef peut diffuser des messages. Et s'il y a un nouveau nud est ajouté, vous devez également synchroniser le nouveau nud.
  • Six protocole ZooKeeper & ZAB & Paxos algorithme

    6.1 Protocole ZAB et algorithme Paxos

    algorithme Paxos faut dire que l'âme du ZooKeeper. Cependant, ZooKeeper pas complètement algorithme Paxos, mais l'utilisation du protocole ZAB que ses algorithmes de base pour assurer la cohérence des données. En outre, le fonctionnaire a également souligné que le document accord ZooKeeper, ZAB ne pas comme algorithme Paxos comme un algorithme de consensus universel distribué, il est le message atomique algorithme de diffusion conçu spécifiquement pour l'effondrement Zookeeper recouvrable.

    6.2 accord ZAB introduit

    Protocole ZAB (ZooKeeper atomique de diffusion atomique de diffusion) est une reprise de plantage de support du protocole de diffusion atomique pour le service de coordination distribuée conçu ZooKeeper. Dans ZooKeeper reposent principalement protocole de cohérence des données distribuées ZAB pour atteindre, en fonction de l'accord, l'architecture du système pour ZooKeeper réalisé principal mode veille pour maintenir la cohérence des données entre les copies de chaque groupe.

    Deux modes de base 6.3 Protocole ZAB: un message de diffusion et crash recovery

    protocole ZAB comprend deux modes de base, à savoir Reprise sur incident et la diffusion de messages . Lorsque l'ensemble du cadre de service lors du démarrage ou lorsque le serveur va pannes de réseau Leader, accidents et autres anomalies quitter et redémarrer lorsque, un accord ZAB peut passer en mode de récupération et l'élection d'un nouveau serveur Leader. Une fois élu le nouveau serveur de leader, le groupe a réalisé plus de la moitié des machines et le leader du serveur de synchronisation d'état, un accord ZAB quitte le mode de récupération. Parmi eux, Il fait référence à la soi-disant la synchronisation des données de synchronisation d'état, le cluster est utilisé pour assurer la présence de plus de la moitié de la machine pour être compatible avec les Etats données du serveur leader .

    Lorsque le groupe a réalisé plus de la moitié de l'état de synchronisation du serveur et le serveur Suiveur de Leader, l'ensemble du cadre de service peut entrer dans un mode de diffusion des messages.  Quand un serveur ZAB sont également conformes à l'accord pour commencer à ajouter des personnes à un cluster, si le cluster existe déjà à ce moment un serveur Leader responsable de la diffusion du message, l'ajout de nouvelles données de serveur consciemment en mode de récupération: Leader où trouver le serveur et sa synchronisation de données, puis ensemble pour participer à une émission de message au processus. Comme indiqué dans l'introduction ci-dessus, ZooKeeper conçu pour permettre un seul serveur à la demande de transaction Leader processus. serveur Leader après avoir reçu une demande de transaction d'un client, il va générer une proposition de transaction correspondante et lancer un protocole de diffusion, et si les autres machines du cluster reçoit une demande de transaction d'un client, alors ce serveur non-Leader d'abord cette demande de transaction transmis Leader au serveur.

    sur Protocole ZAB et algorithme Paxos  Besoin de comprendre ce que la paix est trop, pour être honnête, la plume principale et maintenant est peut-être pas les principes de façon claire et précise frères et processus de mise en uvre. Recommandé lire les deux articles suivants:

    • Protocole de consensus graphique Paxos:
    • analyse de protocole Zookeeper ZAB:

    Sur la façon d'utiliser la mise en uvre Zookeeper verrouillage distribué, vous pouvez consulter l'article suivant:

    • analyse de protocole Zookeeper ZAB:
    • https://blog.csdn.net/qiangcuo6087/article/details/79067136

    six résumé

    En lisant cet article, vous devez avoir de

  • L'origine de ZooKeeper.
  • Qu'est-ce ZooKeeper à la fin oui.
  • Quelques concepts importants ZooKeeper (session (session), Znode, version, Watcher, ACL)
  • Caractéristiques de ZooKeeper.
  • Les objectifs de conception de ZooKeeper.
  • ZooKeeper description du rôle de cluster (Leader, Suiveur et observateur trois rôles)
  • Protocole ZooKeeper & ZAB et algorithme Paxos.
  • Cette sept comprendre ZooKeeper, des didacticiels vidéo, vous pouvez professeur privé lettre « apprentissage ».

    principes et pratiques Kafka - pile de technologie de plate-forme cloud
    Précédent
    entrée de programmeurs de semaine Baidu à la fin savez quoi?
    Prochain
    algorithme détaillé brassage: vous pouvez trier, mais vous vous en colère?
    Une connaissance approfondie de la machine virtuelle Java --- apprentissage des idées et des notes
    AI projet de création d'une entreprise, vous devez tenir compte de ces 10 questions
    écosystème Big Data mis à jour à nouveau! Cartouche dans la tendance
    Article concentre 20 ans: vous prenez à travers l'histoire du développement des données de formation
    La Chine est d'abord! premier zoo ouvert la nuit de Shanghai, les Raiders vous aider à faire un bon travail
    Fujian Putian: « Nostalgie rivière longue » Dongzhuang complexe
    FLOURISHES « Alipay koi » La jeune fille, maintenant atteint la limite des cartes de crédit, et parfois tomber dans l'anxiété
    Suning achat des sorts 808 Jour: total d'une journée de 26 millions de commandes individuelles
    LSTM découvrir le mystère de la structure, donc RNN parfait
    Jupyter Notebooks trois __gVirt_NP_NNS_NNPS<__ fonctionnalités supplémentaires facile à piloter
    Puissants arrière-plan « Pokémon » et des tours étranges animaux, bataille aussi pour l'imposer?