Documentation ¶
Index ¶
Constants ¶
View Source
const ( // LimitMemFixWindow 用于标识基于内存的固定窗口限流 LimitMemFixWindow = common.LimitMemFixWindow // LimitMemSlideWindow 用于标识基于内存的滑动窗口限流 LimitMemSlideWindow = common.LimitMemSlideWindow // LimitMemBucket 用于标识基于内存的bucket限流 LimitMemBucket = common.LimitMemBucket // LimitMemToken 用于标识基于内存的Token限流 LimitMemToken = common.LimitMemToken // LimitRedisFixWindow 用于标识分布式固定窗口限流 LimitRedisFixWindow = common.LimitRedisFixWindow // LimitRedisSlideWindow 用于标识分布式滑动窗口限流 LimitRedisSlideWindow = common.LimitRedisSlideWindow // LimitRedisBucket 用于标识分布式bucket限流 LimitRedisBucket = common.LimitRedisBucket // LimitRedisToken 用于标识分布式token限流 LimitRedisToken = common.LimitRedisToken // ErrorReturnNoLeft 规则已无限额 ErrorReturnNoLeft = common.ErrorReturnNoLeft // ErrorReturnItemNotExist key对应规则不存在 ErrorReturnItemNotExist = common.ErrorReturnItemNotExist // ErrorReturnNoMeans 无意义返回值,用于erro!=nil时 ErrorReturnNoMeans = common.ErrorReturnNoMeans // ErrorReturnBucket Bucket限流返回值 无意义固定值 ErrorReturnBucket = common.ErrorReturnBucket )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DriverI ¶
type DriverI interface { Init(...interface{}) error Add(string, int64, time.Duration, ...interface{}) error Get(string) (int64, error) Set(string, int64, time.Duration, ...interface{}) error Del(string) error }
DriverI zlimiter驱动接口,任何zlimiter的driver都要实现该接口 Add、Get、Set、Del分别为新增、获取、设置、删除的相关处理函数
type Limits ¶
type Limits struct {
// contains filtered or unexported fields
}
Limits zlimiter实例类,所有功能都是通过该struct实现
func NewLimiter ¶
NewLimiter 工厂函数,用于创建一个限流器,关于各种限流器的说明请参见:,如果限流器创建过程中
发生错误,则会Log.Fatal错误信息并停止,否则返回相关限流器
Input:
limiterType : 需要创建的限流器的类型,具体包括: LimitMemFixWindow 单机固定窗口限流 LimitMemSlideWindow 单机滑动窗口限流 LimitMemToken 单机token限流 LimitMemBucket 单机桶限流 LimitRedisFixWindow 分布式固定窗口限流 LimitRedisSlideWindow 分布式滑动窗口限流 LimitRedisBucket 分布式桶限流 LimitRedisToken 分布式token限流 args : 初始化参数,主要用于Redis相关的初始化,注意redis初始化需要RedisInfo类型的变量
Output:
*Limits : 成功创建的限流器
func (*Limits) Add ¶
Add 创建一条基于key的限流规则
Input : key : 限流标识,用于唯一标识一条限流规则 limit : tmSpan时间段内的限流数,与tmSpan同时实现tmSpan时间段内限流limit次语义 tmSpan : 时间段,与limit同时实现tmSpan时间段内限流limit次语义 others : 其他相关参数,目前bucket和token限流的max值 Output : error : 成功为nil,否则为具体错误信息
func (*Limits) Get ¶
Get 获取基于key的请求的相关信息,包括:本次访问是否可以放行,剩余可放行的访问数
Input : key : 限流标识,对应于限流规则 Output : bool : 访问是否可以放行,当剩余可访问次数<0时候,为true,否则为false。注意,基于bucket的访问 本参数永远为false int64 : 剩余的可访问次数, 注意,基于bucket本参数永远为-1 error : 相关错误信息,成功为nil 否则为相关错误
func (*Limits) Set ¶
func (l *Limits) Set(key string, limits int64, tmDuration time.Duration, others ...interface{}) error
Set 创建或者重置基于key的限流规则
Input : key : 限流标识,用于唯一标识一条限流规则 limit : tmSpan时间段内的限流数,与tmSpan同时实现tmSpan时间段内限流limit次语义 tmSpan : 时间段,与limit同时实现tmSpan时间段内限流limit次语义 others : 其他相关参数,目前bucket和token限流的max值 Output : error : 成功为nil,否则为具体错误信息
Click to show internal directories.
Click to hide internal directories.