Offset ni kitambulisho cha kipekee na cha mfuatano kwa kila event ndani ya partition — kikionyesha nafasi yake. Consumers hufuatilia na kuwasilisha offsets ili kujua kile wamekitumia, kuwezesha kuendelea, replay, na uchakataji wa kuaminika.
Offsets ni nini
OFFSET → the position/ID of an event within a PARTITION:
→ each partition is an ordered log; events get incrementing offsets (0, 1, 2, ...)
→ an offset uniquely identifies an event's position in its partition
→ events are RETAINED → the log keeps events (offsets remain valid for the retention period)
Jinsi consumers wanavyotumia offsets
→ a consumer reads events in order and tracks its CURRENT offset (where it has read to)
→ COMMITTING an offset → records "I've processed up to here" → on restart, resume from
the committed offset (don't reprocess everything)
→ consumers can SEEK to any offset → REPLAY old events, skip ahead, reprocess from a point
→ each consumer GROUP tracks its own offsets per partition (independent progress)
Usimamizi wa offset na delivery semantics
WHEN/HOW you commit offsets affects DELIVERY GUARANTEES:
→ commit AFTER processing → AT-LEAST-ONCE (a crash before commit → reprocess → duplicates;
need idempotency)
→ commit BEFORE processing → AT-MOST-ONCE (a crash after commit but before processing →
message lost)
→ EXACTLY-ONCE → requires more (transactions, idempotent processing)
→ auto-commit (periodic) vs manual commit (control) → choose based on guarantees needed
Kwa nini ni muhimu
Kuelewa offsets ni jambo la msingi kwa sababu ndio jinsi Kafka inavyofuatilia maendeleo ya matumizi na kuwezesha uwezo wake wa kipekee (kuendelea, replay, delivery guarantees), hivyo ni maarifa muhimu ya Kafka.
Offset — nafasi ya event ndani ya partition — ni kiini cha jinsi consumers wanavyofanya kazi na Kafka.
Kuelewa offsets ni nini (vitambulisho vya mfuatano vinavyoonyesha nafasi ya kila event katika log iliyopangwa ya partition, huku events zikihifadhiwa ili offsets zibaki halali) ni msingi.
Kuelewa jinsi consumers wanavyotumia offsets — kufuatilia offset yao ya sasa (mahali walipofika kusoma), kuwasilisha offsets ili kurekodi maendeleo (ili waendelee kutoka nafasi iliyowasilishwa wakati wa kuanzisha upya badala ya kuchakata tena kila kitu), na kuweza kutafuta (seek) offset yoyote ili replay events za zamani au kuchakata tena kutoka nafasi fulani (uwezo wa kipekee wa Kafka wa replay), huku kila consumer group ikifuatilia offsets zake kwa kujitegemea — ni muhimu kuelewa jinsi matumizi, kuendelea, na replay vya Kafka vinavyofanya kazi.
Muhimu zaidi, kuelewa usimamizi wa offset na delivery semantics ni muhimu: lini na jinsi unavyowasilisha offsets huathiri delivery guarantees — kuwasilisha baada ya uchakataji hutoa at-least-once (crash kabla ya commit husababisha kuchakata tena/duplicates, kuhitaji idempotency), kuwasilisha kabla hutoa at-most-once (crash baada ya commit lakini kabla ya uchakataji hupoteza message), na exactly-once huhitaji zaidi (transactions, uchakataji wa idempotent).
Uunganisho huu kati ya usimamizi wa offset na delivery guarantees ni dhana muhimu ya kivitendo kwa kujenga consumers za Kafka za kuaminika.
Kuelewa auto-commit dhidi ya manual commit (udhibiti wa guarantees) kunaonyesha usimamizi wa offset wa kivitendo.
Kwa kuwa offsets ndio jinsi Kafka inavyofuatilia maendeleo ya matumizi na kuwezesha uwezo wake wa kipekee (kuendelea, replay) huku usimamizi wao ukiamua delivery guarantees (at-least-once, at-most-once, exactly-once), na kwa kuwa kuelewa offsets ni muhimu kwa kujenga consumers za kuaminika, kuelewa offsets katika Kafka ni maarifa muhimu na ya msingi — kiini cha jinsi Kafka inavyofuatilia matumizi na kuwezesha replay, na yaliyounganishwa kwa umuhimu na delivery guarantees kupitia usimamizi wa offset, muhimu kwa kujenga consumers za Kafka za kuaminika na dhana kuu ya Kafka.
