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