How to minimize the latency involved in kafka messaging framework?

Viewed 35860

Scenario: I have a low-volume topic (~150msgs/sec) for which we would like to have a low propagation delay from producer to consumer.

I added a time stamp from a producer and read it at consumer to record the propagation delay, with default configurations the msg (of 20 bytes) showed a propagation delay of 1960ms to 1230ms. No network delay is involved since, I tried on a 1 producer and 1 simple consumer on the same machine.

When I have tried adjusting the topic flush interval to 20ms, it drops to 1100ms to 980ms. Then I tried adjusting the consumers "fetcher.backoff.ms" to 10ms, it dropped to 1070ms - 860ms.

Issue: For a 20 bytes of a msg, I would like to have a propagation delay as low as possible and ~950ms is a higher figure.

Question: Anything I am missing out in configuration? I do welcome comments, delay which you got as minimum.

Assumption: The Kafka system involves the disk I/O before the consumer get the msg from the producer and this goes with the hard disk RPM and so on..


Update: Tried to tune the Log Flush Policy for Durability & Latency.
Following is the configuration:

# The number of messages to accept before forcing a flush of data to disk
log.flush.interval=10
# The maximum amount of time a message can sit in a log before we force a flush
log.default.flush.interval.ms=100
# The interval (in ms) at which logs are checked to see if they need to be 
# flushed to disk.
log.default.flush.scheduler.interval.ms=100

For the same msg of 20 bytes, the delay was 740ms -880ms.

The following statements are made clear in the configuration itself.
There are a few important trade-offs:

  1. Durability: Unflushed data is at greater risk of loss in the event of a crash.
  2. Latency: Data is not made available to consumers until it is flushed (which adds latency).
  3. Throughput: The flush is generally the most expensive operation.

So, I believe there is no way to come down to a mark of 150ms - 250ms. (without hardware upgrade) .

5 Answers
Related