Apache Kafka Tutorial 0/111 lessons ~6 min read Lesson 50
ISR
What is ISR?
Course progress0%
Focus
9 guided sections
Practice signal
Examples included
Career prep
Foundation builder
Introduction
What is ISR? In-sync replicas are replicas caught up enough to be eligible for durable acknowledgement and leader election.
Understanding the topic
What happens — ISR:
- Plan partitions and replication factor.
- Configure retention and compaction.
- Monitor ISR, lag, disk.
- Scale brokers and partitions with load.
| Term | Description |
|---|---|
| Topic | A named channel where producers publish and consumers read — e.g. user_signups or payment_logs. |
| Partition | A topic is split into partitions for parallel storage and processing. Ordering is per partition. |
| ProducerRecord | The object you send: topic name, optional key, value (payload), and optional headers. |
| Serialization | Converting your data (String, JSON, Avro) into bytes — Kafka only stores bytes. |
| Key | Optional field used to pick a partition. Same key → same partition → ordered delivery for that key. |
| Broker | Kafka server that stores messages and serves producers and consumers. |
| Ack (Acknowledgment) | How many replicas must confirm receipt before the send is considered successful (acks=0, 1, or all). |
Visual explanation
Pipeline view:
text
App creates message (e.g. "User signed up")↓Producer sends to topic (e.g. user_signups)↓Kafka stores in partitioned log (replicated)↓Consumers / analytics / alerts read in real time
Step-by-step explanation
- Initialization — Producer connects to bootstrap servers and receives metadata (topics, partitions, leaders).
- Message creation — Application builds a ProducerRecord with topic, key, value, and optional timestamp.
- Serialization — Key and value serializers convert objects to bytes (e.g. StringSerializer).
- Partitioning — Hash of key picks partition; no key → round-robin / sticky partitioner.
- Batching — Records accumulate in the RecordAccumulator per partition for efficient network use.
- Sending — Background sender thread ships batches to the partition leader broker.
- Acknowledgement — Broker responds; producer retries on failure based on acks and retry settings.
Informative example
Example:
bash
kafka-topics --bootstrap-server localhost:9092 --create --topic isr --partitions 6 --replication-factor 3kafka-console-producer --bootstrap-server localhost:9092 --topic isrkafka-console-consumer --bootstrap-server localhost:9092 --topic isr --from-beginningkafka-consumer-groups --bootstrap-server localhost:9092 --describe --group isr-service
Execution workflow
1ISR workflow
1 / 7Initialization
Producer connects to bootstrap servers and receives metadata (topics, partitions, leaders).
Best practices
- Use acks=all with min.insync.replicas for critical events.
- Enable idempotence for retry safety.
- Choose keys intentionally; random keys destroy ordering.
- Monitor record-error-rate, request-latency, batch-size, and retries.
Common mistakes
- Ignoring asynchronous send failures.
- Using null keys for events that require aggregate ordering.
- Making producer timeouts too low and failing during normal broker leader movement.
Summary
ISR — Use acks=all, enable idempotence, choose meaningful keys, and handle send callbacks for errors.
Ready to mark this lesson complete?Track your journey across the entire course.