Forstå partisjoner og offseter
Forstå hvor viktige partisjoner er for skalerbarhet og parallellitet, og hvordan offseter sporer forbrukernes fremdrift.
Forstå partisjoner og offseter er en gratis leksjon i Grunnleggende Apache Kafka og strømming på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende Apache Kafka og strømming, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende Apache Kafka og strømming inneholder totalt 4 leksjoner.
Hva er Kafka-partisjoner?
Tenk på et Kafka-emne som en kategori for meldinger. For å håndtere mange meldinger effektivt deler Kafka et emne inn i mindre, ordnede segmenter som kalles partisjoner.
Tenk på hver partisjon som sin egen lille logg. Meldinger legges til på slutten av en partisjon i den rekkefølgen de kommer inn. Når meldinger først er skrevet til en partisjon, kan de ikke endres.
Partisjoner: ordnede og uforanderlige
Det er viktig å forstå at meldinger i én enkeltpartisjon er strengt ordnet, men at det ikke finnes noen garantert rekkefølge på tvers av ulike partisjoner i samme emne.
- Ordnede: Meldinger i én partisjon har alltid en tydelig rekkefølge.
- Uforanderlige: Når en melding er skrevet til en partisjon, kan den ikke endres.
- Kun tilføyelse: Nye meldinger legges alltid til på slutten.
Skalerbarhet gjennom partisjoner
Partisjoner er selve grunnlaget for Kafka sin skalerbarhet og parallellitet. Her er hvorfor de er viktige:
- Parallell behandling: Flere forbrukere kan lese fra ulike partisjoner i samme emne samtidig.
- Distribuert lagring: Partisjoner kan fordeles på ulike Kafka-meglere (servere) i en klynge. Dermed kan emner håndtere mer data enn én enkelt server ville klart.
Slik tilordnes meldinger
Når en produsent sender en melding, må Kafka avgjøre hvilken partisjon den skal legges i. Dette kalles en partisjoneringsstrategi:
- Med en nøkkel: Hvis en melding inneholder en nøkkel (for eksempel en bruker-ID), bruker Kafka en hash av nøkkelen til å tilordne meldingen konsekvent til samme partisjon. Dette sikrer at alle meldinger for en bestemt nøkkel behandles i riktig rekkefølge.
- Uten en nøkkel: Hvis ingen nøkkel oppgis, bruker Kafka vanligvis en round-robin-tilnærming, der meldingene fordeles jevnt på alle partisjonene.
Produsent med meldingsnøkler
Dette Java-eksempelet viser hvordan en produsent sender meldinger til et emne og angir en nøkkel uttrykkelig. Meldinger med samme nøkkel havner i samme partisjon.
import java.util.Properties;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
public class KeyedProducer {
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
try (KafkaProducer<String, String> producer = new KafkaProducer<>(props)) {
String topic = "my_keyed_topic";
for (int i = 0; i < 4; i++) {
String key = "user-" + (i % 2); // user-0, user-1, user-0, user-1
String value = "Message " + i + " for " + key;
producer.send(new ProducerRecord<>(topic, key, value));
System.out.println("Sent: Key=" + key + ", Value=" + value);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}Introduksjon til meldingsoffseter
Hver melding i en Kafka-partisjon har en unik, sekvensiell identifikator som kalles en offset. Tenk på den som et indeksnummer for meldinger i den aktuelle partisjonen.
- Den første meldingen i en partisjon har offset 0.
- Den neste meldingen har offset 1, og så videre.
- Offseter gjelder lokalt for hver partisjon.
Offseter for forbrukerens fremdrift
Offseter er avgjørende for at forbrukere skal kunne holde oversikt over fremdriften. En forbruker lagrer offseten til den siste meldingen den behandlet uten feil i hver partisjon.
Dette gjør det mulig for forbrukere å:
- Fortsette behandlingen nøyaktig der de slapp, hvis de stopper eller krasjer.
- Vite hvilke meldinger de fortsatt må lese.
Bekrefte offseter
Etter at meldinger er behandlet, må forbrukere informere Kafka om fremdriften ved å bekrefte offsetene. Det innebærer å lagre den gjeldende offseten i et spesielt Kafka-emne (__consumer_offsets).
Bekreftelse kan være:
- Automatisk: Kafka bekrefter offseter regelmessig i bakgrunnen.
- Manuell: Applikasjonen forteller uttrykkelig Kafka når offseter skal bekreftes, noe som gir bedre kontroll over behandlingsgarantiene.
Test forståelsen
La oss teste kunnskapene Deres om Kafka-partisjoner og offseter.
Oppsummering: Partisjoner og offseter
I dag har vi utforsket to sentrale Kafka-konsepter:
- Partisjoner: Disse segmentene deler opp et emne og muliggjør parallell behandling, distribuert lagring og ordnede meldinger i hver partisjon.
- Offseter: Disse sekvensielle ID-ene viser meldingenes plassering i en partisjon, slik at forbrukere kan håndtere fremdriften nøyaktig og gjenoppta behandlingen på en pålitelig måte.
Å forstå disse konseptene er avgjørende for å bygge skalerbare og robuste Kafka-applikasjoner.
Lær deg Grunnleggende Apache Kafka og strømming med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Forstå partisjoner og offseter» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende Apache Kafka og strømming, inkludert «Forstå partisjoner og offseter», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende Apache Kafka og strømming inneholder totalt 4 leksjoner.
Hva lærer jeg i «Forstå partisjoner og offseter»?
Forstå hvor viktige partisjoner er for skalerbarhet og parallellitet, og hvordan offseter sporer forbrukernes fremdrift. Du øver på Grunnleggende Apache Kafka og strømming med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Grunnleggende Apache Kafka og strømming?
Ingen tidligere erfaring er nødvendig. Grunnleggende Apache Kafka og strømming på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Forstå partisjoner og offseter»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Grunnleggende Apache Kafka og strømming-leksjonen?
Ja. Alle Grunnleggende Apache Kafka og strømming-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Produsere meldinger til Kafka
- Konsumere meldinger fra Kafka
- Forstå partisjoner og offseter
- Meldingsnøkler og partisjoneringsstrategier