Architecture Kafka: Compactage des journaux

cet article reprend vraiment de notre série sur l’architecture kafka qui comprend des sujets kafka architecture, architecture de producteur kafka, architecture de consommateur kafka et architecture d’écosystème kafka.

cet article est fortement inspiré de la section de kafka sur la conception autour du compactage des bûches. vous pouvez penser à cela comme les notes de la falaise sur la conception de kafka autour du compactage des bûches.

kafka peut supprimer des enregistrements plus anciens en fonction de l’heure ou de la taille d’un journal. kafka prend également en charge le compactage des journaux pour le compactage des clés d’enregistrement. le compactage des journaux signifie que kafka conservera la dernière version d’un enregistrement et supprimera les anciennes versions lors du compactage des journaux.

jean-paul azar travaille chez cloudurable. cloudurable fournit la formation kafka, le conseil kafka, le support kafka et aide à la configuration de clusters kafka dans aws.

compactage du journal kafka

le compactage du journal conserve au moins la dernière valeur connue pour chaque clé d’enregistrement pour une partition de sujet unique. les journaux compactés sont utiles pour restaurer l’état après un plantage ou une défaillance du système.

ils sont utiles pour les services en mémoire, les magasins de données persistants, le rechargement d’un cache, etc. un cas d’utilisation important des flux de données consiste à consigner les modifications apportées aux modifications de données mutables à clé dans une table de base de données ou les modifications apportées à un objet dans un microservice en mémoire.

le compactage des journaux est un mécanisme de rétention granulaire qui conserve la dernière mise à jour pour chaque clé. un journal de sujet compacté contient un instantané complet des valeurs d’enregistrement finales pour chaque clé d’enregistrement, pas seulement les clés récemment modifiées.

le compactage de journaux kafka permet aux consommateurs en aval de restaurer leur état à partir d’une rubrique compactée de journaux.

structure de compactage de bûches kafka

avec une bûche compactée, la bûche a la tête et la queue. la tête de la bûche compactée est identique à une bûche kafka traditionnelle. les nouveaux enregistrements sont ajoutés au bout de la tête.

tous les travaux de compactage de bûches se font en queue de bûche. seule la queue est compactée. les enregistrements dans la queue du journal conservent leur décalage d’origine lorsqu’ils sont écrits après avoir été réécrits avec le nettoyage de compactage.

structure de compactage de journal kafka

 structure de compactage de journal

bases de compactage de journal kafka

tous les décalages de journal compactés restent valides, même si l’enregistrement au décalage a été compacté car un consommateur obtiendra le prochain décalage le plus élevé.

le compactage du journal kafka permet également des suppressions. un message avec une clé et une charge utile nulle agit comme une pierre tombale, un marqueur de suppression pour cette clé. les pierres tombales sont effacées après une période. le compactage des journaux s’exécute périodiquement en arrière-plan en recopiant des segments de journaux. le compactage ne bloque pas les lectures et peut être limité pour éviter d’avoir un impact sur les e / s des producteurs et des consommateurs.

processus de compactage des journaux kafka

 processus de compactage des journaux kafka

nettoyage du compactage des journaux kafka

si un consommateur kafka reste pris en charge par la tête du journal, il voit chaque enregistrement écrit.

topic config min.compaction.lag.ms est utilisé pour garantir une période minimale qui doit s’écouler avant qu’un message puisse être compacté. le consommateur voit toutes les pierres tombales tant qu’il atteint la tête d’un journal dans une période inférieure à la configuration du sujet delete.retention.ms (la valeur par défaut est de 24 heures). le compactage des journaux ne réorganisera jamais les messages, il suffit d’en supprimer certains. le décalage de partition pour un message ne change jamais.

toute lecture de consommateur depuis le début du journal voit au moins l’état final de tous les enregistrements dans l’ordre dans lequel ils ont été écrits.

nettoyeur de journaux kafka

rappelez-vous qu’une rubrique kafka a un journal. un journal est divisé en partitions et les partitions sont divisées en segments qui contiennent des enregistrements qui ont des clés et des valeurs.

le nettoyeur de bûches kafka compacte les bûches. le nettoyeur de bûches dispose d’un pool de fils de compactage d’arrière-plan. ces threads recopient les fichiers de segments de journal, en supprimant les enregistrements plus anciens dont la clé réapparaît récemment dans le journal. chaque thread de compactage choisit le journal de sujet qui a le rapport le plus élevé entre la tête de journal et la queue de journal. ensuite, le thread de compactage recopie le journal du début à la fin en supprimant les enregistrements dont les clés apparaissent plus tard dans le journal.

lorsque le nettoyeur de journaux nettoie les segments de partition de journal, les segments sont échangés dans la partition de journal en remplaçant immédiatement les segments plus anciens. de cette façon, le compactage ne nécessite pas le double de l’espace de la partition entière, car l’espace disque supplémentaire requis n’est qu’un segment de partition de journal supplémentaire – diviser pour régner.

configuration de la rubrique pour le compactage des journaux

pour activer le compactage d’une rubrique, utilisez la configuration de la rubrique log.cleanup.policy=compact .

pour définir un délai pour commencer à compacter les enregistrements après leur écriture, utilisez la configuration du sujet log.cleaner.min.compaction.lag.ms . les enregistrements ne seront compactés qu’après cette période. le paramètre donne aux consommateurs le temps d’obtenir chaque enregistrement.

revue de compactage des journaux

quelles sont les trois façons dont kafka peut supprimer des enregistrements?

kafka peut supprimer des enregistrements plus anciens en fonction de l’heure ou de la taille d’un journal. kafka prend également en charge le compactage des journaux pour le compactage des clés d’enregistrement.

à quoi sert le compactage des bûches?

étant donné que le compactage des journaux conserve la dernière valeur connue, il s’agit d’un instantané complet des derniers enregistrements, il est utile pour restaurer l’état après un plantage ou une défaillance du système pour un service en mémoire, un magasin de données persistant ou le rechargement d’un cache. il permet aux consommateurs en aval de rétablir leur état.

quelle est la structure d’une bûche compactée? décrivez la structure.

avec une bûche compactée, la bûche a la tête et la queue. la tête de la bûche compactée est identique à une bûche kafka traditionnelle. les nouveaux enregistrements sont ajoutés au bout de la tête. tous les travaux de compactage de bûches se font en queue de bûche compactée.

après le compactage, les décalages d’enregistrement du journal changent-ils? aucun.

qu’est-ce qu’un segment de partition ?

rappelez-vous qu’un sujet a un journal. un journal de rubrique est divisé en partitions et les partitions sont divisées en fichiers de segments contenant des enregistrements contenant des clés et des valeurs. les fichiers de segment permettent de diviser pour régner en matière de compactage des journaux. un fichier segment fait partie de la partition. lorsque le nettoyeur de journaux nettoie les segments de partition de journal, les segments sont échangés dans la partition de journal en remplaçant immédiatement les anciens fichiers de segment. de cette façon, le compactage ne nécessite pas le double de l’espace de la partition entière, car l’espace disque supplémentaire requis n’est qu’un segment de partition de journal supplémentaire.

jean-paul azar travaille chez cloudurable. cloudurable fournit la formation kafka, le conseil kafka, le support kafka et aide à la configuration de clusters kafka dans aws.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.