Comment le streaming Kafka gère-t-il la concurrence ? Tout s'exécute-t-il dans un seul thread ? Je ne vois rien de tel dans la documentation.
Ce point est documenté en détail à l'adresse suivante http://docs.confluent.io/current/streams/architecture.html#parallelism-model . Je ne veux pas copier-coller ce texte ici textuellement, mais je veux souligner qu'à mon avis, l'élément clé à comprendre est celui de l'utilisation de l'énergie. partitions (cf. les partitions de sujets de Kafka, qui, dans Kafka Streams, sont généralisées en "partitions de flux" car tous les flux de données traités ne passent pas par Kafka) car une partition est actuellement ce qui détermine le parallélisme de Kafka (côté courtier/serveur) et des applications de traitement de flux qui utilisent l'API Kafka Streams (côté client).
S'il s'agit d'un traitement monofilaire, j'aimerais disposer d'options de traitement multi-filaire pour gérer de gros volumes de données.
Traitement une partition sera toujours effectuée par un seul "thread", ce qui permet d'éviter les problèmes de concurrence. Mais...
S'il est multithread, je dois comprendre comment cela fonctionne et comment gérer les ressources, comme les connexions à la base de données SQL qui doivent être partagées dans différents threads de traitement.
...parce que Kafka permet à un sujet d'avoir plusieurs partitions, vous obtenez un traitement parallèle. Par exemple, si un sujet possède 100 partitions, jusqu'à 100 tâches de flux (ou, pour simplifier à l'extrême, jusqu'à 100 machines différentes exécutant chacune une instance de votre application) peuvent traiter ce sujet en parallèle. Là encore, chaque tâche de diffusion obtiendra un accès exclusif à une partition, qu'elle pourra ensuite traiter.
L'API de streaming intégrée de Kafka n'est-elle pas recommandée pour les scénarios à fort volume par rapport aux autres options (Spark, Akka, Samza, Storm, etc.) ?
Le moteur de traitement des flux de Kafka est définitivement recommandé et est également utilisé dans la pratique pour les scénarios à fort volume. L'analyse comparative est toujours en cours, mais dans de nombreux cas, une application basée sur Kafka Streams s'avère plus rapide. Voir Le blog de l'ingénieur LINE : Application de Kafka Streams au pipeline interne de livraison de messages pour un article de LINE Corp, l'une des plus grandes plateformes sociales d'Asie (plus de 220 millions d'utilisateurs), qui décrit comment elle utilise Kafka et l'API Kafka Streams en production pour traiter des millions d'événements par seconde.