Kafka arkitektur: Log komprimering

dette indlæg virkelig picks off fra vores serie om Kafka arkitektur , som omfatter Kafka emner arkitektur , Kafka producent arkitektur , Kafka forbruger arkitektur, og kafka økosystem arkitektur .

denne artikel er stærkt inspireret af Kafka-sektionen om design omkring logkomprimering . du kan tænke på det som cliff noter om kafka design omkring log komprimering .

kafka kan slette ældre poster baseret på tid eller størrelse af en log. kafka understøtter også log komprimering til rekord nøgle komprimering. log komprimering betyder, at kafka vil holde den nyeste version af en post og slette de ældre versioner under en log komprimering.

jean-paul arbejder hos cloudurable . cloudurable tilbyder kafka-træning , Kafka-rådgivning, Kafka-support og hjælper med at oprette Kafka-klynger .

Kafka logkomprimering

logkomprimering bevarer mindst den sidst kendte værdi for hver postnøgle for en enkelt emnepartition. komprimerede logfiler er nyttige til at genoprette tilstand efter et nedbrud eller systemfejl.

de er nyttige til hukommelsestjenester, vedvarende datalagre, genindlæsning af en cache osv. en vigtig brugssag for datastrømme er at logge ændringer til tastede, ændrede dataændringer i en databasetabel eller ændringer til objekt i microservice i hukommelsen.

logkomprimering er en granulær retentionsmekanisme, der bevarer den sidste opdatering for hver nøgle. en log komprimeret emnelog indeholder et komplet øjebliksbillede af de endelige postværdier for hver postnøgle, ikke kun de nyligt ændrede nøgler.

Kafka log komprimering giver nedstrøms forbrugere til at gendanne deres tilstand fra en log komprimeret emne.

Kafka logkomprimeringsstruktur

med en komprimeret log har loggen hoved og hale. hovedet på den komprimerede log er identisk med en traditionel kafka-log. nye poster bliver tilføjet til enden af hovedet.

al logkomprimering fungerer ved logens hale. kun halen bliver komprimeret. optegnelser i logens hale bevarer deres oprindelige forskydning, når de skrives efter at være omskrevet med komprimeringsoprydning .

Kafka logkomprimeringsstruktur

logkomprimeringsstruktur

Kafka logkomprimeringsgrundlag

alle komprimerede logforskydninger forbliver gyldige, selvom rekord ved forskydning er blevet komprimeret væk, da en forbruger får den næsthøjeste forskydning.

Kafka log komprimering giver også mulighed for sletninger. en meddelelse med en nøgle og en null-nyttelast fungerer som en gravsten, en sletningsmarkør for den nøgle. gravsten bliver ryddet efter en periode. logkomprimering kører regelmæssigt i baggrunden ved at kopiere logsegmenter igen. komprimering blokerer ikke læser og kan drosles for at undgå at påvirke I/O af producenter og forbrugere.

Kafka log komprimering proces

kafka log komprimering proces

Kafka log komprimering rengøring

hvis en Kafka forbruger forbliver fanget op til lederen af loggen, det ser hver post, der er skrevet.

topic config min.compaction.lag.ms bliver brugt til at garantere en minimumsperiode, der skal passere, før en meddelelse kan komprimeres. forbrugeren ser alle gravsten, så længe forbrugeren når hovedet af en log i en periode mindre end emnet config delete.retention.ms (standard er 24 timer). log komprimering vil aldrig re-order beskeder, bare fjerne nogle. partitionsforskydning for en meddelelse ændres aldrig.

enhver forbrugerlæsning fra starten af loggen ser i det mindste den endelige tilstand af alle poster i den rækkefølge, de blev skrevet.

kafka log cleaner

husk at et Kafka-emne har en log. en log er opdelt i partitioner, og partitioner er opdelt i segmenter, der indeholder poster, der har nøgler og værdier.

Kafka log cleaner gør log komprimering. logrenseren har en pulje af baggrundskomprimeringstråde. disse tråde recopy log segment filer, fjerne ældre poster, hvis nøgle vises igen for nylig i loggen. hver komprimering tråd vælger emne log, der har det højeste forhold mellem log hoved til log hale. derefter kopierer komprimeringstråden loggen fra start til slut og fjerner poster, hvis nøgler forekommer senere i loggen.

da logrenseren renser logpartitionssegmenterne, bliver segmenterne byttet ind i logpartitionen, der straks erstatter de ældre segmenter. på denne måde kræver komprimering ikke dobbelt plads på hele partitionen, da yderligere diskplads, der kræves, kun er et ekstra logpartitionssegment – divide and erobre.

emnekonfiguration til logkomprimering

hvis du vil aktivere komprimering for et emne, skal du bruge emnekonfiguration log.cleanup.policy=compact .

hvis du vil indstille en forsinkelse til at starte komprimering af poster, efter at de er skrevet, skal du bruge topic config log.cleaner.min.compaction.lag.ms . records bliver ikke komprimeret før efter denne periode. indstillingen giver forbrugerne tid til at få hver rekord.

log komprimering anmeldelse

hvad er tre måder kafka kan slette poster?

kafka kan slette ældre poster baseret på tid eller størrelse af en log. kafka understøtter også log komprimering til rekord nøgle komprimering.

hvad er logkomprimering god til?

da logkomprimering bevarer den sidst kendte værdi, er det et fuldt øjebliksbillede af de seneste poster, det er nyttigt til gendannelse af tilstand efter et nedbrud eller systemfejl for en hukommelsestjeneste, en vedvarende datalager eller genindlæsning af en cache. det giver forbrugerne mulighed for at genoprette deres tilstand.

hvad er strukturen af en komprimeret log? beskriv strukturen.

med en komprimeret log har loggen hoved og hale. hovedet på den komprimerede log er identisk med en traditionel kafka-log. nye poster bliver tilføjet til enden af hovedet. al logkomprimering fungerer ved halen af den komprimerede log.

efter komprimering ændres logregistreringsforskydninger? ingen.

hvad er et partitionssegment?

husk at et emne har en log. en emnelog er opdelt i partitioner, og partitioner er opdelt i segmentfiler, der indeholder poster, der har nøgler og værdier. segmentfiler giver mulighed for opdeling og erobring, når det kommer til logkomprimering. en segmentfil er en del af partitionen. som log cleaner renser log partition segmenter, segmenterne bliver byttet ind i log partition straks erstatte de ældre segment filer. på denne måde kræver komprimering ikke dobbelt plads på hele partitionen, da yderligere diskplads, der kræves, kun er et ekstra logpartitionssegment.

jean-paul arbejder hos cloudurable . cloudurable tilbyder kafka-træning , Kafka-rådgivning, Kafka-support og hjælper med at oprette Kafka-klynger .

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.