限流改造

This commit is contained in:
tanghc
2019-05-22 10:47:30 +08:00
parent ae37028c61
commit b8ed73ad9f
4 changed files with 57 additions and 25 deletions

View File

@@ -10,3 +10,35 @@ SOP提供了简单的接口限流策略
如果设置了令牌桶策略桶的容量是5那么每秒中生成5个令牌同一时间有6个请求进来那么前5个能成功拿到令牌继续第六个则等待令牌重新生成了再拿。
默认情况下接口的限流功能是关闭的可在sop admin中配置并开启。功能在`路由管理-->限流管理`下。
## 新版限流1.8.0
1.8.0将之前的限流进行了改造,新的限流支持更多的限流方式。之前只能针对某个接口限流,新版限流可以在`路由ID接口、appKey、ip`上进行限流。
- 可针对接口进行限流,所有访问该接口的请求都被限流
- 可针对appKey进行限流某个appKey请求过来后对他限流
- 可针对IP进行限流某个IP请求过来后对他限流
此外还可以进行组合
- 可针对接口+appKey进行限流这个appKey调用某个接口比较频繁可以将它限制住
- 可针对接口+IP进行限流某个ip在频繁调用接口可以将它限制住
由于存在组合情况,一个接口可能会配置多个限流规则。在这种情况下会优先取排序值小的那一条,如果排序值一样,则默认取第一条。
假设有下面几个限流规则:
- 接口:`goods.get` 排序值1 每秒可处理请求数10
- 接口:`goods.get` appKeyxxxx 排序值0 每秒可处理请求数5
- 接口:`goods.get` ip172.1.2.2 排序值2 每秒可处理请求数6
客户端调用接口:`http://open.domain.com/api?method=goods.get&app_key=xxxx`客户端IP为`172.1.2.2`
这种情况下上面三条限流规则都命中了,由于排序值小优先执行,因此第二条规则命中.
具体设置方式可在sop admin中配置功能在`服务管理-->限流管理`下。执行`sop-test/src/test/java/com/gitee/sop/LimitDemoPostTest.java`测试用例验证限流情况
![限流配置](images/10092_1.png "10092_1.png")
![限流配置](images/10092_2.png "10092_2.png")

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB