envoyproxy/ratelimit

Go/gRPC service designed to enable generic rate limit scenarios from different types of applications.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 28 minutes ago
Added to GitGenius on July 14th, 2023
Created on January 26th, 2017
Open Issues & Pull Requests: 36 (+0)
Number of forks: 531
Total Stargazers: 2,683 (+0)
Total Subscribers: 145 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 12.5 days
Mean response time: 196.7 days
90th percentile: 918.2 days
Tracked items: 54

How this project is maintained

Around half of the issues opened in the past year never receive a reply. Only 10% of issues opened in the past year have been closed.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 12
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 1,723 days
Stale 30+ days: 12
Stale 90+ days: 11

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • stale (88)
  • help wanted (15)
  • bug (3)
  • question (3)
  • design proposal (1)
  • enhancement (1)

Most active issues this week

Detailed Description

The envoyproxy/ratelimit repository is a Go and gRPC service that provides generic rate limiting capabilities for applications of various types. The service enables applications to request rate limit decisions based on a domain and a set of descriptors, then reads configuration from disk, composes a cache key, and consults a Redis cache to return a decision to the caller. This architecture makes it particularly useful for distributed systems that need to enforce traffic control policies across multiple services.

The repository is classified across 21 distinct categories including distributed systems, traffic management, concurrency limits, HTTP filters, Envoy proxy integration, flow control, API throttling, service mesh support, network efficiency, protocol support, resource allocation, HTTP/2 support, request control, load balancing, traffic control, API gateway functionality, request throttling, distributed rate limiting, network performance, rate limiting, and quota management. This broad classification reflects the service's versatility in handling different rate limiting scenarios across modern infrastructure.

The Docker image for this service uses Google's distroless base image specifically gcr.io/distroless/static-debian12:nonroot, pinned to a specific SHA digest for deterministic builds. The distroless approach provides enhanced security through minimal attack surface, smaller image sizes, reduced vulnerabilities, better compliance with security requirements, non-root execution as UID 65532, and reproducible builds.

The service currently supports the v3 rls.proto API from the Envoy data-plane-api, with v2 rls.proto now deprecated. The API deprecation history shows that v1.0.0 was tagged after the service had been in production use at Lyft for over two years. Version 1.1.0 introduced the data-plane-api proto and initiated deprecation of the legacy ratelimit.proto.

The README documents extensive configuration capabilities including file-based and xDS Management Server-based configuration loading, support for local cache and Redis backends with connection pool settings, Memcache support, custom headers, tracing, TLS and mTLS support, health checking, gRPC keepalive settings, statistics collection via DogStatsD and Prometheus, and debug endpoints. The configuration format uses YAML to support comments and includes features like shadow mode, descriptor definitions, rate limit definitions, and wildcard threshold sharing.