Documentation
¶
Index ¶
- func AdaptiveRateLimitMiddleware(baseConfig *RateLimitConfig, logger *logrus.Logger) gin.HandlerFunc
- func DefaultKeyGenerator(c *gin.Context) string
- func PathKeyGenerator(c *gin.Context) string
- func PerPathRateLimitMiddleware(pathLimits map[string]*RateLimitConfig, logger *logrus.Logger) gin.HandlerFunc
- func RateLimitMiddleware(rateLimiter RateLimiter, config *RateLimitConfig) gin.HandlerFunc
- func RateLimitStatsHandler(rateLimiter RateLimiter, config *RateLimitConfig) gin.HandlerFunc
- func TenantKeyGenerator(c *gin.Context) string
- func UserKeyGenerator(c *gin.Context) string
- type AdaptiveConfig
- type HeaderConfig
- type IntelligentRateLimitConfig
- type IntelligentRateLimiter
- type KeyGeneratorFunc
- type LimitInfo
- type MemoryRateLimiter
- type RateLimit
- type RateLimitConfig
- type RateLimitStrategy
- type RateLimiter
- type RedisRateLimiter
- type SystemMetrics
- type TierConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AdaptiveRateLimitMiddleware ¶
func AdaptiveRateLimitMiddleware(baseConfig *RateLimitConfig, logger *logrus.Logger) gin.HandlerFunc
AdaptiveRateLimitMiddleware rate limiting adaptativo basado en load
func DefaultKeyGenerator ¶
DefaultKeyGenerator generador de clave por defecto (por IP)
func PathKeyGenerator ¶
PathKeyGenerator generador de clave por path + IP
func PerPathRateLimitMiddleware ¶
func PerPathRateLimitMiddleware(pathLimits map[string]*RateLimitConfig, logger *logrus.Logger) gin.HandlerFunc
PerPathRateLimitMiddleware rate limiting por path específico
func RateLimitMiddleware ¶
func RateLimitMiddleware(rateLimiter RateLimiter, config *RateLimitConfig) gin.HandlerFunc
RateLimitMiddleware middleware de rate limiting
func RateLimitStatsHandler ¶
func RateLimitStatsHandler(rateLimiter RateLimiter, config *RateLimitConfig) gin.HandlerFunc
RateLimitStatsHandler handler para obtener estadísticas de rate limiting
func TenantKeyGenerator ¶
TenantKeyGenerator generador de clave por tenant
func UserKeyGenerator ¶
UserKeyGenerator generador de clave por usuario
Types ¶
type AdaptiveConfig ¶ added in v1.0.0
type AdaptiveConfig struct {
// CPU thresholds
CPULowThreshold float64 // < 50%
CPUMediumThreshold float64 // < 80%
CPUHighThreshold float64 // >= 80%
// Memory thresholds
MemoryLowThreshold float64 // < 60%
MemoryMediumThreshold float64 // < 85%
MemoryHighThreshold float64 // >= 85%
// Response time thresholds
ResponseTimeLow time.Duration // < 100ms
ResponseTimeMedium time.Duration // < 500ms
ResponseTimeHigh time.Duration // >= 500ms
// Adjustment factors
LowLoadMultiplier float64 // 1.5x normal limit
MediumLoadMultiplier float64 // 1.0x normal limit
HighLoadMultiplier float64 // 0.5x normal limit
// Evaluation interval
EvaluationInterval time.Duration
}
AdaptiveConfig configuración para rate limiting adaptivo
type HeaderConfig ¶ added in v1.0.0
type HeaderConfig struct {
RateLimitHeader string // X-RateLimit-Limit
RemainingHeader string // X-RateLimit-Remaining
ResetHeader string // X-RateLimit-Reset
RetryAfterHeader string // Retry-After
}
HeaderConfig configuración de headers de rate limit
type IntelligentRateLimitConfig ¶ added in v1.0.0
type IntelligentRateLimitConfig struct {
// Strategy to use
Strategy RateLimitStrategy
// Default limits
DefaultRequestsPerMin int
DefaultBurstSize int
DefaultWindowSize time.Duration
// User tiers
UserTiers map[string]*TierConfig
// Key generators
KeyGenerator func(*gin.Context) string
UserTierExtractor func(*gin.Context) string
// Adaptive settings
AdaptiveConfig *AdaptiveConfig
// Storage
CacheClient cache.CacheInterface
CachePrefix string
// Behavior
SkipSuccessfulRequests bool
SkipPaths []string
Headers *HeaderConfig
// Callbacks
OnLimitExceeded func(*gin.Context, *LimitInfo)
OnLimitWarning func(*gin.Context, *LimitInfo)
// Monitoring
MetricsEnabled bool
}
IntelligentRateLimitConfig configuración del rate limiter inteligente
func DefaultConfig ¶ added in v1.0.0
func DefaultConfig() *IntelligentRateLimitConfig
DefaultConfig retorna configuración por defecto
type IntelligentRateLimiter ¶ added in v1.0.0
type IntelligentRateLimiter struct {
// contains filtered or unexported fields
}
IntelligentRateLimiter implementa rate limiting inteligente
func NewIntelligentRateLimiter ¶ added in v1.0.0
func NewIntelligentRateLimiter(config *IntelligentRateLimitConfig) *IntelligentRateLimiter
NewIntelligentRateLimiter crea un nuevo rate limiter inteligente
func (*IntelligentRateLimiter) Middleware ¶ added in v1.0.0
func (irl *IntelligentRateLimiter) Middleware() gin.HandlerFunc
Middleware retorna middleware Gin
type KeyGeneratorFunc ¶
KeyGeneratorFunc función para generar la clave de rate limiting
type LimitInfo ¶ added in v1.0.0
type LimitInfo struct {
Key string
Limit int
Remaining int
ResetTime time.Time
RetryAfter time.Duration
WindowSize time.Duration
Strategy RateLimitStrategy
UserTier string
IsExceeded bool
IsWarning bool
}
LimitInfo información sobre el límite actual
type MemoryRateLimiter ¶
type MemoryRateLimiter struct {
// contains filtered or unexported fields
}
MemoryRateLimiter implementación en memoria
func NewMemoryRateLimiter ¶
func NewMemoryRateLimiter(config *RateLimitConfig, logger *logrus.Logger) *MemoryRateLimiter
NewMemoryRateLimiter crea un rate limiter en memoria
func (*MemoryRateLimiter) Close ¶
func (mrl *MemoryRateLimiter) Close()
Close cierra el rate limiter
type RateLimit ¶
type RateLimit struct {
Key string
Limit int
Remaining int
Reset time.Time
ResetDuration time.Duration
WindowStart time.Time
RequestCount int
LastRequestTime time.Time
}
RateLimit representa el estado del rate limiting
type RateLimitConfig ¶
type RateLimitConfig struct {
// Rate limiting settings
RequestsPerSecond int
RequestsPerMinute int
RequestsPerHour int
BurstSize int
// Window settings
WindowSize time.Duration
// Key generation
KeyGenerator KeyGeneratorFunc
// Skip conditions
SkipPaths []string
SkipIPs []string
WhitelistIPs []string
// Response settings
IncludeHeaders bool
CustomMessage string
// Storage
UseRedis bool
RedisClient *redis.Client
RedisPrefix string
// Callbacks
OnLimitExceeded func(c *gin.Context, limit *RateLimit)
OnReset func(c *gin.Context, limit *RateLimit)
}
RateLimitConfig configuración del rate limiter
func DefaultRateLimitConfig ¶
func DefaultRateLimitConfig() *RateLimitConfig
DefaultRateLimitConfig retorna configuración por defecto
type RateLimitStrategy ¶ added in v1.0.0
type RateLimitStrategy string
RateLimitStrategy define diferentes estrategias de rate limiting
const ( // StrategyTokenBucket token bucket algorithm StrategyTokenBucket RateLimitStrategy = "token_bucket" // StrategyFixedWindow fixed window algorithm StrategyFixedWindow RateLimitStrategy = "fixed_window" // StrategySlidingWindow sliding window algorithm StrategySlidingWindow RateLimitStrategy = "sliding_window" // StrategyAdaptive adaptive rate limiting based on system load StrategyAdaptive RateLimitStrategy = "adaptive" )
type RateLimiter ¶
type RateLimiter interface {
Allow(ctx context.Context, key string) (*RateLimit, error)
Reset(ctx context.Context, key string) error
GetStats(ctx context.Context, key string) (*RateLimit, error)
}
RateLimiter interfaz para implementaciones de rate limiting
func NewRateLimiter ¶
func NewRateLimiter(config *RateLimitConfig, logger *logrus.Logger) RateLimiter
NewRateLimiter crea un rate limiter basado en la configuración
type RedisRateLimiter ¶
type RedisRateLimiter struct {
// contains filtered or unexported fields
}
RedisRateLimiter implementación con Redis
func NewRedisRateLimiter ¶
func NewRedisRateLimiter(config *RateLimitConfig, logger *logrus.Logger) *RedisRateLimiter
NewRedisRateLimiter crea un rate limiter con Redis