在本次实验中,将向学员展示 ServiceComb 的限流能力。

上一个实验 的基础上:

添加依赖

在 bmi-calculator 的 pom.xml 文件中增加下的依赖项:

1
2
3
4
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>handler-flowcontrol-qps</artifactId>
</dependency>

修改 microservice.yaml

修改 microservice.yaml 文件,指明使用流量控制的处理链及指定流控策略。如下:

1
2
3
4
5
6
7
8
9
10
servicecomb:
handler:
chain:
Provider:
default: qps-flowcontrol-provider
flowcontrol:
Provider:
qps:
limit:
gateway: 1

运行测试

用下面的 JVM 参数启动服务:

1
-Dcse.handler.chain.Provider.default=qps-flowcontrol-provider -Dcse.flowcontrol.Provider.qps.limit.gateway=1

在浏览器的地址栏输入

1
http://localhost:8889/calculator/bmi?height=120&weight=50

然后快速刷新页面并观察结果。

可以看到返回的结果,在正确的结果

1
{"result":17.3,"instanceId":"1f1362c4fa0d11e9b53d0242ac110002","callTime":"13:32:00"}

和错误的结果间切换

1
{"message":"rejected by qps flowcontrol"}

下一步

下一篇文章中,将介绍 ServiceComb 的熔断能力。