小工具知识网

当前位置: 首页 > 行业知识 > 【Go】令牌桶限流算法

行业知识

【Go】令牌桶限流算法

2026-11-14 01:12:43 来源:互联网转载

1. 限流

限���,顾名思义,限制用户请求流量,避免大规模并发导致系统宕机。

()

2. 令牌桶算法

令牌管理员以恒定的速率向令牌桶里放置一个令牌。如果桶满,就丢弃令牌。

请求到达时,都要先去令牌桶里取一个令牌,如果取到令牌,则进行后续业务逻辑操作,否则直接返回。

()

3. Go简单实现

package mainimport ("fmt""time")const (rate     = 2    // 限制令牌发送速率capacity = 1024 // 令牌桶的容量reqNum   = 10   // 并发到达的请求数)func main() {bucket := make(chan struct{}, capacity)go func() {ticker := time.NewTicker(time.Second / rate) // tps=ratedefer ticker.Stop()for range ticker.C {select {case bucket }{}: // 令牌桶未满default: // 令牌桶已满}}}()for i := 0; i 

上一篇:怎么购买服务器美橙互联?

下一篇:常用前端技术有哪些?