Je suis assez nouveau sur Kafka, et j'ai une question concernant la relation / mappage entre le producteur, le sujet, le courtier et la partition dans le cas où j'ai un seul producteur, un seul sujet et un seul courtier, est-ce que cela a du sens créer plusieurs partitions pour le sujet ici sur le courtier unique ici? Si oui, comment cela aide-t-il en termes de parallélisme / performances?
Merci.
3 Réponses :
Même si vous avez un seul producteur, un seul sujet et un seul courtier, il est logique de créer plusieurs partitions pour le sujet en termes de parallélisme / performances dans le contexte des consommateurs. Si vous avez plusieurs consommateurs dans un seul groupe de consommateurs et plusieurs partitions dans la rubrique, il est garanti que les consommateurs recevront des données de différentes partitions, ce qui vous donnera un parallélisme et une amélioration des performances lors du traitement à partir de kafka.
La première chose à comprendre est qu'une partition de sujet est une unité de parallélisme dans Kafka Cluster. Sur Producer et Broker, les écritures se déroulent en parallèle afin que vous puissiez effectuer des opérations coûteuses (compression, etc.), et du côté du consommateur, chaque donnée de partition est donnée à un seul thread consommateur.
Dans votre scénario, vous en bénéficieriez si vous disposez de plusieurs partitions sur un même sujet et que ces partitions multiples sont consommées par plusieurs consommateurs au sein d'un même groupe de consommateurs. De cette façon, vous pouvez atteindre un débit maximal dans votre application. Si vous n'utilisez qu'un seul thread consommateur pour plusieurs partitions, cela ne sert à rien. Fondamentalement, plus de partitions pourrait conduire à un débit plus élevé si vous gérez intelligemment les ressources de votre cluster.
En plus des réponses précédentes, il est important de se rappeler que la consommation à partir de plusieurs partitions ne préserve pas l'ordre des messages / événements. Vous devrez peut-être tenir compte de ce fait si votre application dépend de l'ordre correct des messages.
Il y a plusieurs raisons de créer plus d'une partition - la raison habituelle est l'évolutivité car chaque partition est affectée à un seul consommateur (bien qu'un seul consommateur puisse s'abonner à plusieurs partitions). Consultez la documentation officielle de Kafka, cela explique assez bien