J'ai récemment commencé à apprendre Kafka) et je me retrouve avec ces questions.
Quelle est la différence entre Consumer et Stream? Pour moi, si un outil/une application consomme des messages de Kafka est un consommateur du monde Kafka.
En quoi Stream diffère-t-il car il consomme ou produit également des messages vers Kafka? et pourquoi est-il nécessaire, car nous pouvons écrire notre propre application client à l'aide de l'API consommateur et les traiter au besoin ou les envoyer à Spark à partir de l'application consommateur?
J'ai consulté Google à ce sujet, mais je n’ai pas obtenu de bonne réponse à cet égard. Désolé si cette question est trop triviale.
Mise à jour du 9 avril 2018: De nos jours, vous pouvez également utiliser [ ~ # ~] ksql [~ # ~] , le moteur de streaming SQL de Kafka, pour traiter vos données dans Kafka. KSQL est basé sur l’API Streams de Kafka. Il offre également un support de premier ordre pour les "flux" et les "tables". Pensez-y comme le frère SQL de Kafka Streams où vous n'avez pas besoin d'écrire de code de programmation dans Javaou Scala.
quelle est la différence entre l'API grand public et l'API Streams?
L'API Streams de Kafka ( https://kafka.Apache.org/documentation/streams/ ) repose sur les clients producteurs et consommateurs de Kafka. Il est nettement plus puissant et aussi plus expressif que le Kafka client consommateur. Voici quelques-unes des fonctionnalités de l'API Kafka Streams:
map
, filter
, reduce
ainsi que (2) un style impératif API du processeur pour par exemple effectuer un traitement des événements complexes (CEP), et (3) vous pouvez même combiner le DSL et l’API du processeur.Voir http://docs.confluent.io/current/streams/introduction.html pour une introduction plus détaillée, mais toujours de haut niveau, à Kafka Streams. API, qui devrait également vous aider à comprendre les différences par rapport au client consommateur de niveau inférieur Kafka. Il existe également un didacticiel basé sur Docker pour l'API Kafka Streams , sur lequel j'ai écrit un article sur plus tôt cette semaine. .
Alors, en quoi l’API Kafka Streams est-elle différente, car elle consomme ou produit également des messages vers Kafka?
Oui, l'API Kafka Streams peut lire et écrire des données sur Kafka.
et pourquoi est-il nécessaire, car nous pouvons écrire notre propre application client à l'aide de l'API consommateur et les traiter au besoin ou les envoyer à Spark à partir de l'application consommateur?
Oui, vous pouvez écrire votre propre application client. Comme je l’ai déjà mentionné, l’API Kafka Streams utilise le client consommateur Kafka (plus le client producteur), mais vous devez d'implémenter manuellement toutes les fonctionnalités uniques fournies par l'API Streams. Voir la liste ci-dessus pour tout ce que vous obtenez "gratuitement". Il est donc plutôt rare qu'un utilisateur choisisse le client consommateur de bas niveau plutôt que l'API Kafka Streams, plus puissante.