Configuration de rétention et customisation de topics
Maîtriser la rétention, la compaction, la taille des segments et tous les paramètres critiques de configuration pour optimiser le stockage, les performances et la stratégie de traitement.
Contexte
Kafka stocke les messages dans des journaux immuables appelés logs. Leur durée de conservation, leur taille et leur stratégie de nettoyage influencent :
- la taille du disque consommé,
- les performances du cluster,
- la disponibilité de l’historique,
- la logique métier (événements vs état),
- la capacité à reconstruire des services (replay).
Comprendre les paramètres fondamentaux (rétention, compaction, segment, cleanup policy) est essentiel pour administrer un cluster Kafka de manière efficace et durable.
Lexique
Durée ou taille maximale pendant laquelle les messages sont conservés.
Fichier physique de log. Kafka n’efface pas un message isolé, mais un segment complet.
Stratégie de nettoyage : delete ou compact.
Mode permettant de conserver uniquement la dernière valeur d’une clé (state topic).
Écart entre le dernier message produit et celui consommé.
Diagramme
Illustration de la gestion des segments, de la rétention et des politiques de nettoyage.
Commandes pratiques
# Créer un topic avec rétention personnalisée et segment de 1 Go
bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--create \
--topic commandesencours.ecommerce \
--partitions 2 \
--replication-factor 1 \
--config retention.ms=10000 \
--config segment.bytes=1073741824
# Modifier dynamiquement la rétention d’un topic existant
bin/kafka-configs.sh \
--bootstrap-server localhost:9092 \
--entity-type topics \
--entity-name commandesencours.ecommerce \
--alter \
--add-config retention.ms=20000
# Afficher les configurations d’un topic
bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--describe \
--topic commandesencours.ecommerce
- Réduire la rétention pour les flux volumineux non critiques (ex : logs techniques).
- Utiliser cleanup.policy=compact pour les topics de type état.
- Ajuster la taille des segments pour éviter des milliers de petits fichiers.
- Documenter chaque topic (usage, rétention, compaction, partitions).
- Vérifier régulièrement
--describesur les topics critiques.
Résultat
Vous êtes capable d’ajuster la rétention, de manipuler la compaction, de gérer la taille des segments et de contrôler la configuration complète d’un topic. Ces compétences sont essentielles pour optimiser les performances et la durabilité d’un cluster Kafka.
Résumé
Kafka offre une flexibilité très avancée sur la configuration des topics. La rétention, la compaction et la gestion des segments sont des leviers cruciaux pour adapter vos flux aux besoins métier, optimiser le stockage et assurer un comportement prévisible.
Quiz rapide
- Quelle est l’unité de
retention.ms? - Dans quel cas utiliser la compaction ?
- Que se passe-t-il lorsqu’un segment atteint sa limite ?
Exercice pratique
Créez un topic log.mensuel avec les paramètres suivants :
- 2 partitions
- Rétention : 1 heure
- Taille de segment : 512 Mo
- Politique de nettoyage :
delete
Vérifiez sa configuration avec --describe.
Ateliers pratiques (3 scénarios complets)
Atelier 1 — Optimisation d’un topic haute fréquence
- Configurer une rétention de 5 minutes sur un topic de logs volumineux.
- Augmenter la taille des segments pour réduire la fragmentation.
- Valider l’impact via
du -shcôté broker.
Atelier 2 — Conversion d’un topic en topic compacté
- Activer
cleanup.policy=compact. - Ajouter
min.cleanable.ratiopour accélérer le nettoyage. - Tester le comportement en produisant 10 fois la même clé.
Atelier 3 — Création d’un topic optimisé pour replay
- Configurer une rétention longue (ex : 7 jours).
- Limiter l’espace via
retention.bytes. - Tester un consumer qui repart de
--to-earliest.
