Kafka Architecture: Log Compaction

this post really picks from our series on Kafka architecture which includes Kafka topics architecture , kafka producer architecture , Kafka consumer architecture , and kafka ecosystem architecture .

tämä artikkeli on saanut runsaasti vaikutteita Kafkan osiosta, joka käsittelee hirsirakentamista . sitä voi ajatella niin kuin Kallio toteaa Kafka designista tukkipakkauksen ympärillä .

kafka voi poistaa vanhempia tietueita ajan tai lokin koon perusteella. kafka tukee myös lokin tiivistämistä tietueavainten tiivistämiseen. lokin tiivistäminen tarkoittaa sitä, että kafka säilyttää tietueesta viimeisimmän version ja poistaa vanhemmat versiot lokin tiivistämisen aikana.

jean-paul azar työskentelee clouduravessa . cloudurable tarjoaa Kafka-koulutusta , kafka Consultingia, Kafka-tukea ja auttaa perustamaan Kafka-klustereita aws: ssä .

kafka log compaction

log compaction säilyttää vähintään viimeisen tunnetun arvon jokaiselle tietueavaimelle yhden aiheen osiolle. tiivistetty lokit ovat hyödyllisiä palauttaa tilan kaatumisen jälkeen tai järjestelmän vika.

ne ovat hyödyllisiä muistipalveluissa, pysyvissä tietovarastoissa, välimuistin uudelleenlatauksessa jne. tärkeä datavirtojen käyttötapaus on kirjata muutokset näppäiltyihin, muunneltaviin datamuutoksiin tietokantataulukkoon tai muutokset objektiin in-memory microservice-palvelussa.

log-tiivistys on rakeinen retentiomekanismi, joka säilyttää jokaisen avaimen viimeisen päivityksen. loki tiivistetty aihe loki sisältää täydellisen tilannekuvan lopullisista tietuearvoista jokaisen tietueavaimen, ei vain äskettäin vaihdettuja avaimia.

Kafka-tukkipakkauksen avulla jatkojalostuskuluttajat voivat palauttaa tilansa tukkipakkauksesta.

Kafkan hirsirakenne

tiivistetyllä hirrellä on pää ja häntä. tiivistetyn hirren pää on identtinen perinteisen kafkahirren kanssa. uudet ennätykset liitetään pään päähän.

kaikki tukin tiivistys toimii tukin hännässä. vain häntä tiivistyy. lokin hännässä olevat tietueet säilyttävät alkuperäisen offsetinsa kirjoitettaessa sen jälkeen, kun ne on kirjoitettu uudelleen tiivistyssiivouksella .

kafka – tukkipakkausrakenne

tukkipakkausrakenne

kafka-tukkipakkausrakenne

kaikki tiivistetyt tukkipakkaukset pysyvät voimassa, vaikka offset-merkintä olisi tiivistetty pois, sillä kuluttaja saa seuraavaksi korkeimman offsetin.

Kafkan lokin tiivistyminen mahdollistaa myös poistot. viesti, jossa on avain ja täysi hyötykuorma, toimii kuin hautakivi, tuon avaimen poistomerkki. hautakivet raivataan jonkin ajan kuluttua. lokin tiivistys kulkee ajoittain taustalla kopioimalla lokisegmentit uudelleen. tiivistäminen ei estä lukemista ja sitä voidaan kuristaa, jotta se ei vaikuttaisi tuottajiin ja kuluttajiin.

Kafkan tukkipakkausprosessi

Kafkan tukkipakkausprosessi

Kafkan tukkipakkauspuhdistus

jos Kafkan kuluttaja jää kiinni tukkipäähän, se näkee jokaisen kirjoitettavan tietueen.

aiheasetusta min.compaction.lag.ms käytetään takaamaan vähimmäisaika, jonka on kuluttava ennen kuin viesti voidaan tiivistää. kuluttaja näkee kaikki hautakivet niin kauan kuin kuluttaja saavuttaa lokin pään alle jäävässä ajassa kuin aihe config delete.retention.ms (oletusarvo on 24 tuntia). lokin tiivistäminen ei koskaan tilaa viestejä uudelleen, vain poistaa joitakin. viestin osion siirtymä ei koskaan muutu.

