web-dev-qa-db-fra.com

Quels sont les avantages et les inconvénients de Kafka par rapport à Apache Pulsar

Yahoo a développé Pulsar, un système de messagerie pub-sub, et l'a ouvert. C'est maintenant le projet incubateur d'Apache. Depuis Kafka est également utilisé dans le même but. Vous voulez connaître les points principaux plus et moins de Kafka sur Pulsar.

45
Ajit Dongre

J'ai joué un peu avec les deux ces derniers temps, et voici ce que j'ai rassemblé.

Neutre:

  • J'allais gagner Kafka gagner sur la communauté/documentation etc. Mais je n'ai pas pu trouver de réponses aux questions que j'avais sur Kafka facilement, certaines étaient vieux et déroutants (cibler l'API héritée). Mais la documentation de Pulsar est suffisante, les développeurs sont très réactifs sur Slack (hello @Matteo Merli :)), et les éléments sous-jacents (Zookeeper, Bookkeeper) disposent d'une bonne documentation vouloir plonger dans les internes.
  • Kafka vise à haut débit, Pulsar à faible latence. Les deux fournissent des paramètres pour le contrôler.
  • Les deux sont prêts pour la production et testés au combat dans plusieurs entreprises.

Pro pulsar:

  • d'après mon expérience, l'API est plus facile à utiliser. À Kafka, le courtier est stupide et les consommateurs organisent la communication à leur guise. Cette flexibilité se fait au détriment de l’utilisateur Kafka doit comprendre comment assembler les pièces ensemble. Je suppose que l’avantage recherché est une flexibilité accrue, mais Pulsar ayant été en mesure de la répliquer Kafka API consommateurs (et avec assez peu de code), je le donne en tant que professionnel à Pulsar.
  • vous pouvez faire des choses qui ne sont pas faciles à faire (ou peut-être impossible dans Kafka): multi-location (sécurité, isolement ...), gestion des ressources (limitation de sujets, quotas), géo-réplication
  • Il a certaines fonctionnalités qui Kafka manque actuellement, comme la recherche d'un MessageId particulier
  • Pulsar s'adapte à des millions de sujets, whicle Kafka est limité par la façon dont il structure les données dans Zookeeper
  • Déploiement plus facile. Un Pulsar autonome lancera son propre Zookeeper local, et j'ai personnellement trouvé la configuration plus facile à comprendre
  • écrit en Java, par opposition à un mélange d'ancien Scala et Java. En outre, j'ai trouvé la base de code bien organisée et beaucoup plus facile à suivre. En partie parce qu'elle repose sur Zookeeper et Bookkeeper, qui sont des projets externes avec leur propre documentation/communauté/développeurs, etc. (veuillez noter que ceux-ci sont également dans la fondation Apache, et proviennent également de Yahoo afin qu'ils travaillent bien ensemble).

