Création & Gestion des Topics Kafka
Comprendre, créer, configurer et optimiser les topics pour une architecture scalable.
Contexte
Un topic est l’unité logique où les messages sont publiés par les producteurs et consommés par les consommateurs. C’est l’élément central de Kafka : une bonne gestion des topics garantit performance, scalabilité, et résilience d’une plateforme e-commerce (commandes, paiements, livraisons…).
Lexique
Canal logique où sont organisés les messages.
Unités parallèles d’un topic pour augmenter le débit.
Durée ou taille maximale de stockage des messages.
Stratégie de gestion des données : delete ou compact.
Schéma Kafka simplifié
Commandes pratiques
# Créer un topic
bin/kafka-topics.sh --bootstrap-server localhost:9092 --create \
--topic commandes.ecommerce \
--partitions 3 --replication-factor 1
# Lister les topics
bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
# Décrire un topic
bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe \
--topic commandes.ecommerce
# Modifier un topic (ajout de partitions)
bin/kafka-topics.sh --bootstrap-server localhost:9092 --alter \
--topic commandes.ecommerce --partitions 6
# Supprimer un topic
bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete \
--topic commandes.ecommerce
Paramètres avancés indispensables
🧹 cleanup.policy
delete : suppression des messages arrivés à expiration.
compact : conserve uniquement la dernière valeur par clé (idéal pour les profils clients, états).
⏱ retention.ms
Durée de conservation des messages (ex : 604800000 pour 7 jours).
📦 retention.bytes
Taille maximale avant suppression automatique.
🧩 segment.bytes
Découpe des logs en segments pour optimiser la lecture/écriture.
# Exemple : topic compacté + rétention 7j
bin/kafka-configs.sh --bootstrap-server localhost:9092 --alter \
--entity-type topics --entity-name commandes.ecommerce \
--add-config cleanup.policy=compact,retention.ms=604800000
Conventions de nommage conseillées
- Utiliser un format hiérarchique domaine.sous-domaine.version
- Exemples réels en entreprise :
order.created.v1stock.update.v2payment.validated.v1
- Pas d’accents, pas d’espaces, pas de majuscules.
- Versionner vos topics (ex :
order.created.v2) pour éviter les cassures.
Erreurs fréquentes
- Créer trop peu de partitions → goulets d’étranglement.
- Créer trop de partitions → surcharge CPU et I/O.
- Modifier un topic en production sans plan de rollback.
- Oublier le cleanup.policy, entraînant des clusters saturés.
Quiz
- Quelle commande affiche les détails d’un topic ?
- Peut-on réduire le nombre de partitions ? Pourquoi ?
- Quelle stratégie utiliser pour un topic contenant l’état d’un compte client ?
Exercice
Créez un topic livraison avec 4 partitions.
Ajoutez-lui une stratégie de rétention de 3 jours puis supprimez-le.
Résumé
Les topics sont le cœur de Kafka. Leur configuration (partitions, rétention, compactage…) influence directement les performances et la robustesse de votre architecture. Savoir manipuler la CLI Kafka est indispensable pour prendre le contrôle de votre cluster.
