Kafka Architecture: log Compaction

această postare se desprinde cu adevărat din seria noastră despre Kafka architecture , care include Kafka topics architecture , Kafka producer architecture , Kafka consumer architecture și Kafka ecosystem architecture .

acest articol este puternic inspirat de secțiunea kafka privind proiectarea în jurul compactării jurnalului . vă puteți gândi la ea ca la notele de stâncă despre designul kafka în jurul compactării jurnalului .

kafka poate șterge înregistrări mai vechi în funcție de timpul sau dimensiunea unui jurnal. kafka acceptă, de asemenea, compactarea jurnalului pentru compactarea cheilor de înregistrare. compactarea jurnalului înseamnă că kafka va păstra cea mai recentă versiune a unei înregistrări și va șterge versiunile mai vechi în timpul compactării jurnalului.

jean-paul azar lucrează la cloudurable . cloudurable oferă instruire kafka , consultanță kafka, asistență kafka și ajută la configurarea clusterelor kafka în aws .

compactarea jurnalului kafka

compactarea jurnalului păstrează cel puțin ultima valoare cunoscută pentru fiecare cheie de înregistrare pentru o singură partiție de subiect. jurnalele compactate sunt utile pentru restabilirea stării după un accident sau o defecțiune a sistemului.

sunt utile pentru servicii în memorie, magazine de date persistente, reîncărcarea unui cache etc. un caz important de utilizare a fluxurilor de date este de a înregistra modificările la modificările de date cu cheie, mutabile într-un tabel de baze de date sau modificările la obiect în microserviciul din memorie.

compactarea jurnalului este un mecanism de retenție granular care păstrează ultima actualizare pentru fiecare cheie. un jurnal compactat jurnal subiect conține o imagine completă a valorilor finale de înregistrare pentru fiecare cheie de înregistrare nu doar tastele Modificate recent.

compactarea jurnalului kafka permite consumatorilor din aval să-și restabilească starea dintr-un subiect compactat de jurnal.

structura de compactare a jurnalului kafka

cu un jurnal compactat , Jurnalul are cap și coadă. capul jurnalului compactat este identic cu un jurnal tradițional kafka. noile înregistrări se anexează la capătul capului.

toate lucrările de compactare jurnal la coada jurnalului. doar coada se compactează. înregistrările din coada jurnalului își păstrează decalajul original atunci când sunt scrise după ce au fost rescrise cu curățarea compactării .

structura de compactare a jurnalului kafka

structura de compactare a jurnalului

elementele de bază ale compactării jurnalului kafka

toate compensările jurnalului compactate rămân valabile, chiar dacă înregistrarea la compensare a fost compactată, deoarece consumatorul va obține următoarea compensare maximă.

compactarea jurnalului kafka permite, de asemenea, ștergerea. un mesaj cu o cheie și o sarcină utilă nulă acționează ca o piatră funerară, un marker de ștergere pentru acea cheie. pietrele funerare sunt eliminate după o perioadă. compactarea jurnalului rulează periodic în fundal prin re-copierea segmentelor jurnalului. compactarea nu blochează citirile și poate fi redusă pentru a evita impactul i/o al producătorilor și consumatorilor.

procesul de compactare a jurnalului kafka

procesul de compactare a jurnalului kafka

curățarea jurnalului kafka

dacă un consumator kafka rămâne prins de capul jurnalului, acesta vede fiecare înregistrare scrisă.

topic config min.compaction.lag.ms este folosit pentru a garanta o perioadă minimă care trebuie să treacă înainte ca un mesaj să poată fi compactat. consumatorul vede Toate pietrele funerare atâta timp cât consumatorul ajunge la capul unui jurnal într-o perioadă mai mică decât subiectul config delete.retention.ms (implicit este de 24 de ore). log compactare nu va re – comanda mesaje, doar elimina unele. partiția offset pentru un mesaj Nu se schimbă niciodată.

orice citire a consumatorului de la începutul jurnalului vede cel puțin starea finală a tuturor înregistrărilor în ordinea în care au fost scrise.

Kafka Log cleaner

amintiți-vă că un subiect kafka are un jurnal. un jurnal este împărțit în partiții și partițiile sunt împărțite în segmente care conțin înregistrări care au chei și valori.

curățătorul de jurnale kafka face compactarea jurnalului. Log cleaner are un grup de fire de compactare de fundal. aceste fire recopiază fișierele segmentului de jurnal, eliminând înregistrările mai vechi a căror cheie reapare recent în jurnal. fiecare fir de compactare alege jurnal subiect care are cel mai mare raport de cap jurnal log coada. apoi firul de compactare recopiază Jurnalul de la început până la sfârșit eliminând înregistrările ale căror chei apar mai târziu în jurnal.

pe măsură ce curățătorul de jurnale curăță segmentele de partiții jurnal, segmentele se schimbă în partiția jurnal înlocuind imediat segmentele mai vechi. în acest fel, compactarea nu necesită dublarea spațiului întregii partiții, deoarece spațiul suplimentar pe disc necesar este doar un segment suplimentar de partiție jurnal – divide și conquer.

configurare subiect pentru compactarea jurnalului

pentru a activa compactarea pentru un subiect, utilizați configurare subiect log.cleanup.policy=compact .

pentru a seta o întârziere pentru a începe compactarea înregistrărilor după ce sunt scrise, utilizați topic config log.cleaner.min.compaction.lag.ms . înregistrările nu vor fi compactate decât după această perioadă. setarea oferă consumatorilor timp pentru a obține fiecare înregistrare.

jurnal compactare review

care sunt trei moduri kafka poate șterge înregistrările?

kafka poate șterge înregistrări mai vechi în funcție de timpul sau dimensiunea unui jurnal. kafka acceptă, de asemenea, compactarea jurnalului pentru compactarea cheilor de înregistrare.

pentru ce este bună compactarea jurnalului?

deoarece compactarea jurnalului păstrează ultima valoare cunoscută, este un instantaneu complet al celor mai recente înregistrări, este util pentru restabilirea stării după un accident sau o eroare de sistem pentru un serviciu în memorie, un magazin de date persistent sau reîncărcarea unui cache. permite consumatorilor din aval să-și restabilească starea.

care este structura unui jurnal compactat? descrieți structura.

cu un jurnal compactat, Jurnalul are cap și coadă. capul jurnalului compactat este identic cu un jurnal tradițional kafka. noile înregistrări se anexează la capătul capului. toate lucrările de compactare jurnal la coada jurnalului compactat.

după compactare, se schimbă decalajele de înregistrare a jurnalului? nu.

ce este un segment de partiție?

amintiți-vă că un subiect are un jurnal. un jurnal de subiect este împărțit în partiții, iar partițiile sunt împărțite în fișiere de segment care conțin înregistrări care au chei și valori. fișierele de segment permit împărțirea și cucerirea atunci când vine vorba de compactarea jurnalului. un fișier segment face parte din partiție. pe măsură ce Log cleaner curăță segmentele de partiții jurnal, segmentele se schimbă în partiția jurnal înlocuind imediat fișierele segmentului mai vechi. în acest fel, compactarea nu necesită dublul spațiului întregii partiții, deoarece spațiul suplimentar pe disc necesar este doar un segment suplimentar de partiție jurnal.

jean-paul azar lucrează la cloudurable . cloudurable oferă instruire kafka , consultanță kafka, asistență kafka și ajută la configurarea clusterelor kafka în aws .

Lasă un răspuns

Adresa ta de email nu va fi publicată.