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

Rétention

Durée ou taille maximale pendant laquelle les messages sont conservés.

Segment

Fichier physique de log. Kafka n’efface pas un message isolé, mais un segment complet.

Cleanup.policy

Stratégie de nettoyage : delete ou compact.

Compaction

Mode permettant de conserver uniquement la dernière valeur d’une clé (state topic).

Lag

Écart entre le dernier message produit et celui consommé.

Diagramme

Kafka Retention et Customisation

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
    
Bonnes pratiques :
  • 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 --describe sur 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 -sh côté broker.

Atelier 2 — Conversion d’un topic en topic compacté

  • Activer cleanup.policy=compact.
  • Ajouter min.cleanable.ratio pour 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.

Navigation

Review My Order

0

Subtotal