Durability means that acknowledged data survives failures and remains available for later retrieval. For a payment event, losing an acknowledged message can be worse than temporarily stopping new writes. Kafka addresses that risk by persisting messages and replicating them across brokers, rather than relying on delivery alone. section 11.3.2 section 1.7.3
Kafka stores events in a distributed commit log. Brokers persist messages to durable local storage and make them available to consumers; replicas provide protection when a broker fails. Storage is not indefinite by default: a streaming topic removes records when its time- or size-based retention period expires. A compacted topic instead retains at least the latest record for each key, making it useful for state such as configuration data. section 1.3.1 section 2.0
Data safety depends on choices across the write and processing path:
- Maintain multiple in-sync replicas and use producer acks=all to wait for their acknowledgments before treating a write as stored. section 11.3.2
- If too few in-sync replicas remain, accept that a partition may go offline rather than risk data loss or corruption. section 11.3.2
- After a consumer processes data, commit its offset manually rather than advancing it before processing is complete. section 11.3.2
Durability is not the same guarantee as exactly-once processing. In database terminology, the durability part of ACID means committed changes remain permanent after failure. Kafka transactions address a different question in a read-process-write pipeline: whether processing an input and producing its outputs can complete atomically despite retries or failures. A durable input record alone does not prevent duplicated or missing downstream results. section 7.4.2
Table 11.2 Balancing durability and availability
| Configuration setting |
Improve durability |
Improve availability |
Setting type |
|---|---|---|---|
|
|
Use |
With |
Producer |
|
|
Enable to avoid duplicate messages and improve reliability |
Enable to avoid duplicate messages and retries in the producer |
Producer |
|
|
Disable and manually commit offsets after processing to avoid data loss |
Consumer progresses without waiting for manual commit logic to complete |
Consumer |
|
|
Set to |
Set to |
Consumer |
|
|
Smaller batches reduce memory pressure and risk of data loss during failure |
Larger batches improve consumer throughput and avoid stalling (but may risk larger reprocesses) |
Consumer |
|
|
Reduce to catch slow consumers faster and avoid stale offsets |
Increase to allow slower consumers to stay in group longer |
Consumer |
|
|
Reduce to detect dead consumers quickly and maintain ISRs |
May be increased to avoid unnecessary rebalances, but for detecting dead consumers it can be decreased |
Consumer |
|
|
Use a higher replication factor for better data redundancy |
A lower replication factor can speed up recovery but risks data loss |
Broker |
|
|
Set higher to ensure more replicas are in sync before committing data |
Set lower to allow writes even with fewer in-sync replicas |
Broker |
|
|
Disable to avoid data loss with unclean leader election |
Enable to allow faster leader election even if some data is lost |
Broker |
|
|
Distribute replicas across racks to avoid rack failures causing data loss |
Ensure rack awareness for faster recovery if a rack fails |
Broker |
|
|
Reduce to flush data more frequently to disk, minimizing potential data loss |
Increase to flush data less frequently for faster throughput |
Broker |
|
|
Reduce to flush data to disk more frequently |
Increase to flush less often and improve broker throughput |
Broker |
|
|
Increase to reduce the window in which durability is weakened |
Increase to speed up broker recovery after a crash |
Broker |
|
|
Increase to reduce the risk |
Increase to maintain availability during maintenance or failures |
Broker |
|
|
Reduce to quickly detect lagging replicas and exclude them from ISRs |
Increase to tolerate more lag and avoid unnecessary ISR changes that can affect availability |
Broker |
|
|
Disable to keep leaders stable, avoiding leader changes that can affect |
Enable to allow automatic rebalancing of leaders, improving availability during broker failures |
Broker |
Compare producer acknowledgment and consumer commit settings when choosing between stronger data safety and higher availability. section 11.3.2





