Grundlag i Apache Kafka og strømbehandling · Lektion

Message keys og partitioneringsstrategier

Lær, hvordan Kafka bruger message keys til at dirigere records til partitioner, hvordan det garanterer rækkefølge, og hvordan De designer keys og custom partitioners.

Lektion 4 af 413 trin

Message keys og partitioneringsstrategier er en gratis Grundlag i Apache Kafka og strømbehandling-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Grundlag i Apache Kafka og strømbehandling, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Grundlag i Apache Kafka og strømbehandling-kurset indeholder 4 lektioner i alt.

Nøglens rolle

Hver Kafka-post kan indeholde en valgfri nøgle. Nøglen er ikke kun data — den afgør, hvilken partition posten skrives til.

Standardpartitionering

Når der findes en nøgle, beregner standardpartitioneringen en hash af den og knytter hashen til en partition. Den samme nøgle ender altid i den samme partition, når antallet af partitioner er uændret.

partition = hash(key) % numPartitions

Adfærd uden nøgle

Hvis du sender poster uden en nøgle, fordeler producenten dem på partitionerne (med fastholdte batcher i moderne klienter), så belastningen fordeles jævnt — men rækkefølgen på tværs af partitioner garanteres ikke.

Rækkefølgesikkerhed

Kafka garanterer kun rækkefølgen inden for en partition. Ved at bruge nøgler til relaterede poster (f.eks. alle hændelser for ét ordre-id) sikrer du, at de behandles i rækkefølge.

send("orders", orderId, event);  // all events for an order stay ordered

Valg af en god nøgle

En god nøgle afspejler dine behov for rækkefølge og gruppering.

  • Brugerhændelser med userId som nøgle.
  • Ordrehændelser med orderId som nøgle.
  • Undgå nøgler med for få forskellige værdier (det skaber overbelastede partitioner).

Overbelastede partitioner

Hvis én nøgleværdi dominerer trafikken, bliver dens partition et flaskehalsområde, mens de andre står ubenyttede hen. Hold øje med nøglers kardinalitet og fordeling for at bevare en jævn belastning.

Brug af nøgler i Spring Boot

Giv nøglen som det andet argument til send; Spring sender den videre til partitioneringen.

kafkaTemplate.send("orders", order.getId(), payload);

Tilpasset partitionering

Hvis du har brug for særlig routinglogik, skal du implementere interfacet Partitioner og tilsidesætte partition().

public int partition(String topic, Object key, byte[] keyBytes,
        Object value, byte[] valueBytes, Cluster cluster) {
    return isVip(key) ? 0 : 1 + (Math.abs(key.hashCode()) % (n - 1));
}

Registrering af partitioneringen

Angiv via konfiguration, at producenten skal bruge din klasse.

spring:
  kafka:
    producer:
      properties:
        partitioner.class: com.example.VipPartitioner

Antal partitioner og nøgler

Hvis du ændrer antallet af partitioner, ændres hash % numPartitions, så eksisterende nøgler kan flyttes til nye partitioner, hvilket ødelægger rækkefølgen. Vælg antallet af partitioner omhyggeligt fra starten.

Samling af det hele

Nøglerne forbinder data med partitioner. De giver rækkefølge pr. nøgle, styrer fordelingen af belastningen og kan tilpasses med en partitioner til avanceret routing.

Hurtigt tjek

Test din forståelse af nøgler og partitionering.

Opsummering

Du har lært om meddelelsesnøgler og partitionering.

  • Nøglen bestemmer målpartitionen gennem hashing.
  • Samme nøgle, samme partition, ordnet behandling.
  • Nøgler med få forskellige værdier medfører overbelastede partitioner.
  • En brugerdefineret Partitioner muliggør avanceret routing.
Gratis at komme i gang

Lær Grundlag i Apache Kafka og strømbehandling med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Message keys og partitioneringsstrategier” gratis?

Ja — alle 3 lektioner i læringssporet Grundlag i Apache Kafka og strømbehandling, inklusive “Message keys og partitioneringsstrategier”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Grundlag i Apache Kafka og strømbehandling-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Message keys og partitioneringsstrategier”?

Lær, hvordan Kafka bruger message keys til at dirigere records til partitioner, hvordan det garanterer rækkefølge, og hvordan De designer keys og custom partitioners. Du øver dig i Grundlag i Apache Kafka og strømbehandling med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Grundlag i Apache Kafka og strømbehandling?

Der kræves ingen tidligere erfaring. Grundlag i Apache Kafka og strømbehandling på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Message keys og partitioneringsstrategier”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Grundlag i Apache Kafka og strømbehandling-lektion?

Ja. Alle Grundlag i Apache Kafka og strømbehandling-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Produktion af meddelelser til Kafka
  2. Forbrug af meddelelser fra Kafka
  3. Forstå partitioner og offsets
  4. Message keys og partitioneringsstrategier
← Tilbage til Grundlag i Apache Kafka og strømbehandling