GitHub - mokies/ratelimitj: A Java library for Rate-Limiting, providing extensib...
source link: https://github.com/mokies/ratelimitj
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
RateLimitJ
A Java library for rate limiting, assembled using extensible storage and application framework adaptors. The library's interfaces support thread-safe sync, async, and reactive usage patterns.
Modules
RateLimitJ provides the following stable plugable modules:
Features
- Uses an efficient approximated sliding window algorithm for rate limiting
- Multiple limit rules per instance
Binaries/Download
Binaries and dependency information for Maven, Ivy, Gradle and others can be found at Maven Central.
Example for Maven:
<dependency> <groupId>es.moki.ratelimitj</groupId> <artifactId>ratelimitj-redis</artifactId> <version>${ratelimitj-redis.version}</version> </dependency>
Prerequisite
- RateLimitJ requires Java 8
Roadmap
Feature | Status |
---|---|
Redis sliding window rate limiter | production |
Dropwizard integration - Bundle | production |
In-memory sliding window rate limiter | stable |
In-memory concurrent rate limiter | beta |
Rate limiting toggles (dark launch) for framework integration | beta |
Hazelcast sliding window rate limiter | beta/dev |
Redis concurrent rate limiter | dev/active |
Enhanced metrics logging | back log |
Whitelisting & blacklisting of keys | back log |
Rate limit HTTP header responses | back log |
Async in-memory rate limit buffer/cache (inspired by Google's SRE book) | back log |
Spring integration | back log |
Building
RateLimitJ is built with Gradle and requires docker to spin up Redis for the Redis module.
To build:
$ git clone https://github.com/mokies/ratelimitj.git
$ cd ratelimij/
$ ./gradlew
Credits
This library was inspired by the following articles on sliding window rate limiting with Redis:
Background Reading
Authors
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK