0Pricing
Apache Kafka & Stream Processing Fundamentals · Lezione

Batching, compressione e ottimizzazione di linger

Scopra come batching del producer, linger.ms e compressione interagiscano per scambiare latenza con throughput e ridurre l'uso della rete e del disco.

Batching, compressione e ottimizzazione di linger è una lezione Apache Kafka & Stream Processing Fundamentals gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Apache Kafka & Stream Processing Fundamentals, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Apache Kafka & Stream Processing Fundamentals include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

The Throughput Lever

Sending one record per network call is slow. Kafka producers batch records per partition before sending, amortizing overhead and dramatically raising throughput.

batch.size

batch.size sets the maximum size (in bytes) of a single batch per partition.

  • Larger batches = better throughput, more memory.
  • A batch is sent when it fills or when linger expires.
// 64 KB batches
props.put(ProducerConfig.BATCH_SIZE_CONFIG, 65536);

linger.ms

linger.ms tells the producer to wait a short time for more records before sending, even if the batch isn't full.

  • 0 (default) = send as soon as possible, lowest latency.
  • A few ms = bigger batches, higher throughput.
props.put(ProducerConfig.LINGER_MS_CONFIG, 10);

How They Interact

Think of it as fill or wait:

  • The batch ships when it reaches batch.size.
  • Or when linger.ms elapses, whichever comes first.

Raising both increases batch sizes at the cost of latency.

Compression Basics

compression.type compresses each batch before it goes over the wire and to disk.

Bigger batches compress better, so compression pairs naturally with linger tuning.

props.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "lz4");

Choosing a Codec

Common codecs and their trade-offs:

  • lz4 — fast, good ratio, popular default.
  • snappy — very fast, lower ratio.
  • zstd — best ratio, slightly more CPU.
  • gzip — high ratio, higher CPU.

End-to-End Compression

Kafka stores batches compressed and serves them compressed; consumers decompress.

This means compression saves network, disk, and replication bandwidth — not just the producer link.

buffer.memory

buffer.memory caps total memory for unsent records.

If batches accumulate faster than they ship, the producer blocks (up to max.block.ms) — a sign brokers can't keep up or batching is too aggressive.

props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432);

A High-Throughput Profile

A typical throughput-oriented configuration:

props.put(ProducerConfig.BATCH_SIZE_CONFIG, 131072);
props.put(ProducerConfig.LINGER_MS_CONFIG, 20);
props.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "zstd");
props.put(ProducerConfig.ACKS_CONFIG, "all");

Latency vs. Throughput

There is no free lunch:

  • Lower linger.ms and smaller batches = lower latency.
  • Higher values + compression = higher throughput, more latency.

Tune to your SLA, then measure.

Measuring the Effect

Watch producer JMX metrics to confirm tuning works:

  • batch-size-avg — are batches actually larger?
  • compression-rate-avg — how well does data compress?
  • record-queue-time-avg — added latency from linger.

Quick Check

Test your understanding of batching and linger.

Recap

You learned producer batching and compression tuning.

  • batch.size + linger.ms control batch size and the latency trade-off.
  • Compression (lz4/zstd) saves network, disk, and replication bandwidth.
  • buffer.memory bounds in-flight data.
  • Verify with batch-size-avg and compression-rate-avg metrics.

Domande Frequenti

La lezione «Batching, compressione e ottimizzazione di linger» è gratuita?

Sì — il testo completo di «Batching, compressione e ottimizzazione di linger» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Apache Kafka & Stream Processing Fundamentals, passa a CoddyKit PRO. Il corso Apache Kafka & Stream Processing Fundamentals include 4 lezioni in totale.

Cosa imparerò in «Batching, compressione e ottimizzazione di linger»?

Scopra come batching del producer, linger.ms e compressione interagiscano per scambiare latenza con throughput e ridurre l'uso della rete e del disco. Eserciti Apache Kafka & Stream Processing Fundamentals con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Apache Kafka & Stream Processing Fundamentals?

Non è richiesta alcuna esperienza precedente. Apache Kafka & Stream Processing Fundamentals su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Batching, compressione e ottimizzazione di linger»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Apache Kafka & Stream Processing Fundamentals?

Sì. Ogni lezione Apache Kafka & Stream Processing Fundamentals include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Prestazioni di producer e consumer
  2. Configurazione e ottimizzazione dei broker
  3. Ottimizzazione di I/O del disco e rete
  4. Batching, compressione e ottimizzazione di linger
← Torna a Apache Kafka & Stream Processing Fundamentals