jokainen kuluttaja, joka lukee lokin alusta lähtien, näkee ainakin kaikkien tietueiden lopullisen tilan siinä järjestyksessä kuin ne on kirjoitettu.

Kafkan tukkipuhdistaja

muista, että Kafkan aiheella on loki. loki jaetaan osioihin ja osiot jaetaan segmentteihin, jotka sisältävät tietueita, joilla on avaimet ja arvot.

Kafkan tukkipuhdistaja tekee tukkipakkauksen. pölkkypesurilla on allasosasto taustojen tiivistyslankoja. nämä viestiketjut kopioivat lokisegmenttitiedostoja ja poistavat vanhempia tietueita, joiden avain ilmestyy uudelleen äskettäin lokissa. jokainen tiivistyskierre valitsee aihelokin, jolla on suurin tukkipään ja tukkipyrstön suhde. sitten tiivistyskierre palauttaa lokin alusta loppuun poistamalla tietueet, joiden avaimet tapahtuvat myöhemmin lokissa.

kun lokinpuhdistin puhdistaa lokiosion segmentit, segmentit vaihtuvat lokiosioon välittömästi vanhempien segmenttien tilalle. näin tiivistäminen ei vaadi kaksinkertaista tilaa koko osiolle, sillä tarvittava levytila on vain yksi ylimääräinen lokiosion segmentti – hajota ja hallitse.

topic config for log compaction

to turn on compaction for a topic, use topic config log.cleanup.policy=compact .

voit asettaa viiveen, jotta voit aloittaa tietueiden tiivistämisen niiden kirjoittamisen jälkeen, käyttämällä aiheasetusta log.cleaner.min.compaction.lag.ms . ennätykset tiivistyvät vasta tämän kauden jälkeen. asetus antaa kuluttajille aikaa saada jokainen ennätys.

log compaction review

mitkä ovat kolme tapaa, joilla kafka voi poistaa tietueita?

kafka voi poistaa vanhempia tietueita ajan tai lokin koon perusteella. kafka tukee myös lokin tiivistämistä tietueavainten tiivistämiseen.

mihin halkojen tiivistäminen on hyväksi?

koska lokin tiivistäminen säilyttää viimeisen tunnetun arvon, se on täydellinen tilannekuva viimeisimmistä tietueista, ja se on hyödyllinen tilan palauttamisessa kaatumisen tai järjestelmävian jälkeen muistipalvelussa, pysyvässä tietovarastossa tai välimuistin lataamisessa uudelleen. sen avulla jatkojalostuskuluttajat voivat palauttaa tilansa.

mikä on tiivistetyn hirren rakenne? kuvaile rakenne.

tiivistetyllä tukilla on pää ja häntä. tiivistetyn hirren pää on identtinen perinteisen kafkahirren kanssa. uudet ennätykset liitetään pään päähän. kaikki tukin tiivistys toimii tiivistetyn tukin perässä.

muuttuvatko lokitietueiden korvaukset tiivistämisen jälkeen? Ei.

mikä on osiosegmentti?

muista, että aiheella on loki. aiheloki jaetaan osioihin ja osiot jaetaan segmenttitiedostoihin, jotka sisältävät tietueita, joissa on avaimet ja arvot. segmenttitiedostot mahdollistavat hajota ja hallitse, kun se tulee lokin tiivistäminen. segmenttitiedosto on osa osiota. koska log cleaner puhdistaa lokiosion segmentit, segmentit saada vaihtaa lokiosion välittömästi korvaa vanhempi segmentti tiedostoja. näin tiivistäminen ei vaadi kaksinkertaista tilaa koko osiolle, sillä tarvittava levytila on vain yksi ylimääräinen lokiosion segmentti.

jean-paul azar työskentelee clouduravessa . cloudurable tarjoaa Kafka-koulutusta , kafka Consultingia, Kafka-tukea ja auttaa perustamaan Kafka-klustereita aws: ssä .

Vastaa

Sähköpostiosoitettasi ei julkaista.