Je n'ai pas beaucoup travaillé sur kafka mais je voulais construire un pipeline de données dans GCE. Nous voulions donc savoir Kafka vs PUB/Sub. Fondamentalement, je veux savoir comment la cohérence, la disponibilité et la fiabilité des messages sont conservées à la fois Kafka et Pub/sub
Merci
En plus de Google Pub/Sub géré par Google et Kafka étant open source, l’autre différence est que Google Pub/Sub est une file de messages (par exemple, Rabbit MQ) où Kafka est plutôt un journal en continu. Vous ne pouvez pas "relire" ou "rejouer" des messages avec Pubsub. (EDIT - à compter du 2019 février, vous POUVEZ rejouer des messages et chercher en arrière dans le temps à un certain horodatage, par commentaire ci-dessous)
Avec Google Pub/Sub, une fois qu'un message est lu sur un abonnement et reçu, il est supprimé. Pour que davantage de copies d'un message puissent être lues par différents lecteurs, vous "sortez" le sujet en créant des "abonnements" pour ce sujet, chaque abonnement contenant une copie complète de tout ce qui entre dans le sujet. Mais cela augmente également les coûts, car Google impute l'utilisation des publications/sous-publications à la quantité de données lues.
Avec Kafka, vous définissez une période de rétention (je pense que c'est 7 jours par défaut) et les messages restent dans Kafka quel que soit le nombre de consommateurs qui le lisent. Vous pouvez ajouter un nouveau consommateur (ou abonné). Vous pouvez également définir une durée de conservation infinie, puis utiliser Kafka comme magasin de données immuable, comme décrit ici: http://stackoverflow.com/a/22597637/304262
Amazon AWS Kinesis est une version gérée de Kafka alors que je considère Google Pubsub comme une version gérée de Rabbit MQ. Amazon SNS avec SQS est également similaire à Google Pubsub (SNS fournit le fanout et SQS fournit la file d'attente).
Une grande différence entre Kafka et Cloud Pub/Sub est que Cloud Pub/Sub est entièrement géré pour vous. Vous n'avez pas à vous soucier des machines, de la configuration des clusters, des paramètres de réglage précis, etc. Cela signifie que beaucoup de travail DevOps est traité pour vous, ce qui est important, en particulier lorsque vous devez évoluer.