Je lis les deux concepts. Principalement Kafka. Et comparer avec JMS pour mieux comprendre.
Kafka garantit la livraison commandée et plusieurs abonnés. Comment kafka y parvient-il?
Kafka a plusieurs partitions. Si un consommateur par partition, nous pouvons garantir la commande. Nous pouvons réaliser un équilibrage de charge avec plusieurs partitions. Donc, les deux en même temps est possible.
Dans le cas de JMS, si nous avons plusieurs files d'attente, ne correspond-il pas à Kafka?
Q1: Quel est le meilleur dans ce scénario?
Q2: Est-ce que je regarde de près? Est-ce que Kafka fait plus que cela?
Conseillez-moi, s'il-vous-plaît.
Même si je me trompe à propos de JMS, faites-le moi savoir.
Je me posais la même question avant :)
Comme vous l'avez écrit, Kafka ne garantit la livraison commandée que dans une seule partition. Période. Si vous utilisez plusieurs partitions (ce qui est indispensable pour avoir le parallélisme), il est possible qu'un consommateur qui écoute sur plusieurs partitions reçoive un message A de la partition 1 avant un message B de la partition 2, même si le message B est arrivé en premier .
Parlons maintenant des différences entre Kafka et JMS. Dans JMS, vous avez une file d'attente et vous avez un sujet. Avec les files d'attente, lorsque le premier consommateur consomme un message, d'autres ne peuvent plus le prendre. Avec les rubriques, plusieurs consommateurs reçoivent chaque message, mais il est beaucoup plus difficile de l'adapter. Le groupe de consommateurs de Kafka est une généralisation de ces deux concepts: il permet une mise à l'échelle entre les membres d'un même groupe de consommateurs, mais il permet également de diffuser le même message entre de nombreux groupes de consommateurs différents.
La différence encore plus importante est la suivante. Imaginez que vous ayez un sujet Kafka avec 500 partitions et, d’autre part, 500 files de messages JMS. Imaginons aussi que vous avez un certain nombre de producteurs et de consommateurs. Dans le cas de JMS, vous devez configurer chacun d'eux afin qu'ils sachent quelles files d'attente leur appartiennent. Et si par exemple un consommateur se bloque ou vous détectez la nécessité d'augmenter le nombre de consommateurs? Vous devez reconfigurer manuellement tout le système. Ceci est gratuit avec Kafka, c’est-à-dire que Kafka fournit le rééquilibrage automatique, ce qui est extrêmement utile.
Enfin, Kafka est extrêmement rapide, principalement en raison de techniques de transfert de disque/mémoire intelligentes et du fait que les consommateurs se préoccupent des messages qu’ils ont consommés, et non du courtier comme dans JMS. De ce fait, le consommateur est également en mesure de "rembobiner", c'est-à-dire de relire les messages, par ex. il y a 2 jours.
Voir également:
Voici un bon article sur les différences: http://blog.hampisoftware.com/index.php/2016/01/20/Apache-kafka-differences-from-jms/
Kafka ne garantit pas le classement des messages sur plusieurs partitions d'un sujet. L'ordre n'est maintenu que dans une partition. Afin de réaliser un ordre strict, vous devez utiliser une partition par sujet.