GitHunt
ES

esnunes/ratelimit

A rate limit Go library and reverse proxy

Rate Limit

Go Report Card

Library

Reverse Proxy

go get github.com/esnunes/ratelimit/cmd/rl-proxy

rl-proxy -h
# Rate Limit Proxy
#
# Usage:
#   rl-proxy [flags]
#
# Flags:
#   -a, --addr string   bind address ip:port (default ":8080")
#   -b, --burst int     maximum burst size of requests (default 1)
#   -h, --help          help for rl-proxy
#   -q, --queue int     maximum queued requests
#   -r, --rate float    requests per second (default 2)
  • Leaky Bucket algorithm;
  • Rate Limit based on target endpoint (considering connection latency);
  • Queue of connections when bucket limit reached;

TODO

  • Store and retrieve context values using functions;
  • Calculate rate limit value based on specific date (e.g. service startup time);
  • Cover with tests;
  • Create docs about library usage;
  • Create docs about proxy usage;
  • Add Prometheus metrics support;
    • Number of times a response status code occurred;
    • Number of no more slots error;
    • Number of requests in queue;
    • Number of requests running;
    • Histogram of requests response time;
    • General Go statistics;

License

ratelimit is licensed under the MIT license. Check the LICENSE file for details.

Author

Eduardo Nunes

Contributors

MIT License
Created April 9, 2018
Updated April 26, 2023