Jay Kreps created KAFKA-656:
-------------------------------

             Summary: Add Quotas to Kafka
                 Key: KAFKA-656
                 URL: https://issues.apache.org/jira/browse/KAFKA-656
             Project: Kafka
          Issue Type: New Feature
          Components: core
    Affects Versions: 0.8.1
            Reporter: Jay Kreps


It would be nice to implement a quota system in Kafka to improve our support 
for highly multi-tenant usage. The goal of this system would be to prevent one 
naughty user from accidently overloading the whole cluster.

There are several quantities we would want to track:
1. Requests pers second
2. Bytes written per second
3. Bytes read per second

There are two reasonable groupings we would want to aggregate and enforce these 
thresholds at:
1. Topic level
2. Client level (e.g. by client id from the request)

When a request hits one of these limits we will simply reject it with a 
QUOTA_EXCEEDED exception.

To avoid suddenly breaking things without warning, we should ideally support 
two thresholds: a soft threshold at which we produce some kind of warning and a 
hard threshold at which we give the error. The soft threshold could just be 
defined as 80% (or whatever) of the hard threshold.

There are nuances to getting this right. If you measure second-by-second a 
single burst may exceed the threshold, so we need a sustained measurement over 
a period of time.

Likewise when do we stop giving this error? To make this work right we likely 
need to charge against the quota for request *attempts* not just successful 
requests. Otherwise a client that is overloading the server will just flap on 
and off--i.e. we would disable them for a period of time but when we re-enabled 
them they would likely still be abusing us.

It would be good to a wiki design on how this would all work as a starting 
point for discussion.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to