Kafka Architecture: Log Compaction

dette innlegget virkelig plukker av fra vår serie på kafka arkitektur som inkluderer kafka emner arkitektur, kafka produsent arkitektur, kafka forbrukerarkitektur, og kafka økosystemarkitektur .

denne artikkelen er sterkt inspirert av kafka-delen om design rundt loggkomprimering . du kan tenke på det som klippen notater om kafka design rundt logg komprimering .

kafka kan slette eldre poster basert på tid eller størrelse på en logg. kafka støtter også logg komprimering for posten nøkkel komprimering. loggkomprimering betyr at kafka vil beholde den nyeste versjonen av en post og slette de eldre versjonene under en loggkomprimering.

jean-paul azar jobber på cloudurable . cloudurable gir kafka trening, kafka consulting, kafka støtte og hjelper sette opp kafka klynger i aws .

kafka loggkomprimering

loggkomprimering beholder minst den siste kjente verdien for hver postnøkkel for en enkelt emnepartisjon. komprimerte logger er nyttige for å gjenopprette tilstand etter en krasj eller systemfeil.

de er nyttige for minnetjenester, vedvarende datalager, omlasting av en cache, etc. et viktig brukstilfelle for datastrømmer er å logge endringer i nøkkelede, foranderlige dataendringer i en databasetabell eller endringer i objekt i minnemikroservice.

loggkomprimering er en detaljert oppbevaringsmekanisme som beholder den siste oppdateringen for hver nøkkel. en logg komprimert emnlogg inneholder et fullstendig øyeblikksbilde av endelige postverdier for hver posttast, ikke bare de nylig endrede tastene.

kafka loggkomprimering gjør det mulig for nedstrøms forbrukere å gjenopprette tilstanden fra et loggkomprimert emne.

kafka logg komprimeringsstruktur

med en komprimert logg har loggen hode og hale. hodet på den komprimerte loggen er identisk med en tradisjonell kafka-logg. nye poster blir lagt til enden av hodet.

all loggkomprimering fungerer ved loggenes hale. bare halen blir komprimert. poster i halen av loggen beholde sin opprinnelige offset når skrevet etter å ha blitt omskrevet med komprimering opprydding .

kafka loggkomprimering struktur

 loggkomprimering struktur

kafka loggkomprimering grunnleggende

alle komprimerte loggforskyvninger forblir gyldige, selv om post ved forskyvning er komprimert bort som forbruker vil få den neste høyeste offset.

kafka loggkomprimering tillater også sletting. en melding med en nøkkel og en null nyttelast fungerer som en gravstein, en slettemarkør for den nøkkelen. gravsteiner blir ryddet etter en periode. logg komprimering periodisk kjører i bakgrunnen ved å re-kopiere logg segmenter. komprimering blokkerer ikke leser og kan strupes for å unngå å påvirke i / o av produsenter og forbrukere.

kafka loggkomprimeringsprosess

 kafka loggkomprimeringsprosess

kafka loggkomprimeringsprosess

hvis en kafka-forbruker holder seg fast i loggen, ser den alle poster som er skrevet.

emne config min.compaction.lag.ms blir brukt til å garantere en minimumsperiode som må passere før en melding kan komprimeres. forbrukeren ser alle gravsteiner så lenge forbrukeren når hodet av en logg i en periode mindre enn emnet config delete.retention.ms (standard er 24 timer). logg komprimering vil aldri re-order meldinger, bare fjerne noen. partisjon offset for en melding endres aldri.

enhver forbruker lesing fra starten av loggen ser minst endelig tilstand av alle poster i den rekkefølgen de ble skrevet.

kafka log cleaner

husk at et kafka-emne har en logg. en logg er brutt opp i partisjoner og partisjoner er delt inn i segmenter som inneholder poster som har nøkler og verdier.

kafka log cleaner gjør loggkomprimering. loggen renere har en pool av bakgrunn komprimering tråder. disse trådene recopy logg segment filer, fjerne eldre poster som nøkkelen vises nylig i loggen. hver komprimeringstråd velger emnlogg som har det høyeste forholdet mellom logghode og logghale. deretter recopies komprimeringstråden loggen fra start til slutt fjerne poster som nøkler oppstår senere i loggen.

når log cleaner renser loggpartisjonssegmenter, blir segmentene byttet inn i loggpartisjonen og erstatter de eldre segmentene umiddelbart. denne måten komprimering krever ikke dobbel plass på hele partisjonen som ekstra diskplass som kreves er bare ett ekstra log partisjon segment-divide and conquer.

emnekonfigurasjon for loggkomprimering

hvis du vil slå på komprimering for et emne, bruker du emnekonfigurasjon log.cleanup.policy=compact .

hvis du vil angi en forsinkelse for å starte komprimeringen av poster etter at de er skrevet, bruker du topic config log.cleaner.min.compaction.lag.ms . rekordene blir ikke komprimert før etter denne perioden. innstillingen gir forbrukerne tid til å få hver post.

logg komprimering gjennomgang

hva er tre måter kafka kan slette poster?

kafka kan slette eldre poster basert på tid eller størrelse på en logg. kafka støtter også logg komprimering for posten nøkkel komprimering.

hva er loggkomprimering bra for?

siden loggkomprimering beholder den siste kjente verdien, er det et fullstendig øyeblikksbilde av de nyeste postene. det tillater nedstrøms forbrukere å gjenopprette sin tilstand.

hva er strukturen til en komprimert logg? beskriv strukturen.

med en komprimert logg har loggen hode og hale. hodet på den komprimerte loggen er identisk med en tradisjonell kafka-logg. nye poster blir lagt til enden av hodet. all loggkomprimering fungerer ved halen av den komprimerte loggen.

endres loggpostforskyvninger etter komprimering? ingen.

hva er et partisjonssegment?

husk at et emne har en logg. en emnlogg er delt opp i partisjoner og partisjoner er delt inn i segmentfiler som inneholder poster som har nøkler og verdier. segmentfiler tillater splitt og hersk når det gjelder loggkomprimering. en segmentfil er en del av partisjonen. som log cleaner renser log partisjon segmenter, blir segmentene byttet inn i log partisjon umiddelbart erstatte de eldre segment filer. denne måten komprimering krever ikke dobbel plass på hele partisjonen som ekstra diskplass som kreves er bare ett ekstra log partisjon segment.

jean-paul azar jobber på cloudurable . cloudurable gir kafka trening, kafka consulting, kafka støtte og hjelper sette opp kafka klynger i aws .

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.