web-dev-qa-db-fra.com

Zookeeper est-il un must pour Kafka?

Dans Kafka, je voudrais utiliser un seul courtier, un seul sujet et une seule partition avec un producteur et plusieurs consommateurs (chaque consommateur recevant sa propre copie des données du courtier). Compte tenu de cela, je ne veux pas des frais généraux liés à l'utilisation de Zookeeper; Puis-je ne pas utiliser que le courtier? Pourquoi un gardien de zoo doit-il?

88
Paaji

Oui, Zookeeper est requis pour exécuter Kafka. De la Kafka Documentation de prise en main:

Étape 2: démarrez le serveur

Kafka utilise zookeeper, vous devez donc d'abord démarrer un serveur zookeeper si vous n'en avez pas déjà un. Vous pouvez utiliser le script de commodité fourni avec kafka) pour obtenir une instance de zookeeper à noeud unique rapide et sale.

Pour ce qui est de savoir pourquoi, il y a bien longtemps, des gens ont découvert qu'il fallait trouver 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é polyvalent. Donc, 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é 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 elle a été construite. Quoi qu'il en soit, l'utilisation de Zookeeper ne devrait pas occasionner beaucoup de frais généraux. Une question plus importante est de savoir pourquoi. utiliserait ce modèle de conception particulier - une implémentation de courtier unique de Kafka) passe à côté de toutes les caractéristiques de fiabilité d’un cluster multi-courtiers, ainsi que de sa capacité à évoluer.

102
John Petrone

Comme expliqué par d'autres, Kafka (même dans la version la plus récente) ne fonctionnera pas sans Zookeeper.

Kafka utilise Zookeeper pour:

Election d'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 est arrêté, c'est le contrôleur qui demande aux autres répliques de devenir des leaders de partition afin de remplacer les leaders de partition sur le nœud en train de disparaître. Zookeeper est utilisé pour élire un contrôleur, assurez-vous qu'il n'y en a qu'un et élisez un nouveau s'il tombe en panne.

Appartenance à un cluster - quels courtiers sont en vie et font partie du cluster? ceci est également géré par ZooKeeper.

Configuration de la rubrique - Quelles rubriques existent, combien de partitions ont-elles chacune? Où sont les réplicas? Qui est le leader préféré? Quelles sont les remplacements de configuration définis pour chaque rubrique?

(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 offset que chaque groupe a obtenu de 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 seul producteur avec plusieurs consommateurs, vous pouvez utiliser poussoir pour créer un canal et envoyer un événement à ce canal auquel le consommateur peut s'abonner et lui remettre ces événements. https://pusher.com/

48
Kevin Li

Kafka est construit pour utiliser Zookeeper. Il n'y a pas d'échappatoire à cela.

Kafka est un système distribué et utilise Zookeeper pour suivre le statut des nœuds de cluster kafka). Il conserve également la trace de Kafka, 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 telle que Redis , Rabbit MQ ou des solutions hébergées telles que Pub-nub .

10
Santosh Rout

IMHO Zookeeper n'est pas une surcharge mais vous rend la vie beaucoup plus facile.

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-ce qu’elle utilise zookeeper pour valider périodiquement des décalages afin qu’elle puisse reprendre en cas de défaillance de nœud le décalage précédemment engagé (imaginez-vous vous occuper de tout cela par votre posséder).

Zookeeper joue également un rôle essentiel dans de nombreuses autres applications, telles 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.

Future Kafka prévoient de supprimer la dépendance de zookeeper, mais à partir de maintenant, cela en fait partie intégrante.

Voici quelques lignes tirées de leur page FAQ:

Une fois que le quorum de Zookeeper est épuisé, les courtiers peuvent entraîner un mauvais état et ne peuvent normalement pas répondre aux demandes des clients, etc. Bien que, lorsque le quorum de Zookeeper se rétablisse, les courtiers Kafka devraient pouvoir revenir à un état normal automatiquement, il y a encore quelques cas où ils ne le peuvent pas et une récupération et un arrêt dur sont nécessaires pour le ramener à la normale. Il est donc recommandé de surveiller de près votre cluster de gardiens de zoo et de le configurer afin qu'il soit performant.

Pour plus de détails, consultez ici

6
user2720864

Mise à jour importante - août 2019:

La dépendance de ZooKeeper sera supprimée d’Apache Kafka . Voir la discussion de haut niveau dans KIP-500 : remplacez ZooKeeper par un quorum de métadonnées autogéré .

Ces efforts prendront quelques-unes des versions Kafka et des KIP supplémentaires). Kafka Les contrôleurs prendront en charge les tâches des tâches actuelles de ZooKeeper. Ils en tireront parti Event Log qui est un concept de base de Kafka.

Certains avantages de la nouvelle architecture Kafka) sont une architecture plus simple, une facilité d’opération et une évolutivité améliorée (par exemple, autoriser des "partitions illimitées".

3
Kai Wähner

Outre le transfert habituel de messages utiles, il existe de nombreuses autres communications en kafka. like * Evénements liés aux courtiers demandant l’appartenance au cluster * Evénements liés à la disponibilité des courtiers * Obtention de bootstrap). * Evénements liés aux mises à jour des contrôleurs et des leaders. * Mises à jour de l’aide, telles que les mises à jour Heartbeat.

Zookeeper est un système distribué constitué de plusieurs nœuds dans un ensemble. Zookeeper est un service centralisé permettant de gérer de telles métadonnées.

2
Amulya

Zookeeper est un système de centralisation et de gestion pour tout type de systèmes distribués. Un système distribué est constitué de différents modules logiciels fonctionnant sur différents nœuds/clusters (pouvant se trouver sur des emplacements géographiquement distants) mais fonctionnant comme un seul système. Zookeeper facilite la communication entre les nœuds, partage les configurations entre les nœuds, garde la trace du nœud leader, du nœud qui rejoint/quitte, etc. Zookeeper est celui qui préserve les systèmes distribués et maintient la cohérence. Zookeeper est fondamentalement une plate-forme d'orchestration.

Kafka est un système distribué. Et par conséquent, nécessite une sorte d’orchestration pour ses nœuds qui peuvent être géographiquement distants (ou non).

2
Shree