Documentation
¶
Index ¶
- func WithConcurrentRequestRateLimiter(meter metricsApi.Meter, concurrentRequestAllowance int32) func(http.Handler) http.Handler
- func WithRequestRateLimiter(meter metricsApi.Meter, store config.Store) func(http.Handler) http.Handler
- type LimitStore
- type LocalAdaptiveTokenBucketLimit
- type LocalFixedWindowLimit
- type LocalSlidingWindowLimit
- type LocalTokenBucketLimit
- type RateLimitTier
- type RedisAdaptiveTokenBucketLimit
- type RedisFixedWindowLimit
- type RedisSlidingWindowLimit
- type RedisTokenBucketLimit
- type RequestLimitAllowance
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func WithRequestRateLimiter ¶
Types ¶
type LimitStore ¶
type LimitStore interface {
TryPassRequestLimit(ctx context.Context) RequestLimitAllowance
}
func NewLimitStore ¶
func NewLimitStore(store config.Store) (LimitStore, error)
type LocalAdaptiveTokenBucketLimit ¶
type LocalAdaptiveTokenBucketLimit struct { Tiers []RateLimitTier CurrentTierIdx int WindowStartTs int64 RejectCounter int64 AllowCounter int64 LastRefillTs int64 UsedTokens int64 // contains filtered or unexported fields }
func NewLocalAdaptiveTokenBucketLimit ¶
func NewLocalAdaptiveTokenBucketLimit(store config.Store) (*LocalAdaptiveTokenBucketLimit, error)
func (*LocalAdaptiveTokenBucketLimit) TryPassRequestLimit ¶
func (st *LocalAdaptiveTokenBucketLimit) TryPassRequestLimit(ctx context.Context) RequestLimitAllowance
type LocalFixedWindowLimit ¶
type LocalFixedWindowLimit struct { Timestamp int64 Limit int64 Counter int64 // contains filtered or unexported fields }
func NewLocalFixedWindowLimit ¶
func NewLocalFixedWindowLimit(store config.Store) (*LocalFixedWindowLimit, error)
func (*LocalFixedWindowLimit) TryPassRequestLimit ¶
func (st *LocalFixedWindowLimit) TryPassRequestLimit(ctx context.Context) RequestLimitAllowance
type LocalSlidingWindowLimit ¶
type LocalSlidingWindowLimit struct { Limit int64 Requests []int64 // contains filtered or unexported fields }
func NewLocalSlidingWindowLimit ¶
func NewLocalSlidingWindowLimit(store config.Store) (*LocalSlidingWindowLimit, error)
func (*LocalSlidingWindowLimit) TryPassRequestLimit ¶
func (lws *LocalSlidingWindowLimit) TryPassRequestLimit(ctx context.Context) RequestLimitAllowance
type LocalTokenBucketLimit ¶
type LocalTokenBucketLimit struct { Limit int32 Counter int32 LastRefillTime int64 // contains filtered or unexported fields }
func NewLocalTokenBucketLimit ¶
func NewLocalTokenBucketLimit(rateLimitPerSec int32) (*LocalTokenBucketLimit, error)
func (*LocalTokenBucketLimit) TryPassRequestLimit ¶
func (tb *LocalTokenBucketLimit) TryPassRequestLimit(ctx context.Context) bool
type RateLimitTier ¶
type RedisAdaptiveTokenBucketLimit ¶
type RedisAdaptiveTokenBucketLimit struct { Tiers []RateLimitTier // contains filtered or unexported fields }
func NewRedisAdaptiveTokenBucketLimit ¶
func NewRedisAdaptiveTokenBucketLimit(store config.Store) (*RedisAdaptiveTokenBucketLimit, error)
func (*RedisAdaptiveTokenBucketLimit) TryPassRequestLimit ¶
func (st *RedisAdaptiveTokenBucketLimit) TryPassRequestLimit(ctx context.Context) RequestLimitAllowance
type RedisFixedWindowLimit ¶
type RedisFixedWindowLimit struct { Timestamp int64 Limit int64 Counter int64 // contains filtered or unexported fields }
func NewRedisFixedWindowLimit ¶
func NewRedisFixedWindowLimit(store config.Store) (*RedisFixedWindowLimit, error)
func (*RedisFixedWindowLimit) TryPassRequestLimit ¶
func (st *RedisFixedWindowLimit) TryPassRequestLimit(ctx context.Context) RequestLimitAllowance
type RedisSlidingWindowLimit ¶
type RedisSlidingWindowLimit struct { Limit int64 // contains filtered or unexported fields }
func NewRedisSlidingWindowLimit ¶
func NewRedisSlidingWindowLimit(store config.Store) (*RedisSlidingWindowLimit, error)
func (*RedisSlidingWindowLimit) TryPassRequestLimit ¶
func (rsw *RedisSlidingWindowLimit) TryPassRequestLimit(ctx context.Context) RequestLimitAllowance
redis streams implementation
type RedisTokenBucketLimit ¶
type RedisTokenBucketLimit struct { Capacity int64 RefillRateMs int32 // contains filtered or unexported fields }
func NewRedisTokenBucketLimit ¶
func NewRedisTokenBucketLimit(store config.Store) (*RedisTokenBucketLimit, error)
func (*RedisTokenBucketLimit) TryPassRequestLimit ¶
func (rsw *RedisTokenBucketLimit) TryPassRequestLimit(ctx context.Context) RequestLimitAllowance
Click to show internal directories.
Click to hide internal directories.