Produsent- og forbrukerytelse
Juster konfigurasjonen av produsenter og forbrukere for å oppnå optimal gjennomstrømming og ventetid i applikasjonene dine.
Produsent- og forbrukerytelse er en gratis leksjon i Grunnleggende Apache Kafka og strømming på CoddyKit. Dette er leksjon 1 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.
Optimalisere Kafka-ytelsen
Velkommen til justering av Kafka! Vi skal se på hvordan produsentene kan sende data raskere, og hvordan konsumentene kan behandle dem mer effektivt.
Ytelse handler ikke bare om «raskt». Det er ofte en avveining mellom gjennomstrømming (hvor mye data som behandles per sekund) og forsinkelse (hvor raskt én enkelt melding behandles).
Maksimere produsentens gjennomstrømming
Produsenter sender meldinger til Kafka-emner. For å oppnå høy gjennomstrømming ønsker vi at de sender data i effektive bolker, ikke én melding om gangen.
Viktige produsentkonfigurasjoner påvirker hvor mange meldinger som grupperes sammen, og hvor ofte de sendes.
Samle meldinger i bolker for bedre effektivitet
I stedet for å sende hver melding umiddelbart kan produsenter samle meldinger i bolker. Dette reduserer belastningen på nettverket.
batch.size: Maksimal størrelse i byte for én enkelt bolk. Større bolker betyr færre forespørsler og øker gjennomstrømmingen.linger.ms: Maksimal tid en produsent venter på flere meldinger for å fylle en bolk. En verdi > 0 bidrar til bolkedannelse.
Komprimere produsentdata
Kafka-produsenter kan komprimere meldingsbolker før de sendes. Dette reduserer datamengden som sendes over nettverket.
compression.type: Vanlige alternativer omfattergzip,snappy,lz4ogzstd.
Komprimering sparer nettverksbåndbredde og diskplass på brokerne, og forbedrer gjennomstrømmingen ytterligere. Komprimering og dekomprimering medfører en liten CPU-kostnad.
Pålitelighet kontra forsinkelse med acks
Innstillingen acks bestemmer hvor mange bekreftelser fra brokere en produsent trenger før den regner en melding som sendt.
acks=0: Produsenten venter ikke på noen bekreftelse. Raskest, men minst pålitelig (datatap er mulig).acks=1: Produsenten venter på bekreftelse fra lederbrokeren. En god balanse mellom hastighet og pålitelighet.acks=all(eller-1): Produsenten venter på bekreftelse fra alle synkroniserte replikaer. Tregest, men mest pålitelig (ingen datatap hvis lederen svikter).
Eksempel på konfigurert produsent
Her er en enkel Kafka-produsent som er konfigurert med noen av justeringsparameterne vi har diskutert. Prøv å endre verdiene og kjøre den!
import org.apache.kafka.clients.producer.*;
import java.util.Properties;
public class TunedProducer {
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");
// Tuning parameters
props.put("batch.size", 16384 * 4); // Increase batch size (default 16KB)
props.put("linger.ms", 50); // Wait up to 50ms for more messages
props.put("compression.type", "snappy"); // Enable compression
props.put("acks", "1"); // Acks setting
Producer<String, String> producer = new KafkaProducer<>(props);
try {
for (int i = 0; i < 100; i++) {
ProducerRecord<String, String> record =
new ProducerRecord<>("my_topic", Integer.toString(i), "message_" + i);
producer.send(record);
}
System.out.println("100 messages sent to my_topic.");
} catch (Exception e) {
e.printStackTrace();
} finally {
producer.close();
}
}
}Optimalisere konsumentens gjennomstrømming
Konsumenter leser meldinger fra Kafka-emner. Effektiv konsumering innebærer å behandle meldinger raskt samtidig som man holder tritt med produsentens hastighet.
I likhet med produsenter kan konsumenter hente meldinger i grupper, noe som reduserer antallet forespørsler til brokerne.
Effektiv henting av meldinger
Flere innstillinger for konsumenter styrer hvor mange meldinger som hentes om gangen, og hvordan avstemmingen fungerer:
max.poll.records: Det maksimale antallet poster som returneres i ett enkeltpoll()-kall. En høyere verdi betyr at flere poster behandles per avstemming, noe som øker gjennomstrømmingen.fetch.min.bytes: Den minste datamengden i byte som konsumenten venter på å hente fra brokeren. Hvis man venter på mer data, kan gjennomstrømmingen øke fordi antallet forespørsler reduseres.fetch.max.wait.ms: Den maksimale tiden brokeren venter på atfetch.min.bytesskal være tilgjengelig før data sendes.
Automatisk kontra manuell commit
Kafka-konsumenter sporer fremdriften sin ved hjelp av offseter. Når en offset committes, markeres meldinger frem til dette punktet som behandlet.
enable.auto.commit: Hvistrue(standard), committes offseter automatisk i bakgrunnen. Dette er praktisk, men kan føre til at meldinger behandles flere ganger eller at data går tapt ved en krasj.auto.commit.interval.ms: Hvor ofte automatiske committer utføres. Hvis intervallet reduseres, kan risikoen for duplikater bli mindre, men det medfører mer belastning.
For høy ytelse og pålitelighet velger mange applikasjoner å committe offseter manuelt.
Justering for gjennomstrømming
Se for deg et scenario der du må maksimere gjennomstrømmingen til en Kafka-produsent.
Oppsummering: justering av produsent og konsument
Vi har gått gjennom viktige innstillinger for optimalisering av ytelsen til Kafka-produsenter og -konsumenter:
- Produsenter: Juster
batch.size,linger.msogcompression.typefor bedre gjennomstrømming. Finn en balanse mellomacks, pålitelighet og ventetid. - Konsumenter: Juster
max.poll.records,fetch.min.bytesogfetch.max.wait.msfor effektiv henting av meldinger. Forstå avveiningene mellom automatisk og manuell commit.
Husk at justering handler om å finne den rette balansen for behovene i akkurat din applikasjon!
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 «Produsent- og forbrukerytelse» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende Apache Kafka og strømming, inkludert «Produsent- og forbrukerytelse», 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 «Produsent- og forbrukerytelse»?
Juster konfigurasjonen av produsenter og forbrukere for å oppnå optimal gjennomstrømming og ventetid i applikasjonene dine. 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 1 av 4.
Hvor lang tid tar leksjonen «Produsent- og forbrukerytelse»?
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
- Produsent- og forbrukerytelse
- Meglerkonfigurasjon og -justering
- Optimalisering av disk-I/O og nettverk
- Batching, komprimering og justering av linger