slidingwindow - Golang implementation of Sliding Window Algorithm for distributed rate limiting.

  •        254

Golang implementation of Sliding Window Algorithm for distributed rate limiting. slidingwindow is an implementation of the scalable rate limiting algorithm used by Kong.

https://github.com/RussellLuo/slidingwindow

Tags
Implementation
License
Platform

   




Related Projects

redis-cell - A Redis module that provides rate limiting in Redis as a single command.

  •    Rust

A Redis module that provides rate limiting in Redis as a single command. Implements the fairly sophisticated generic cell rate algorithm (GCRA) which provides a rolling time window and doesn't depend on a background drip process. The primitives exposed by Redis are perfect for doing work around rate limiting, but because it's not built in, it's very common for companies and organizations to implement their own rate limiting logic on top of Redis using a mixture of basic commands and Lua scripts (I've seen this at both Heroku and Stripe for example). This can often result in naive implementations that take a few tries to get right. The directive of redis-cell is to provide a language-agnostic rate limiter that's easily pluggable into many cloud architectures.

gubernator - High Performance Rate Limiting MicroService and Library

  •    Go

Gubernator is a distributed, high performance, cloud native and stateless rate limiting service. Gubernator is stateless in that it doesn’t require disk space to operate. No configuration or cache data is ever synced to disk. This is because every request to gubernator includes the config for the rate limit. At first you might think this an unnecessary overhead to each request. However, In reality a rate limit config is made up of only 4, 64bit integers.

AspNetCoreRateLimit - ASP.NET Core rate limiting middleware

  •    CSharp

AspNetCoreRateLimit is an ASP.NET Core rate limiting solution designed to control the rate of requests that clients can make to a Web API or MVC app based on IP address or client ID. The AspNetCoreRateLimit package contains an IpRateLimitMiddleware and a ClientRateLimitMiddleware, with each middleware you can set multiple limits for different scenarios like allowing an IP or Client to make a maximum number of calls in a time interval like per second, 15 minutes, etc. You can define these limits to address all requests made to an API or you can scope the limits to each API URL or HTTP verb and path.

throttled - Package throttled implements rate limiting access to resources such as HTTP endpoints.

  •    Go

Package throttled implements rate limiting using the generic cell rate algorithm to limit access to resources such as HTTP endpoints. See throttled/gcra for a list of other projects related to rate limiting and GCRA.

bottleneck - Task scheduler and rate limiter

  •    Javascript

Bottleneck is a lightweight and efficient Task Scheduler and Rate Limiter for Node.js and the browser. When dealing with services with limited resources, it's important to ensure that they don't become overloaded.Bottleneck is an easy solution as it does not add much complexity to your code.


node-rate-limiter - A generic rate limiter for node

  •    Javascript

Provides a generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled. Two classes are exposed, RateLimiter and TokenBucket. TokenBucket provides a lower level interface to rate limiting with a configurable burst rate and drip rate. RateLimiter sits on top of the token bucket and adds a restriction on the maximum number of tokens that can be removed each interval to comply with common API restrictions like "150 requests per hour maximum". A synchronous method, tryRemoveTokens(), is available in both RateLimiter and TokenBucket. This will return immediately with a boolean value indicating if the token removal was successful.

express-rate-limit - Basic rate-limiting middleware for express

  •    Javascript

Basic rate-limiting middleware for Express. Use to limit repeated requests to public APIs and/or endpoints such as password reset. Note: this module does not share state with other processes/servers by default. If you need a more robust solution, I recommend using an addon store or trying out one of the excelent competing options.

bucket4j - Java rate limiting library based on token/leaky-bucket algorithm.

  •    Java

Copyright 2015-2019 Vladimir Bukhtoyarov Licensed under the Apache Software License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.

redis-throttle - Rack middleware for rate-limiting incoming HTTP requests configured to be used with Redis

  •    Ruby

This is a fork of the Rack Throttle middleware that provides logic for rate-limiting incoming HTTP requests to Rack applications using Redis as storage system. You can use Rack::RedisThrottle with any Ruby web framework based on Rack, including Ruby on Rails 3.0 and Sinatra. This gem was designed to experiment rate limit with Rails 3.x and Doorkeeper. Redis Throttle Middleware come to life thanks to the work I've made in Lelylan, an open source microservices architecture for the Internet of Things. If this project helped you in any way, think about giving us a star on Github.

