Concepts clés de Kafka
Les bases indispensables pour maîtriser l’écosystème Kafka et le streaming temps réel.
C’est quoi Kafka ?
Kafka est une plateforme distribuée de streaming d’événements conçue pour traiter des flux de données à grande échelle, en temps réel, avec une fiabilité et une performance exceptionnellement élevées.
- Publication et consommation de messages en temps réel.
- Très haut débit et faible latence.
- Résilience grâce à la réplication et au partitionnement.
Kafka = Messagerie + Journal distribué + Stockage persistant + Scalabilité horizontale
Concepts clés de Kafka
Catégorie logique des messages (ex : transactions).
Division d’un topic pour paralléliser le traitement.
Serveur Kafka stockant les partitions.
Application qui envoie les messages.
Application qui lit les messages.
Groupe de consumers se partageant les partitions.
Position d’un message dans une partition.
Partitionnement Kafka
Le partitionnement est la clé de la scalabilité de Kafka. Il permet d’augmenter le débit, de garantir la résilience et d’assurer le parallélisme des traitements.
- Scalable – le débit augmente avec le nombre de partitions.
- Rapide – traitement parallèle.
- Fiable – réplication automatique.
1. Principe
Un topic est divisé en plusieurs partitions réparties sur plusieurs brokers. Chaque message appartient à une seule partition.
2. Clé de partition
- Kafka utilise
partition = hash(key) % partitions - Même clé → même partition → ordre garanti
- Sans clé → round-robin (équilibrage, mais pas d’ordre)
3. Parallélisme
Dans un consumer group :
- 1 consumer = 1 partition (pas plus)
- En cas de panne → redistribution automatique
4. Réplication
- 1 leader : écritures / lectures
- Plusieurs followers : répliques synchronisées
- Failover automatique
5. Orchestration
- Avant Kafka 2.8 → Zookeeper
- Kafka 2.8+ → KRaft (orchestration interne)
6. Exemple de configuration
kafka-topics.sh --create \
--topic transactions \
--partitions 6 \
--replication-factor 3 \
--bootstrap-server localhost:9092
Bonnes pratiques
- Augmenter les partitions pour augmenter le débit.
- Utiliser une clé logique pour maintenir l’ordre (ex :
clientId). - Réplication ≥ 3 pour haute disponibilité.
- Vérifier la distribution équitable des partitions.
Kafka = Topic → Partitions → Brokers → Consumers
Clé → ordre • Partitions → scalabilité • Réplication → tolérance aux pannes
Questions diverses
C’est quoi le Round-Robin dans Kafka ?
Répartition circulaire des messages quand aucune clé de partition n’est fournie. Idéal pour équilibrer la charge, mais ne garantit pas l’ordre.
Kafka vs File de messages classique
Kafka conserve les messages (log persistant). RabbitMQ supprime après lecture. Kafka permet la relecture à tout moment via les offsets.
Offset vs Partition
La partition est l’unité physique de stockage. L’offset est la position du message dans cette partition.
