微服务框架
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
微服务保护
文章目录
- 微服务框架
- 微服务保护
- 31 限流规则
- 31.4 流控效果【warm up】
- 31.4.1 流控效果
- 31.4.2 流控效果 - warm up
- 31.4.3 案例
31 限流规则
31.4 流控效果【warm up】
31.4.1 流控效果
流控效果是指请求达到流控阈值时应该采取的措施,包括三种:
- 快速失败:达到阈值后,新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。【响应状态码:429】
- warm up:预热模式,对超出阈值的请求同样是拒绝并抛出异常。但这种模式阈值会动态变化,从一个较小值逐渐增加到最大阈值。
- 排队等待:让所有的请求按照先后次序排队执行,两个请求的间隔不能小于指定时长
31.4.2 流控效果 - warm up
【这种模式虽然也会直接把超出阈值的请求直接拒绝并且抛出异常,但是它特别的地方在于 它的阈值不是一成不变的】
warm up也叫预热模式,是应对服务冷启动的一种方案。
服务冷启动:比如人在运动之前,要先热热身,给身体做一下预热,如果不做,就会很容易在运动过程中拉上肌肉。
服务器也一样,如果一个服务器能够达到的QPS = 10,如果人家刚刚启动,QPS 立马就被打满,可能就会被打挂了【所以服务启动时,不能上来就把QPS 拉满】
请求阈值初始值是 threshold(最大阈值) / coldFactor(冷启动因子),持续指定时长后,逐渐提高到threshold值。而coldFactor的默认值是3.
例如,我设置QPS的threshold为10,预热时间为5秒,那么初始阈值就是 10 / 3 ,也就是3,然后在5秒后逐渐增长到10.
避免冷启动那一刻,并发过高,导致服务故障
31.4.3 案例
【举个栗子】流控效果-warm up
需求:给/order/{orderId}这个资源设置限流,最大QPS为10,利用warm up效果,预热时长为5秒
先访问一下这个接口,让其能在sentinel 中显示
OK, 查看sentinel 控制台
OK,给它 添加流控规则
直接新增
OK
利用Jmeter 进行测试
QPS = 10
请求指向order ,直接启动
我这儿和老师不一样,我这儿初始只有1,
后面慢慢加到了 3
但是特喵图又是对的…
还是笔者的电脑性能问题,那个刷出来不行【这就是预热模式warm up】