sentinel入门
sentinel下载:sentinel-dashboard-1.8.1.jar
下载完成后进入sentinel-dashboard-1.8.1.jar的文件夹,在cmd中输入java -jar sentinel-dashboard-1.8.1.jar
输入地址:http://localhost:8080/#/login
用户密码均为sentinel
在cloud2020项目中启动cloudalibaba-sentinel-service8401模块。该模块既需要启动nacos,也需要启动sentinel。
我们调用模块中testA接口,可有:
实时监控
我们可以对该接口实时监控。我们可以用jmeter,模拟高并发请求。比如5秒钟2000并发,我们看起状态如何,在这5秒内,我们自己再去访问testA接口,就会发现响应变慢了!
等会我们对他设置流控规则,还会看到在一段时间内,既有通过的QPS,也有拒绝的QPS,所画出的曲线将会很有意思。
流控规则
既可以在簇点链路,也可在流控规则中设置。我觉得在簇点链路中设置更方便。
阈值类型:QPS
疯狂访问testA接口会出现:
我们可以看到每秒通过的请求只有3,被拒绝的请求那就得看我手速了(手速快拒绝的多,手速慢拒绝的少)
阈值类型:线程数
线程数,允许最多三个线程去执行,超过则拒绝,添加如下规则:
我们对testA加上800ms的延迟
我模仿20个线程去访问testA接口,结果如下:
一共20,在这两个800ms中最多创建3个线程去执行testA接口,所以5+1一共完成6个请求,其余的都拒绝了。
流控规则:关联
当访问testB的QPS超过30,则访问testA失败
我们看20:51:04~20:51:07,testB的QPS都超过30,所以testA的访问都拒绝了
20:51:08~20:51:10,testB我们停止访问,testA的访问都接受了
流控效果:warm up
可以看到,经过预热,我们通过的QPS才慢慢提升的30
流控效果:排队等待
QPS为2时,每隔500ms允许通过下一个请求。
那么QPS为4时,每个250ms允许通过下一个请求
为10呢?那就是100ms喽~
每秒允许通过10个请求,如果请求等待时间超过1000ms则拒绝该请求
发送了200个请求,算是全走完了,共用时20s。
超时时间我设置了,但是不知道为啥没用😢
降级规则
慢调用比例
对testD进行测试
设置降级规则
问题:无论最大RT设置成多少,QPS通过总能达到36(我觉得跟最小请求数有关,但是最小请求数我修改了没用啊!!!改完人家又自己跳回到5了)。比例阈值设置成01之间,保存完再编辑打开,总是会自己跳到值1,我不知道这是不是bug。我是想不通啊。
而且关于postman和apipost这两个软件只能做串行阻塞的测试,没有办法做并发的测试!
这一点尚硅谷的周阳老师,还有csdn很多点赞的博客都写错了,不过评论区有人指出来了!
那就这样吧!!在爱都曲终人散了,那就这样吧,在爱都无需挣扎~
热点规则
测试热点规则,接受p1和p2参数,对此热点接口可以QPS如果超过阈值,则去执行deal_testHotKey
方法
每秒请求超过1,则去返回deal_testHotKey
方法的内容
可精确到参数,比如对第一个参数(参数索引从0开始)
通过的总是一半一半,而且应该总和为250QPS,但是总和为500,不知为啥。可能跟jmeter的启动线程方式有关系吧。