Dans Kafka, je voudrais utiliser un seul courtier, un seul sujet et une seule partition ayant un producteur et plusieurs consommateurs (chaque consommateur obtenant sa propre copie des données du courtier). Compte tenu de cela, je ne veux pas les frais généraux liés à l'utilisation de Zookeeper; Puis-je ne pas utiliser uniquement le courtier? Pourquoi un gardien de zoo est-il indispensable?
136
Zookeeper is network coordinator in a distributed system. Use ZooKeeper extensively for discovery, resource allocation, leader election, and high priority notifications.
Réponses:
Oui, Zookeeper est requis pour exécuter Kafka. À partir de la documentation de mise en route de Kafka:
Quant à savoir pourquoi, les gens ont découvert il y a longtemps que vous devez avoir un moyen de coordonner les tâches, la gestion des états, la configuration, etc. sur un système distribué. Certains projets ont construit leurs propres mécanismes (pensez au serveur de configuration dans un cluster fragmenté MongoDB, ou à un nœud maître dans un cluster Elasticsearch). D'autres ont choisi de tirer parti de Zookeeper en tant que système de coordination de processus distribué à usage général. Ainsi, Kafka, Storm, HBase, SolrCloud, pour n'en nommer que quelques-uns, utilisent tous Zookeeper pour aider à gérer et à coordonner.
Kafka est un système distribué et est conçu pour utiliser Zookeeper. Le fait que vous n'utilisiez aucune des fonctionnalités distribuées de Kafka ne change pas la façon dont il a été construit. Dans tous les cas, l'utilisation de Zookeeper ne devrait pas entraîner de frais généraux. Une question plus importante est de savoir pourquoi vous utiliseriez ce modèle de conception particulier - une implémentation de courtier unique de Kafka manque toutes les fonctionnalités de fiabilité d'un cluster multi-courtiers ainsi que sa capacité à évoluer.
la source
Comme expliqué par d'autres, Kafka (même dans la version la plus récente) ne fonctionnera pas sans Zookeeper.
Kafka utilise Zookeeper pour ce qui suit:
Élire un contrôleur . Le contrôleur est l'un des courtiers et est responsable du maintien de la relation leader / suiveur pour toutes les partitions. Lorsqu'un nœud s'arrête, c'est le contrôleur qui dit aux autres réplicas de devenir des chefs de partition pour remplacer les chefs de partition sur le nœud qui disparaît. Zookeeper est utilisé pour élire un contrôleur, assurez-vous qu'il n'y en a qu'un et en élire un nouveau s'il plante.
Appartenance au cluster - quels courtiers sont vivants et font partie du cluster? ceci est également géré via ZooKeeper.
Configuration des sujets - quels sujets existent, combien de partitions chacun possède, où se trouvent les répliques, qui est le leader préféré, quelles sont les remplacements de configuration définis pour chaque sujet
(0.9.0) - Quotas - combien de données chaque client est-il autorisé à lire et à écrire
(0.9.0) - ACL - qui est autorisé à lire et à écrire dans quel sujet (ancien consommateur de haut niveau) - Quels groupes de consommateurs existent, qui sont leurs membres et quel est le dernier décalage obtenu par chaque groupe pour chaque partition.
[de https://www.quora.com/What-is-the-actual-role-of-ZooKeeper-in-Kafka/answer/Gwen-Shapira ]
En ce qui concerne votre scénario, une seule instance de courtier et un producteur avec plusieurs consommateurs, vous pouvez utiliser le poussoir pour créer un canal et pousser l'événement vers ce canal auquel le consommateur peut s'abonner et transmettre ces événements. https://pusher.com/
la source
Mise à jour importante - août 2019:
La dépendance ZooKeeper sera supprimée d'Apache Kafka . Consultez la discussion de haut niveau dans KIP-500 : Remplacez ZooKeeper par un quorum de métadonnées auto-géré .
Ces efforts nécessiteront quelques versions de Kafka et des KIP supplémentaires. Les contrôleurs Kafka prendront en charge les tâches des tâches ZooKeeper actuelles. Les contrôleurs tireront parti des avantages du journal des événements, qui est un concept fondamental de Kafka.
Certains avantages de la nouvelle architecture Kafka sont une architecture plus simple, une facilité d'opérations et une meilleure évolutivité (par exemple, autoriser des «partitions illimitées».
la source
Mis à jour le juil.2020
Pour la dernière version (2.5.0), ZooKeeper est toujours requis pour exécuter Kafka, mais dans un proche avenir, ZooKeeper sera remplacé par un quorum de métadonnées auto-géré .
Voir les détails dans le KIP-500 accepté .
la source
Kafka est conçu pour utiliser Zookeeper. Il n'y a pas d'échappatoire à cela.
Kafka est un système distribué et utilise Zookeeper pour suivre l'état des nœuds de cluster kafka. Il garde également une trace des sujets Kafka, des partitions, etc.
En regardant votre question, il semble que vous n'avez pas besoin de Kafka. Vous pouvez utiliser n'importe quelle application prenant en charge pub-sub comme Redis , Rabbit MQ ou des solutions hébergées telles que Pub-nub .
la source
IMHO Zookeeper n'est pas une surcharge, mais vous facilite la vie.
Il est essentiellement utilisé pour maintenir la coordination entre les différents nœuds d'un cluster. L'une des choses les plus importantes pour Kafka est qu'il utilise zookeeper pour valider périodiquement des offsets afin qu'en cas de défaillance du nœud, il puisse reprendre à partir du décalage précédemment engagé (imaginez-vous en train de prendre soin de tout cela par vous-même).
Zookeeper joue également un rôle essentiel pour servir de nombreux autres objectifs, tels que la détection de leader, la gestion de la configuration, la synchronisation, la détection du moment où un nouveau nœud rejoint ou quitte le cluster, etc.
Les futures versions de Kafka prévoient de supprimer la dépendance de gardien de zoo, mais à partir de maintenant, elle en fait partie intégrante.
Voici quelques lignes tirées de leur page FAQ:
Pour plus de détails, cliquez ici
la source
IMHO zookeeper is not an overhead but makes your life a lot easier.
-> pas du point de vue d'un sysop. Zk est un morceau de vieux java rétrograde. Il a par exemple un long bogue en suspens en ce qu'il n'adhère pas au ttl d'une entrée DNS et ne résoudra donc pas une entrée. Hors de la fenêtre, vos possibilités d'échange de serveur. Je l'échangerais volontiers contre etcd.Zookeeper est un système de centralisation et de gestion pour tout type de systèmes distribués. Le système distribué est constitué de différents modules logiciels s'exécutant sur différents nœuds / clusters (peut-être sur des emplacements géographiquement éloignés) mais fonctionnant comme un seul système. Zookeeper facilite la communication entre les nœuds, partage les configurations entre les nœuds, il garde la trace de quel nœud est le leader, quel nœud rejoint / quitte, etc. Zookeeper est celui qui garde les systèmes distribués sains et maintient la cohérence. Zookeeper est essentiellement une plateforme d'orchestration.
Kafka est un système distribué . Et par conséquent, il a besoin d'une sorte d'orchestration pour ses nœuds qui peuvent être géographiquement distants (ou non).
la source
Oui, Zookeeper est incontournable pour Kafka. Parce que Zookeeper a la responsabilité d'une sorte de gestion du cluster Kafka. Il contient la liste de tous les courtiers Kafka. Il avertit Kafka, si un courtier tombe en panne, ou une partition tombe en panne ou un nouveau courtier est actif ou la partition est active. En bref, ZK tient chaque courtier Kafka informé de l'état actuel du cluster Kafka.
Ensuite, chaque client Kafka (producteur / consommateur) doit simplement se connecter avec un courtier unique et ce courtier a toutes les métadonnées mises à jour par Zookeeper, de sorte que le client n'a pas à se soucier des maux de tête de découverte de courtier.
la source
Outre le transfert de messages de charge utile habituel, il existe de nombreuses autres communications qui se produisent dans kafka, comme
Zookeeper lui-même est un système distribué composé de plusieurs nœuds dans un ensemble. Zookeeper est un service centralisé pour maintenir ces métadonnées.
la source
Cet article explique le rôle du gardien de zoo dans Kafka. Il explique comment kafka est sans état et comment zookeper joue un rôle important dans la nature distribuée de kafka (et de nombreux autres systèmes distribués).
la source
La demande d'exécuter Kafka sans Zookeeper semble être assez courante. La bibliothèque Charlatan répond à cela.
Selon la description, Charlatan est plus ou moins une simulation pour Zookeeper, fournissant les services Zookeeper soit sauvegardés par d'autres outils, soit par une base de données.
J'ai rencontré cette bibliothèque en traitant du produit principal des auteurs pour la bibliothèque Charlatan; là ça marche bien…
la source
Apache ZooKeeper est un magasin distribué qui est utilisé pour fournir des services de configuration et de synchronisation d'une manière hautement disponible. Dans les versions plus récentes de Kafka, un travail a été effectué pour que les clients clients ne stockent pas d'informations sur la mesure dans laquelle ils avaient consommé des messages (appelés décalages) dans ZooKeeper
.This reduced usage did not get rid of the need for consensus and coordination in distributed systems however.
Alors que Kafka offre la tolérance aux pannes et la résilience , quelque chose est nécessaire pour fournir le coordination nécessaire et ZooKeeper active cette partie du système global.Se mettre d'accord sur l'identité du leader d'une partition est un exemple de l'application pratique de ZooKeeper au sein de l'écosystème Kafka.
Ceux-ci sont tirés du livre Kafka In Action . L'image provient de ce cours
la source