Hi Team,


We are having a Kafka cluster with multiple Topics in it and shared with 
multiple services(clients). Each service will have multiple events source from 
where they will be pushing messages to Kafka brokers. Once a service starts 
producing message at a high rate, it will affect other services(clients) 
because it will fill the disk quickly which will bring the cluster down. So, we 
want to throttle Producer request once it crosses the specified threshold(Which 
can be set on Topic basis, not for each service).



After checking with Quota feature available in Kafka we found that It allows 
pushing data to a queue and will keep responses in delay queue(if it requires 
getting throttled). If we apply quota for our use case then below problems can 
happen:

a).  Since quota observes message rate for a window and starts to throttle the 
producer responses, meanwhile all incoming messages will be added to the queue. 
It may fill the disks quickly as there are many producers for the same Topics 
and will create an outage for Kafka service.

b). For sync Producers, because of throttling response will be delayed, which 
will result in hang the user-thread or app-servers.



So we don't want to go for applying quota for our use case. Can you please 
share some suggestions to handle this use-case in our Kafka broker. Like, 
before messages get appended to log, it should validate for throttling and if 
it requires being throttled. Throttling mechanism should be either slow down 
the request rate up to specified time frame or throw some generic exception 
from broker side to clients.



Our Kafka setup like,

Having 3 brokers in a cluster and each Topic has replication factor 3 and using 
Kafka-0.10.0.1.



Looking forward to your suggestions.



Thanks

Sukumar N





Reply via email to