黄冈网站排名最高,网站内容与目录结构,江西省建设工程有限公司,山东机关建设网站文章目录 1.熔断降级1.基本介绍1.线程堆积引出熔断降级2.示意图3.熔断#xff0c;降级#xff0c;限流三者之间的关系 2.熔断降级策略#xff08;以分钟为基本单位#xff09;1.慢调用比例2.异常比例3.异常数 3.熔断降级实例—慢调用比例1.需求分析2.com/sun/springcloud/c… 文章目录 1.熔断降级1.基本介绍1.线程堆积引出熔断降级2.示意图3.熔断降级限流三者之间的关系 2.熔断降级策略以分钟为基本单位1.慢调用比例2.异常比例3.异常数 3.熔断降级实例—慢调用比例1.需求分析2.com/sun/springcloud/controller/MemberController.java 新增接口t3并休眠300ms3.具体配置1.重启10004微服务2.查看注册情况3.浏览器输入http://localhost:10004/t3发送请求4.Sentinel点击降级5.降级规则配置 4.测试1.一秒超过五次请求http://localhost:10004/t3会发生熔断降级2.等待10s再次请求虽然还是慢调用但是小于最小请求数所以不会发生熔断 5.熔断降级实例—异常比例1.需求分析2.com/sun/springcloud/controller/MemberController.java 新增接口t4并出现异常返回error3.具体配置1.重启10004微服务2.查看注册情况3.浏览器输入http://localhost:10004/t44.Sentinel点击降级5.具体配置 4.测试1.一秒超过五次请求 http://localhost:10004/t4发生熔断降级2.五秒之后再次发送请求降级解除 6.熔断降级实例—异常数1.需求分析2.还是使用掐面的t4接口即可3.具体配置4.测试1.一秒超过五次请求 http://localhost:10004/t4由于每发生熔断降级2.五秒之后再次发送请求降级解除 2.热点限流1.基本介绍1.引出热点限流2.示意图3.上图解读 2.需求分析3.具体配置1.10004微服务的controller增加两个接口被热点限流的接口处理热点限流的接口 2.重启10004微服务并启动Nacos和Sentinel3.浏览器输入 http://localhost:10004/news?id1type%E5%8A%A8%E7%89%A94.Sentinel查看热点接口5.点击热点进行基本配置6.保存后点击热点规则编辑刚才的规则7.点击高级选项对参数的具体值进行额外配置 4.测试1.浏览器快速访问 http://localhost:10004/news?id1type%E5%8A%A8%E7%89%A9 会出现热点限流2.快速访问 http://localhost:10004/news?id2type%E5%8A%A8%E7%89%A9 不会出现热点限流 5.注意事项1.热点参数可以设置多个值进行限流2.处理热点限流的方法的返回值需要与被处理的方法相同 3.系统规则1.基本介绍1.引出系统规则2.介绍 2.系统规则实例1.需求分析2.新增系统规则3.进行配置4.测试浏览器快速访问 http://localhost:10004/t2或者其他任意的资源 都会进行热点限流 4.全局限流处理类1.需求分析2.具体实现1.编写全局限流处理类2.编写一个接口进行测试3.测试1.重启10004模块2.配置system接口的限流这里就配置一个热点限流3.浏览器快速访问 http://localhost:10004/system?idtest 5.fallback统一处理java异常1.需求分析2.具体实现1.修改system接口每五次抛出异常2.编写全局异常处理类3.system接口使用全局异常处理类处理异常4.测试1.打开nacos和sentinel2.重启10004微服务3.浏览器访问一下http://localhost:10004/system?idtest4.Sentinel配置限流这里就配置一个QPS流量控制5.目前情况分析6.访问五次 http://localhost:10004/system?idtest 成功交给全局异常处理类来处理 1.熔断降级
1.基本介绍
1.线程堆积引出熔断降级 2.示意图 3.熔断降级限流三者之间的关系 2.熔断降级策略以分钟为基本单位
1.慢调用比例
进行熔断的条件是慢调用的比例达到阈值QPS大于最小请求数待超过熔断时长后如果还是满足熔断条件慢调用的比例达到阈值QPS大于最小请求数则会继续进行熔断 2.异常比例
进行熔断的条件是异常比例达到阈值QPS大于最小请求数待超过熔断时长后如果还是满足熔断条件异常比例达到阈值QPS大于最小请求数则会继续进行熔断 3.异常数
进行熔断的条件是异常数达到阈值QPS大于最小请求数待超过熔断时长后如果还是满足熔断条件异常数达到阈值QPS大于最小请求数则会继续进行熔断 3.熔断降级实例—慢调用比例
1.需求分析 2.com/sun/springcloud/controller/MemberController.java 新增接口t3并休眠300ms 3.具体配置
1.重启10004微服务 2.查看注册情况 3.浏览器输入http://localhost:10004/t3发送请求 4.Sentinel点击降级 5.降级规则配置
这样当每秒钟的请求数大于5并且每分钟只要有一个是慢调用就进行熔断降级 4.测试
1.一秒超过五次请求http://localhost:10004/t3会发生熔断降级 2.等待10s再次请求虽然还是慢调用但是小于最小请求数所以不会发生熔断 5.熔断降级实例—异常比例
1.需求分析 2.com/sun/springcloud/controller/MemberController.java 新增接口t4并出现异常返回error 3.具体配置
1.重启10004微服务 2.查看注册情况 3.浏览器输入http://localhost:10004/t4 4.Sentinel点击降级 5.具体配置
这样配置表示当每秒钟的请求数达到5并且**每分钟异常的比例大于20%**则会出现熔断降级 4.测试
1.一秒超过五次请求 http://localhost:10004/t4发生熔断降级 2.五秒之后再次发送请求降级解除 6.熔断降级实例—异常数
1.需求分析 2.还是使用掐面的t4接口即可
3.具体配置
这样当吗每秒钟的请求数到达5并且每分钟异常数量大于5则会进行熔断降级 4.测试
1.一秒超过五次请求 http://localhost:10004/t4由于每发生熔断降级 2.五秒之后再次发送请求降级解除 2.热点限流
1.基本介绍
1.引出热点限流 2.示意图 3.上图解读 2.需求分析 3.具体配置
1.10004微服务的controller增加两个接口
被热点限流的接口
使用SentinelResource注解来制定被热点限流的接口以及处理热点限流的接口 /*** 测试热点限流* param id* param type* return*/GetMapping(/news)SentinelResource(value news, blockHandler hot) // value为资源名可以任意指定blockHandler为限流处理public String news(RequestParam(id) String id, RequestParam(type) String type) {return id id type type;}处理热点限流的接口
接受的参数需要与被热点限流的接口的参数一致并且有一个处理异常的参数 /*** 热点限流处理* param id 与news方法的参数一致* param type 与news方法的参数一致* param blockException 限流处理的异常* return 注意这里的返回值类型要与news方法的返回值类型一致*/public String hot(String id, String type, BlockException blockException) {return id id type type 热点限流处理;}2.重启10004微服务并启动Nacos和Sentinel
3.浏览器输入 http://localhost:10004/news?id1type%E5%8A%A8%E7%89%A9 4.Sentinel查看热点接口 5.点击热点进行基本配置
这个配置表示对参数id进行热点限流只要每秒请求次数超过2就触发限流 6.保存后点击热点规则编辑刚才的规则 7.点击高级选项对参数的具体值进行额外配置 4.测试
1.浏览器快速访问 http://localhost:10004/news?id1type%E5%8A%A8%E7%89%A9 会出现热点限流
原因是对参数id设置了热点限流的触发条件为每秒请求数为2 2.快速访问 http://localhost:10004/news?id2type%E5%8A%A8%E7%89%A9 不会出现热点限流
原因是对参数id2设置了热点限流的触发条件为每秒请求数为100 5.注意事项
1.热点参数可以设置多个值进行限流 2.处理热点限流的方法的返回值需要与被处理的方法相同
3.系统规则
1.基本介绍
1.引出系统规则 2.介绍
简单来说这个系统规则就是对整个系统的所有资源进行统一管理共享一套限流规则 2.系统规则实例
1.需求分析 2.新增系统规则 3.进行配置
这样配置就表示整个系统的每秒请求数超过2就会进行限流 4.测试
浏览器快速访问 http://localhost:10004/t2或者其他任意的资源 都会进行热点限流 4.全局限流处理类
1.需求分析 2.具体实现
1.编写全局限流处理类
需要注意方法必须是static并且参数类型和返回的类型必须与被处理的方法一致
package com.sun.springcloud.handler;import com.alibaba.csp.sentinel.slots.block.BlockException;/*** Description: 全局限流处理器方法必须是static** Author sun* Create 2024/3/29 16:04* Version 1.0*/
public class GlobalBlockHandler {/*** 全局限流处理器** param id 传入的参数* param e 异常* return 返回的结果必须与被处理的方法返回值一致*/public static String blockHandler(String id, BlockException e) {return GlobalBlockHandler id 服务不可用;}
}
2.编写一个接口进行测试 /*** 全局限流测试* return*/GetMapping(/system)// SentinelResource 注解中的value值为资源名 名字任意blockHandlerClass为全局限流处理类blockHandler为处理方法SentinelResource(value system, blockHandlerClass GlobalBlockHandler.class, blockHandler blockHandler)public String system(RequestParam(value id, required false) String id) {return id id 全局限流未激活;}3.测试
1.重启10004模块 2.配置system接口的限流这里就配置一个热点限流 3.浏览器快速访问 http://localhost:10004/system?idtest 5.fallback统一处理java异常
1.需求分析 2.具体实现
1.修改system接口每五次抛出异常 private int count 0;/*** 全局限流测试* return*/GetMapping(/system)// SentinelResource 注解中的value值为资源名 名字任意blockHandlerClass为全局限流处理类blockHandler为处理方法SentinelResource(value system, blockHandlerClass GlobalBlockHandler.class, blockHandler blockHandler,fallbackClass GlobalFallbackHandler.class, fallback fallbackHandlerMethod1)public String system(RequestParam(value id, required false) String id) {// 每调用5次就抛出异常if ( count % 5 0) {throw new RuntimeException(出现异常);}return id id 全局限流未激活;}2.编写全局异常处理类
方法需要是static参数类型和返回类型与被处理的方法类型一致
package com.sun.springcloud.handler;/*** Description: 全局异常处理类所有的方法都要是静态方法参数类型和返回值类型也要与被处理的方法返回值相同** Author sun* Create 2024/3/29 16:33* Version 1.0*/
public class GlobalFallbackHandler {public static String fallbackHandlerMethod1(String id, Throwable throwable) {return fallback处理异常 id: id;}
}
3.system接口使用全局异常处理类处理异常
新增两个属性一个是全局异常处理类的Class对象一个是处理异常的方法 4.测试
1.打开nacos和sentinel
2.重启10004微服务
3.浏览器访问一下http://localhost:10004/system?idtest
4.Sentinel配置限流这里就配置一个QPS流量控制 5.目前情况分析
正常情况每秒请求数不超过2限流情况每秒请求数超过2被全局限流处理类中的方法处理异常情况每5次抛出一次异常交给全局异常处理器处理
6.访问五次 http://localhost:10004/system?idtest 成功交给全局异常处理类来处理