点击上方蓝色“ Go语言中文网 ”关注我们, 领全套Go资料 ,每天学习 Go 语言
如果你想限制一个正在运行的 HTTP 服务的请求量,你可以使用现有的轮子工具,比如说 https://github.com/didip/tollbooth,但是如果写一些简单的东西,你自己去实现也没有那么难。
我们可以用这个包 x/time/rate
。
在这篇教程中,我们将基于用户的 IP 地址构造一个简单的限流中间件。
Pure HTTP Server
我们来开始构建一个简单的 HTTP 服务,这是一个大流量的服务,这也是我们为什么要在这里加上限制的原因。
package main
import (
"log"
"net/http"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", okHandler)
if err := http.ListenAndServe(":8888", mux); err != nil {
log.Fatalf(&