Skip to content

Latest commit

 

History

History
29 lines (18 loc) · 1.41 KB

File metadata and controls

29 lines (18 loc) · 1.41 KB

此工程为ru-rocker/gokit-playground的精简版.

在原文Micro-services Using go-kit: Rate Limiting中提到了两种可引用的令牌桶算法.

一种是Juju, 另一种说是go-kit内置的中间件.

然而在研究原作的示例工程时我发现原工程中直接使用了golang.org/x/time/rate限流器, 原作文章中所提到的Jujuinstrument.go根本没有用到.

可以说time/rateJuju实现了同样的功能, 本例代码中移除了instrument.go, 其余操作与最初的restful工程完全相同.

注意在原作示例中限流提示是写入到日志文件中的, 其实就是为endpoint增加一个log中间件, 本例中移除了日志中间件. 超过流速的请求需要通过同时手动发起n个请求以查看各响应来比较, 本示例的上限是每秒3个请求.

先启动 server 服务

$ go run cmd/main.go
Starting server at port 8080

常规请求如下

$ curl -XPOST localhost:8080/lorem/sentence/1/20
{"message":"Concurrunt nota re dicam fias sim aut pecco die appetitum ea mortalitatis hi."}

如下使用多开终端进行模拟则可以看到限流效果.