go实现单机版限流

go get golang.org/x/time/rate

 

package main

import (
	"log"
	"time"

	"golang.org/x/time/rate"
)

func main() {
	// 创建一个每秒产生5个令牌,桶容量为10的限流器
	log.Printf("调整前")
	limiter := rate.NewLimiter(5, 10)
	for i := 0; i < 3; i++ {
		for j := 0; j < 10; j++ {
			if limiter.Allow() {
				log.Printf("limiter allow")
			} else {
				log.Printf("limiter deny")
			}
		}
		time.Sleep(time.Second)
	}

	// 动态调整限流值
	log.Printf("调整后")
	limiter.SetLimit(3)
	limiter.SetBurst(30)
	for i := 0; i < 3; i++ {
		for j := 0; j < 10; j++ {
			if limiter.Allow() {
				log.Printf("limiter allow")
			} else {
				log.Printf("limiter deny")
			}
		}
		time.Sleep(time.Second)
	}
}

 

2026/03/05 07:59:31 调整前
2026/03/05 07:59:32 limiter allow
2026/03/05 07:59:32 limiter allow
2026/03/05 07:59:32 limiter allow
2026/03/05 07:59:32 limiter allow
2026/03/05 07:59:32 limiter allow
2026/03/05 07:59:32 limiter allow
2026/03/05 07:59:32 limiter allow
2026/03/05 07:59:32 limiter allow
2026/03/05 07:59:32 limiter allow
2026/03/05 07:59:32 limiter allow
2026/03/05 07:59:33 limiter allow
2026/03/05 07:59:33 limiter allow
2026/03/05 07:59:33 limiter allow
2026/03/05 07:59:33 limiter allow
2026/03/05 07:59:33 limiter allow
2026/03/05 07:59:33 limiter deny
2026/03/05 07:59:33 limiter deny
2026/03/05 07:59:33 limiter deny
2026/03/05 07:59:33 limiter deny
2026/03/05 07:59:33 limiter deny
2026/03/05 07:59:34 limiter allow
2026/03/05 07:59:34 limiter allow
2026/03/05 07:59:34 limiter allow
2026/03/05 07:59:34 limiter allow
2026/03/05 07:59:34 limiter allow
2026/03/05 07:59:34 limiter deny
2026/03/05 07:59:34 limiter deny
2026/03/05 07:59:34 limiter deny
2026/03/05 07:59:34 limiter deny
2026/03/05 07:59:34 limiter deny
2026/03/05 07:59:35 调整后
2026/03/05 07:59:35 limiter allow
2026/03/05 07:59:35 limiter allow
2026/03/05 07:59:35 limiter allow
2026/03/05 07:59:35 limiter allow
2026/03/05 07:59:35 limiter allow
2026/03/05 07:59:35 limiter deny
2026/03/05 07:59:35 limiter deny
2026/03/05 07:59:35 limiter deny
2026/03/05 07:59:35 limiter deny
2026/03/05 07:59:35 limiter deny
2026/03/05 07:59:36 limiter allow
2026/03/05 07:59:36 limiter allow
2026/03/05 07:59:36 limiter allow
2026/03/05 07:59:36 limiter deny
2026/03/05 07:59:36 limiter deny
2026/03/05 07:59:36 limiter deny
2026/03/05 07:59:36 limiter deny
2026/03/05 07:59:36 limiter deny
2026/03/05 07:59:36 limiter deny
2026/03/05 07:59:36 limiter deny
2026/03/05 07:59:37 limiter allow
2026/03/05 07:59:37 limiter allow
2026/03/05 07:59:37 limiter allow
2026/03/05 07:59:37 limiter deny
2026/03/05 07:59:37 limiter deny
2026/03/05 07:59:37 limiter deny
2026/03/05 07:59:37 limiter deny
2026/03/05 07:59:37 limiter deny
2026/03/05 07:59:37 limiter deny
2026/03/05 07:59:37 limiter deny

 

posted on 2026-03-05 08:02  王景迁  阅读(8)  评论(0)    收藏  举报

导航