top | item 40387708

(no title)

pgjones | 1 year ago

It is a shame GCRA is not more well known and used for rate limiting. It is, in my view, a better algorithm.

https://medium.com/smarkets/implementing-gcra-in-python-5df1... https://en.m.wikipedia.org/wiki/Generic_cell_rate_algorithm

discuss

order

gpderetta|1 year ago

Isn't GCRA a variant of leaky bucket, i.e. the token bucket described in the article?

As far as I can tell, the behavior should be the same, the difference is just implementation details and what you track.

0pteron|1 year ago

If leaky bucket means "manages burst sizes and burst intervals" then yeah, they are similar in that regard but they do it differently. GCRA is more analogous to a traffic light where its solely time-based and there is no overhead needed to remove/add tokens so you are storing 1 less state object. For all purposes its probably a micro-optimization but being aware how GCRA works can yield less code but perhaps at the expense of obscurity of a lesser known algo.

I think you understand the differences but I think its improper to consider it a variant of leaky bucket as various resources refute