liveBook · Manning

Uptime

As explained in Kafka for Architects

High availability is the property of a system remaining operational despite failures of individual components.

Uptime describes keeping a system operational. In Kafka, a partition can go offline when too few in-sync replicas remain; this prevents producers from writing but avoids risking data loss. section 11.3.2

The acceptable trade-off depends on the application:

  • Prioritize durability for financial transactions and payment processing, where downtime is preferable to risking data loss. section 11.3.2
  • Prioritize availability for log collection and real-time analytics dashboards, where staying online may matter more than avoiding small losses. section 11.3.2
Table 11.2 Balancing durability and availability

Configuration setting

Improve durability

Improve availability

Setting type

acks

Use acks=all to ensure data is written to all in-sync replicas

With acks=1 or 0 the producer can continue sending data even if some replicas are temporarily unavailable

Producer

enable.idempotence

Enable to avoid duplicate messages and improve reliability

Enable to avoid duplicate messages and retries in the producer

Producer

enable.auto.commit

Disable and manually commit offsets after processing to avoid data loss

Consumer progresses without waiting for manual commit logic to complete

Consumer

isolation.level

Set to read_committed to read only committed data

Set to read_uncommitted to allow faster reads of all data

Consumer

max.poll.records

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

max.poll.interval.ms

Reduce to catch slow consumers faster and avoid stale offsets

Increase to allow slower consumers to stay in group longer

Consumer

session.timeout.ms

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

replication.factor

Use a higher replication factor for better data redundancy

A lower replication factor can speed up recovery but risks data loss

Broker

min.insync.replicas

Set higher to ensure more replicas are in sync before committing data

Set lower to allow writes even with fewer in-sync replicas

Broker

unclean.leader
.election.enable

Disable to avoid data loss with unclean leader election

Enable to allow faster leader election even if some data is lost

Broker

broker.rack

Distribute replicas across racks to avoid rack failures causing data loss

Ensure rack awareness for faster recovery if a rack fails

Broker

log.flush.interval
.messages

Reduce to flush data more frequently to disk, minimizing potential data loss

Increase to flush data less frequently for faster throughput

Broker

log.flush.interval.ms

Reduce to flush data to disk more frequently

Increase to flush less often and improve broker throughput

Broker

num.recovery.threads
.per.data.dir

Increase to reduce the window in which durability is weakened

Increase to speed up broker recovery after a crash

Broker

num.standby
.replicas

Increase to reduce the risk
of data loss during failover

Increase to maintain availability during maintenance or failures

Broker

replica.lag.time
.max.ms

Reduce to quickly detect lagging replicas and exclude them from ISRs
for consistency

Increase to tolerate more lag and avoid unnecessary ISR changes that can affect availability

Broker

auto.leader
.rebalance.enable

Disable to keep leaders stable, avoiding leader changes that can affect
data consistency

Enable to allow automatic rebalancing of leaders, improving availability during broker failures

Broker

Compare Kafka producer and consumer settings for favoring durability or faster recovery, and consider the resulting risk of downtime or message loss. section 11.3.2

How Kafka for Architects covers it

How deep it goes
Explains why partitions go offline when in-sync replicas are insufficient and summarizes settings for favoring durability or availability.
Examples
Contrasts financial transactions and payment processing with log collection and real-time analytics dashboards.
What you can do after
Configure producer and consumer settings to favor fewer losses or faster recovery, accepting the corresponding availability or durability trade-off.
How it connects
Connects availability with durability, data loss tolerance, in-sync replicas, acknowledgments, and consumer offset commits.

Also explained in

Compare how 20 books explain uptime →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Kafka for Architects. The section links point to the parts of the book it draws on.