Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
func NewRedisBuilder ¶
NewRedisBuilder 【注册到gin中间件, server.use()】 ratelimitx.NewBuilder(limiter.NewRedisSlideWindowKLimiter(redisClient, time.Second, 1000)).Build(), 限流中间件,注册到 gin框架,使用 redis,100次请求/秒。传三个参数,第一个为redis客户端,第二个为限流时间,第三个为限流次数。
func (*Builder) Build ¶
func (b *Builder) Build() gin.HandlerFunc
type CounterLimiter ¶
type CounterLimiter struct {
// contains filtered or unexported fields
}
func NewCounterBuilder ¶
func NewCounterBuilder(threshold int32) *CounterLimiter
NewCounterBuilder 创建计数器限流算法
type FixedWindowLimiter ¶
type FixedWindowLimiter struct {
// contains filtered or unexported fields
}
FixedWindowLimiter 固定窗口限流算法
func NewFixedWindowBuilder ¶
func NewFixedWindowBuilder(window time.Duration, threshold int) *FixedWindowLimiter
NewFixedWindowBuilder 创建固定窗口限流算法
- window 窗口大小
- threshold 阈值
func (*FixedWindowLimiter) Build ¶
func (c *FixedWindowLimiter) Build() gin.HandlerFunc
Build 固定窗口限流算法
type SlidingWindowLimiter ¶
type SlidingWindowLimiter struct {
// contains filtered or unexported fields
}
SlidingWindowLimiter 滑动窗口限流器
func NewSlidingWindowBuilder ¶
func NewSlidingWindowBuilder(window time.Duration, threshold int) *SlidingWindowLimiter
NewSlidingWindowBuilder 滑动窗口限流器, 构造函数
- window: 窗口时长(如time.Second)
- threshold: 窗口内最大请求数(如100)
每1秒最多有100个请求/秒,即1秒内最多100个请求
func (*SlidingWindowLimiter) Allow ¶
func (c *SlidingWindowLimiter) Allow() bool
Allow
- 检查是否允许通过请求
- 判断是否允许当前请求(核心逻辑)
func (*SlidingWindowLimiter) Build ¶
func (c *SlidingWindowLimiter) Build() gin.HandlerFunc
func (*SlidingWindowLimiter) GetCurrentCount ¶
func (c *SlidingWindowLimiter) GetCurrentCount() int
GetCurrentCount 获取当前队列长度(主要用于测试)
type TokenBucketLimiter ¶
type TokenBucketLimiter struct {
// contains filtered or unexported fields
}
TokenBucketLimiter 令牌桶限流算法
func NewTokenBucketBuilder ¶
func NewTokenBucketBuilder(interval time.Duration, capacity int) *TokenBucketLimiter
NewTokenBucketBuilder 创建令牌桶限流算法
- interval 令牌产生时间间隔
- capacity 令牌桶容量
func (*TokenBucketLimiter) Build ¶
func (c *TokenBucketLimiter) Build() gin.HandlerFunc
Build 令牌桶限流算法
Click to show internal directories.
Click to hide internal directories.