flask-limiter - rate limiting extension for flask applications

  •    Python

Flask-Limiter provides rate limiting features to flask routes. It has support for a configurable backend for storage with current implementations for in-memory, redis and memcache. Add the rate limiter to your flask app. The following example uses the default in memory implementation for storage.

requests-respectful - Minimalist Requests wrapper to work within rate limits of any amount of services simultaneously

  •    Python

If you know Python, you know Requests. Requests is love. Requests is life. Depending on your use cases, you may come across scenarios where you need to use Requests a lot. Services you consume may have rate-limiting policies in place or you may just happen to be in a good mood and feel like being a good Netizen. This is where requests-respectful can come in handy. The library auto-detects the presence of a YAML file named requests-respectful.config.yml at the root of your project and will attempt to load configuration values from it.

django-ratelimit - Cache-based rate-limiting for Django

  •    Python

Cache-based rate-limiting for Django

rack-throttle - Rack middleware for rate-limiting incoming HTTP requests.

  •    Ruby

Rack middleware for rate-limiting incoming HTTP requests.

doorman - Doorman: Global Distributed Client Side Rate Limiting.

  •    Go

Doorman is a solution for Global Distributed Client Side Rate Limiting. Clients that talk to a shared resource (such as a database, a gRPC service, a RESTful API, or whatever) can use Doorman to voluntarily limit their use (usually in requests per second) of the resource. Doorman is written in Go and uses gRPC as its communication protocol. For some high-availability features it needs a distributed lock manager. We currently support etcd, but it should be relatively simple to make it use Zookeeper instead.The Doorman master server remembers all clients that currently have capacity and whenever a client asks for capacity it inserts the clients request into its memory and runs the algorithm to figure out what this client should get.

Algernon - Pure Go web server with built-in Lua, Markdown, HyperApp and Pongo2 support

  •    Go

Web server with built-in support for HTTP/2, Lua, Markdown, Pongo2, HyperApp, Amber, Sass(SCSS), GCSS, JSX, BoltDB, Redis, PostgreSQL, MariaDB/MySQL, rate limiting, graceful shutdown, plugins, users and permissions. Uses no external libraries, only pure Go.

microgateway - IBM API Connect Microgateway framework, built on Node.js & Nginx

  •    Javascript

The role of a Gateway in an API architecture is to protect, enrich and control access to API services. These sets of capabilities are often related to security and rate limiting, but it also includes the ability to do deeper message inspection. For example, you may want to insure that the message received is properly formed JSON, XML, or data following your own specific format. In addition, the Gateway can modify the payload or transform it to meet old or new interfaces for the API backend. Finally, the Gateway can invoke multiple services and aggregate responses from multiple API backends.The Microgateway is the foundation for all of those things. It is optimized to perform security, rate limiting, and much more complex packet processing through a highly flexible flow-engine.

Repose - The REstful PrOxy Service Engine

  •    Java

REPOSE is an open-source RESTful HTTP proxy service that scales to the cloud. REPOSE provides the solution to common API processing tasks such as rate limiting, client authentication, versioning, and logging so that web service developers can focus on the unique features of their services.

Kong - The Microservice API Gateway

  •    Lua

Kong is a cloud-native, fast, scalable, and distributed Microservice Abstraction Layer (also known as an API Gateway, API Middleware or in some cases Service Mesh). Backed by the battle-tested NGINX with a focus on high performance, Kong was made available as an open-source platform in 2015. Under active development, Kong is used in production at thousands of organizations from startups, Global 5000 and Government organizations.

Dingo API - A RESTful API package for the Laravel and Lumen frameworks

  •    PHP

The Dingo API package is meant to provide you, the developer, with a set of tools to help you easily and quickly build your own API. While the goal of this package is to remain as flexible as possible it still won't cover all situations and solve all problems. The package includes Content Negotiation, Rate limiting, Multiple Authentication Adapters, Error and Exception Handling, Response Transformers and Formatters, API Versioning and lot more.

ratelimiter4j - Java rate limiting library/framework

  •    Java

Java rate limiting library/framework






We have large collection of open source products. Follow the tags from Tag Cloud >>


Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.