微服务框架
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
微服务保护
文章目录
- 微服务框架
- 微服务保护
- 31 限流规则
- 31.1 簇点链路
- 31.1.1 簇点链路
- 31.1.2 快速入门
31 限流规则
31.1 簇点链路
31.1.1 簇点链路
簇点链路:就是项目内的调用链路,链路中被监控的每个接口就是一个资源。默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint),因此SpringMVC的每一个端点(Endpoint)就是调用链路中的一个资源。
流控、熔断等都是针对簇点链路中的资源来设置的,因此我们可以点击对应资源后面的按钮来设置规则:
比如说一个请求进来后,首先交给controller 中的一个方法,controller 又去调service,service 又去调mapper
这样就形成了一个调用链路 , 即簇点链路。链路中被监控的每个接口就是一个资源。
当然虽然当前我们的项目中有controller、service、mapper,
但是它们不一定被sentinel 监控,默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint),因此SpringMVC的每一个端点(Endpoint)就是调用链路中的一个资源。
如果service、mapper 也想被监控,需要利用sentinel 中提供的一些注解实现。
现在这个controller 就是默认被监控的接口资源,虽然它调了service,
但是service目前还并没有被监控,即它现在还不是一个资源
当然现在它就一个分支”儿子“,因为只有controller 被监控着的
后面有些按钮:
- 流控:流量控制
- 降级:熔断降级
- 热点:热点参数限流
- 授权:授权规则
流控、熔断等都是针对簇点链路中的资源来设置的,因此我们可以点击对应资源后面的按钮来设置规则:
31.1.2 快速入门
点击资源/order/{orderId}后面的流控按钮,就可以弹出表单。表单中可以添加流控规则,如下图所示:
其含义是限制 /order/{orderId}这个资源的单机QPS为1,即每秒只允许1次请求,超出的请求会被拦截并报错。
【举个栗子】流控规则入门案例
需求:给 /order/{orderId}这个资源设置流控规则,QPS不能超过 5。然后利用jemeter测试。
- 设置流控规则:
点击“流控按钮”
填写参数
新增
这样就创建了流控规则
- jemeter测试:
黑马老师给的资料中有这个工具的安装包,
拷贝到自己的目录进行解压
看看里面有啥
进入bin
双击
OK,就来到这个可视化界面
将老师给的测试文档,拖出来
放到桌面
OK
通过jmeter 打开
点击
open 这个测试文档
这样就成功导入了
- 线程数20:用户数量,即发送20 个请求
- 2:两秒内发
这样即一秒钟 10 个 ==> QPS = 10
我们设置上限是5,这样就有了触发限流的条件
启动这个测试
效果很明显,每次通过的只有5 个,其他就会失败
看看失败的
429 :响应失败
响应结果改成json 风格
→ 被sentinel 阻塞【限流】
看看sentinel 控制台
好像不怎么准确,我改成一秒10次看看
这次好点了
感觉可能是笔者电脑卡【性能没有老师的好】【这就是入门案例】