Performances des producteurs et des consommateurs
Ajustez la configuration des producteurs et des consommateurs afin d’obtenir un débit et une latence optimaux dans vos applications.
Performances des producteurs et des consommateurs est une leçon Apache Kafka & Stream Processing Fundamentals gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Apache Kafka & Stream Processing Fundamentals, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Apache Kafka & Stream Processing Fundamentals comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Optimizing Kafka Performance
Welcome to tuning Kafka! We'll explore how to make your producers send data faster and your consumers process it more efficiently.
Performance isn't just about "fast." It's often a balance between throughput (how much data per second) and latency (how quickly a single message gets processed).
Maximizing Producer Throughput
Producers send messages to Kafka topics. To achieve high throughput, we want them to send data in efficient chunks, not one by one.
Key producer configurations influence how many messages are grouped together and how often they are sent.
Batching Messages for Efficiency
Instead of sending each message immediately, producers can collect messages into batches. This reduces network overhead.
batch.size: The maximum size in bytes of a single batch. Larger batches mean fewer requests, boosting throughput.linger.ms: The maximum time a producer will wait for more messages to fill a batch. Setting this to a value > 0 helps batching.
Compressing Producer Data
Kafka producers can compress message batches before sending them. This reduces the amount of data sent over the network.
compression.type: Common options includegzip,snappy,lz4, orzstd.
Compression saves network bandwidth and disk space on brokers, further improving throughput. There's a small CPU cost for compression/decompression.
Reliability vs. Latency with Acks
The acks setting determines how many broker acknowledgements a producer needs before considering a message sent.
acks=0: Producer doesn't wait for any ack. Fastest, but lowest reliability (data loss possible).acks=1: Producer waits for the leader broker to acknowledge. Good balance of speed and reliability.acks=all(or-1): Producer waits for all in-sync replicas to acknowledge. Slowest, but highest reliability (no data loss if leader fails).
Tuned Producer Example
Here's a simple Kafka producer configured with some of the tuning parameters we discussed. Try changing the values and running it!
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();
}
}
}Optimizing Consumer Throughput
Consumers read messages from Kafka topics. Efficient consumption means processing messages quickly while keeping up with the producer's rate.
Similar to producers, consumers can fetch messages in batches, which reduces the number of requests to the brokers.
Fetching Messages Efficiently
Several consumer settings control how many messages are fetched at once and how the polling works:
max.poll.records: The maximum number of records returned in a singlepoll()call. A higher value means more records processed per poll, increasing throughput.fetch.min.bytes: The minimum amount of data in bytes the consumer will wait to fetch from the broker. Waiting for more data can increase throughput by reducing requests.fetch.max.wait.ms: The maximum time the broker will wait forfetch.min.bytesto be available before sending data.
Auto-Commit vs. Manual Commit
Kafka consumers track their progress using offsets. Committing an offset means marking messages up to that point as processed.
enable.auto.commit: Iftrue(default), offsets are committed automatically in the background. Convenient, but can lead to duplicate processing or data loss on crash.auto.commit.interval.ms: How often auto-commits occur. Reducing this can lower the risk of duplicates but adds overhead.
For high performance and reliability, many applications opt for manual offset committing.
Tuning for Throughput
Consider a scenario where you need to maximize the throughput of a Kafka producer.
Recap: Producer & Consumer Tuning
We've covered essential configurations for optimizing Kafka producer and consumer performance:
- Producers: Tune
batch.size,linger.ms,compression.typefor throughput. Balanceacksfor reliability vs. latency. - Consumers: Adjust
max.poll.records,fetch.min.bytes,fetch.max.wait.msfor efficient message fetching. Understand auto-commit vs. manual commit tradeoffs.
Remember, tuning is about finding the right balance for your specific application needs!
Apprends Apache Kafka & Stream Processing Fundamentals avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 12
- Leçons
- 48
Questions Fréquemment Posées
La leçon « Performances des producteurs et des consommateurs » est-elle gratuite ?
Oui — le texte complet de « Performances des producteurs et des consommateurs » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Apache Kafka & Stream Processing Fundamentals, passe à CoddyKit PRO. Le cours Apache Kafka & Stream Processing Fundamentals comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Performances des producteurs et des consommateurs » ?
Ajustez la configuration des producteurs et des consommateurs afin d’obtenir un débit et une latence optimaux dans vos applications. Tu pratiques Apache Kafka & Stream Processing Fundamentals avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Apache Kafka & Stream Processing Fundamentals ?
Aucune expérience préalable n'est requise. Apache Kafka & Stream Processing Fundamentals sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Performances des producteurs et des consommateurs » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Apache Kafka & Stream Processing Fundamentals ?
Oui. Chaque leçon Apache Kafka & Stream Processing Fundamentals inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Performances des producteurs et des consommateurs
- Configuration et optimisation des courtiers
- Optimisation des entrées-sorties disque et du réseau
- Mise en lots, compression et réglage de linger.ms