slidingwindow 安装
$ go get -u github.com/RussellLuo/slidingwindow
快速开始
1、本地限流
package main
import (
"fmt"
"github.com/RussellLuo/slidingwindow"
"time"
)
const (
d = 100 * time.Millisecond
windowSize = time.Second
)
var (
t0 = time.Now().Truncate(windowSize)
t1 = t0.Add(1 * d)
t2 = t0.Add(2 * d)
t5 = t0.Add(5 * d)
)
func main() {
limiter, _ := slidingwindow.NewLimiter(windowSize, 10, func() (slidingwindow.Window, slidingwindow.StopFunc) {
return slidingwindow.NewLocalWindow()
})
tests := []struct {
t time.Time
n int64
ok bool
}{
// prev-window: empty, count: 0
// curr-window: [t0, t0 + 1s), count: 0
{
t0, 1, true},
{
t1,