Pro Kafka:

  • Kafka a des choses construites sur le dessus comme Kafka Streams (jamais utilisé donc je ne peux pas dire s'il y a un équivalent))

Lisez aussi:

41
nha

Apache Kafka est plus mature (il existe depuis plus longtemps) et possède des API de niveau supérieur (c'est-à-dire KStreams). Sa maturité limite toutefois la fluidité et la flexibilité, c’est-à-dire environ 500 PR ouverts sur le github.

Apache Pulsar a étudié en profondeur les décisions de Apache Kafka en matière de conception et a intégré une conception améliorée et un ensemble de fonctionnalités intéressantes, à savoir l’idée de namespacing sujets, et permettre d'appliquer des ACL ou des quotas au niveau de l'espace de nommage semble une telle bonne idée de donner une meilleure idée Prise en charge multi-location . Quelques autres fonctionnalités intéressantes de Pulsar sont la géo-réplication , ainsi que l'unification de la mise en file d'attente et du streaming

26

Nous avions besoin d'une plate-forme de streaming avec des sujets persistants, une latence raisonnable et un débit élevé. Récemment, nous avons évalué si nous devrions aller avec Kafka ou Pulsar et contrairement à @nha, nous sommes maintenant en faveur d'Apache Kafka. Voici nos conclusions:

Pulsar - Pros

  • riche en fonctionnalités - rubriques persistantes/non persistantes, multi-organisation, ACL, réplication Multi-DC, etc.
  • aPI client plus flexible - comprenant CompletableFutures, interfaces fluides, etc.
  • Les composants client Java sont sécurisés pour les threads - le consommateur peut accuser réception des messages provenant de différents threads

Pulsar - Cons

  • Le client Java a peu ou pas de javadoc
  • petite communauté - 8 questions de stackoverflow actuellement
  • concept de messageId lié à BookKeeper - les consommateurs ne peuvent pas facilement se positionner sur le sujet par rapport à Kafka offset, séquence continue de nombres).
  • Reader ne peut pas facilement lire le dernier message de la rubrique - vous devez parcourir tous les messages jusqu'à la fin.
  • aucune transaction
  • complexité opérationnelle accrue - nœuds Zookeeper + Broker + BookKeeper - tous en cluster
  • la latence est discutable - il y a un appel distant supplémentaire entre le nœud Broker et BookKeeper (comparé à Kafka)

Kafka - Pros

  • javadoc très riche et utile
  • Kafka Streams
  • communauté mature et large
  • plus simple à utiliser en production - moins de composants - le nœud du courtier fournit également le stockage
  • transactions - lecture et écriture atomiques dans les rubriques
  • les décalages forment une séquence continue - le consommateur peut facilement rechercher le dernier message

Kafka - Cons

  • le consommateur ne peut pas accuser réception du message d'un autre fil
  • pas de multitenancy
  • pas de réplication Multi-DC robuste - (offert dans Confluent Enterprise)
8
Milos Gregor

source


Pulsar, le dernier projet de la Fondation Apache Software à atteindre le plus haut niveau, tire beaucoup de points en comparaison avec Kafka, un autre projet d'ASF.

Pulsar est une plate-forme de messagerie hautement évolutive et à faible temps de latence fonctionnant sur du matériel standard. Il fournit une sémantique de sous-public et de file d'attente simple sur des sujets, une structure de calcul légère, une gestion automatique du curseur pour les abonnés et une réplication entre centres de données.

Dans le même temps, le rapport Apache 2018 Kafka), qui interrogeait plus de 600 utilisateurs, a répertorié les pipelines de données et transmis les deux principales utilisations de la technologie. Il a également été utilisé avec la montée en puissance des architectures de microservices.

"Les cas d'utilisation des deux systèmes se chevauchent beaucoup, mais les conceptions d'origine étaient très différentes", a déclaré Matteo Merli, l'un de ses créateurs, qui a depuis créé Streamlio, une startup proposant une plate-forme de données rapides.

Yahoo a créé Pulsar en tant que système multi-locataire unique afin de résoudre ses problèmes liés aux systèmes de messagerie multiples et aux équipes multiples les déployant.

Il a été lancé en open source en 2016 et est entré dans l’incubateur ASF en juin 2017. Pendant environ quatre ans, il a été utilisé dans les applications Yahoo Mail, Finance, Sports, Gemini Ads et Sherpa, le service distribué de valeur clé de Yahoo.

Dans un article de blog, le co-fondateur Sijie Guo a résumé Pulsar contre Kafka):

“Apache Pulsar combine un flux de données haute performance (suivi par Apache Kafka)) et une mise en file d'attente traditionnelle flexible (suivie par RabbitMQ) dans un modèle de messagerie unifiée et une API. Pulsar vous offre un système unique pour la diffusion en continu et la mise en file d'attente. , avec les mêmes hautes performances, en utilisant une API unifiée. ”

Merli a déclaré: "Il y a des différences entre le streaming et la file d'attente; il y a beaucoup de cas d'utilisation où vous avez besoin de l'un ou de l'autre, mais la plupart des gens ont besoin des deux pour des cas d'utilisation différents. ”

Architecture à deux couches Une conception à deux couches est la clé de Pulsar, a déclaré Merli. Il existe une couche de courtiers sans état qui reçoit et remet des messages et une couche de persistance avec état, avec un ensemble de nœuds de stockage Apache BookKeeper appelés bookmakers qui fournissent un stockage durable à faible latence.

Pulsar a été construit sur l'idée de disposer de garanties de données solides, a déclaré Merli. Il était conçu pour la consommation partagée, alors que Kafka n'était pas le cas. Et Pulsar permet aux utilisateurs de configurer une période de conservation des messages même après que tous les abonnements les ont consommés.

Son architecture en couches et son stockage centré sur les segments offrent des avantages clés:

Vous pouvez mettre à l'échelle les courtiers ou la couche de stockage indépendamment. Les courtiers étant apatrides, un sujet peut être rapidement déplacé vers d'autres courtiers. Cela offre un moyen efficace d’équilibrer le trafic entre les courtiers. Peut avoir plusieurs consommateurs sur la même partition et vous pouvez en ajouter autant que vous le souhaitez. Etant donné qu'aucune donnée n'est stockée localement, cela évite de copier des données de partition lors de l'extension de capacité et ne nécessite aucun rééquilibrage. Lorsqu'une rubrique partitionnée est créée, Pulsar partitionne automatiquement les données de manière agnostique pour les consommateurs et les producteurs.

Le courtier envoie les données du message à plusieurs nœuds BookKeeper, qui les écrivent dans un journal à écriture anticipée et en conservent une copie en mémoire. Avant que le nœud envoie un accusé de réception, le journal est écrit de force dans un stockage stable, ce qui garantit sa conservation même en cas de coupure de courant. Les partitions de sujets peuvent évoluer jusqu'à la capacité totale de l'ensemble du cluster BookKeeper. Vous pouvez également agrandir un cluster en ajoutant simplement des nœuds.

Depuis que nous sommes entrés dans l’incubateur, l’accent a été mis sur la facilité de démarrage avec Pulsar.

La version 2.0 de Pulsar a été publiée en juin, et comprenait une fonctionnalité de traitement "native pour le flux" appelée Fonctions Pulsar, qui permet aux utilisateurs d’écrire des fonctions de traitement dans Java ou Python La version 2.2, qui comportera une interrogation SQL interactive, sera bientôt disponible.

Pulsar fournit plusieurs liaisons de langage et de protocole, notamment Java, C++, Python et WebSockets, ainsi qu'une API compatible Kafka.


Lectures supplémentaires: Apache Pulsar: Est-ce un tueur KAFKA?

Apache Pulsar: Est-ce un KAFKA Killer? Écrit par Bhagwan s. Sonienter image description here


POURQUOI devrions-nous choisir Apache Pulsar plutôt que Kafka?

Apache Pulsar est une édition Enterprise de PubSub, initialement développée par Yahoo et désormais prise en charge par Apache Software Foundation. Apache Pulsar fonctionne sur les systèmes de production depuis plus de 3 ans et a prouvé sa stabilité.

Apache Pulsar couvre presque toutes les fonctionnalités que Kafka nous offre, peuvent porter différents noms. Pulsar possède de nombreuses fonctionnalités, mais je voudrais en souligner certaines qui nous aideront à nous différencier Kafka -

1} Apache Pulsar vous propose 3 types d’abonnement sur le sujet: A} Exclusif - Un seul consommateur consomme les données d’un sujet B} Partagé - Plusieurs consommateurs consomment les données d’un sujet C} Basculement - Plusieurs consommateurs, mais à un moment donné, un seul utilisateur utilisera les données.

2} Chaque espace de noms peut avoir un ou plusieurs sujets.

3} Prise en charge de la multi-organisation

4} Réplication de données sur plusieurs clusters

5} Prise en charge de la durabilité des messages contre la perte de données


4
Ram Ghadiyaram