raterl
raterl copied to clipboard
An erlang ETS based rate limiter inspired by Jobs
raterl
Erlang flow control application heavily inspired in jobs
and ratx
,
ETS based bypasses the jobs_server
single process bottleneck while
providing rate
and counter
flow control.
Supports
TODO
- Queues
- Modifiers
Examples
Rate flow control
A typical use case is restricting the number of logins per second on a system, you'd start by the configuration:
[{raterl, [
{queues, [
{login_requests, [
{regulator, [
{name, max_login_rate},
{type, rate},
{limit, 100} %% ensures that we get no more than x logins per second
]}
]}
]}
]
}].
Then on the code you ask permission from raterl
before accepting a login:
case raterl:run(login_requests, {rate, max_login_rate}, fun () -> Ret end) of
limit_reached ->
{error, throttled};
Ret -> Ret
end;
Build
$ rebar3 compile