21

GitHub - mokies/ratelimitj: A Java library for Rate-Limiting, providing extensib...

 4 years ago
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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK