算法实现:
令牌桶算法
用法:
package main import ( "fmt" "golang.org/x/time/rate" "net/http" ) func main() { // 每秒产生 10个令牌,桶中最多保存 20个令牌 limiter := rate.NewLimiter(10, 20) // 等同于以下表达式(即每 100毫秒产生一个令牌) // limiter := rate.NewLimiter(rate.Every(100 * time.Second), 20) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if limiter.Allow() { fmt.Println("正常访问...") }else{ fmt.Println("限制访问...") } }) _ = http.ListenAndServe(":8080", nil) }
文档更新时间: 2024-04-20 10:57 作者:lee