httpLimiter

package
v1.64.53 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 9, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

README

HTTPLimiter 限流器说明

  1. IP限流器

    package main
    
    import (
    	`fmt`
    	`time`
    
    	`github.com/aid297/aid/httpLimiter`
    )
    
    func main() {
    	v, ok := httpLimiter.APP.IPLimiter.New().Affirm("ip", 30*time.Second, 50)
    	if !ok {
    		panic(fmt.Errorf("[ip方式] %s 内访问了 %d 次", time.Since(v.GetLastVisitor()), v.GetVisitTimes()))
    	}
    }
    
  2. 路由限流器

    package main
    
    import (
    	`fmt`
    	`time`
    
    	`github.com/aid297/aid/httpLimiter`
    )
    
    func main() {
    	rl := httpLimiter.APP.RouterLimiter.Once().
    		Add("/route1", 30*time.Second, 50).
    		Add("/route2", 30*time.Second, 100).
    		Add("/route3", 30*time.Second, 150)
    
    	v, ok := rl.Affirm("/route1", "ip")
    	if !ok {
    		panic(fmt.Errorf("[路由方式] %s 内访问了 %d 次", time.Since(v.GetLastVisitor()), v.GetVisitTimes()))
    	}
    }
    

Documentation

Index

Constants

This section is empty.

Variables

View Source
var APP struct {
	Visit         Visit
	IPLimiter     IPLimiter
	RouterLimiter RouteLimiter
}

Functions

This section is empty.

Types

type IPLimiter added in v1.64.50

type IPLimiter struct {
	// contains filtered or unexported fields
}

IPLimiter ip限流器

func NewIPLimiter added in v1.64.50

func NewIPLimiter() *IPLimiter

NewIPLimiter 实例化:Ip 限流

func (*IPLimiter) Affirm added in v1.64.50

func (my *IPLimiter) Affirm(ip string, t time.Duration, maxVisitTimes uint16) (*Visit, bool)

Affirm 检查限流

func (*IPLimiter) New added in v1.64.50

func (*IPLimiter) New() *IPLimiter

type RouteLimiter

type RouteLimiter struct{ RouteSetMap *sync.Map }

RouteLimiter 路由限流器

func OnceRouteLimiter

func OnceRouteLimiter() *RouteLimiter

OnceRouteLimiter 单例化:路由限流

func (*RouteLimiter) Add

func (my *RouteLimiter) Add(router string, t time.Duration, maxVisitTimes uint16) *RouteLimiter

Add 添加限流规则

func (*RouteLimiter) Affirm

func (my *RouteLimiter) Affirm(router, ip string) (*Visit, bool)

Affirm 检查是否通过限流

func (*RouteLimiter) Once

func (*RouteLimiter) Once() *RouteLimiter

type Visit

type Visit struct {
	// contains filtered or unexported fields
}

Visit 访问记录

func (*Visit) GetLastVisitor

func (r *Visit) GetLastVisitor() time.Time

GetLastVisitor 获取最后访问时间

func (*Visit) GetVisitTimes

func (r *Visit) GetVisitTimes() uint16

GetVisitTimes 获取窗口期内访问次数

func (*Visit) New

func (*Visit) New() *Visit

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL