Nepxion Discovery学习笔记4 Sentinel流量防卫兵/服务容错综合方案
笔记1:
@SentinelResource:
@SentinelResource 用于定义资源,并提供可选的异常处理和 fallback 配置项。
属性
|
作用 |
value
|
资源名称
|
entryType
|
entry 类型,标记流量的方向,取值 IN/OUT ,默认是 OUT
|
blockHandler
|
处理 BlockException 的函数名称 , 函数要求:
1. 必须是 public
2. 返回类型 参数与原方法一致
3. 默认需和原方法在同一个类中。若希望使用其他类的函数,可配置 blockHandlerClass ,并指定 blockHandlerClass 里面的方法。
|
blockHandlerClass
|
存放 blockHandler 的类 , 对应的处理函数必须 static 修饰。
|
fallback
|
用于在抛出异常的时候提供 fallback 处理逻辑。 fallback函数可以针对所 有类型的异常(除了 exceptionsToIgnore 里面排除掉的异常类型)进 行处理。函数要求:
1. 返回类型与原方法一致
2. 参数类型需要和原方法相匹配
3. 默认需和原方法在同一个类中。若希望使用其他类的函数,可配置 fallbackClass ,并指定 fallbackClass 里面的方法。
|
fallbackClass
|
存放 fallback 的类。对应的处理函数必须 static 修饰。
|
defaultFallback
|
用于通用的 fallback 逻辑。默认 fallback函数可以针对所有类型的异常进 行处理。若同时配置了 fallback 和 defaultFallback ,以 fallback为准。函 数要求:
1. 返回类型与原方法一致
2. 方法参数列表为空,或者有一个 Throwable 类型的参数。
3. 默认需要和原方法在同一个类中。若希望使用其他类的函数,可配置 fallbackClass ,并指定 fallbackClass 里面的方法。
|
exceptionsToIgnore
|
指定排除掉哪些异常。排除的异常不会计入异常统计,也不会进入 fallback 逻辑,而是原样抛出。
|
exceptionsToTrace
|
需要 trace 的异常
|
定义限流和降级后的处理类和方法:
注意:虽然可以直接在当前类写方法,但复用性低(不建议)!
定义处理类可以提高复用性,但方法必须加上static(很重要)!
在接口或方法上用 @SentinelResource 标识为资源,并配置 value , blockHandlerClass , blockHandler , fallbackClass , fallback 属性.
新建OrderServiceImpl3BlockHandlerClass类:
// BlockException 异常接口,其子类为Sentinel五种规则异常的实现类:// AuthorityException 授权异常// DegradeException 降级异常// FlowException 限流异常// ParamFlowException 参数限流异常// SystemBlockException 系统负载异常
@Slf4j
public class OrderServiceImpl3BlockHandlerClass {//定义BlockException处理类//注意:必须加上static修饰public static String blockHandler(BlockException ex) {log.error("{}", ex);return "接口被限流或者降级了...";}
}
新建OrderServiceImpl3FallbackClass类:
@Slf4j
public class OrderServiceImpl3FallbackClass {//定义Throwable处理类//Throwable时进入的方法public static String fallback(Throwable throwable) {log.error("{}", throwable);return "接口发生异常了...";}
}
OrderServiceImpl3类:
@Service
@Slf4j
public class OrderServiceImpl3 {int i = 0;/*@SentinelResource("资源名")注解: 用于指定本地资源(接口)并配置相应的流控规则.*/@SentinelResource(value = "/message5",//资源名blockHandlerClass = OrderServiceImpl3BlockHandlerClass.class,//可以指定外部类blockHandler = "blockHandler",//发生BlockException时调用,本类没有则须指定blockHandlerClassfallbackClass = OrderServiceImpl3FallbackClass.class,//可以指定外部类fallback = "fallback")//发生Throwable时调用,本类没有则须指定fallbackClasspublic String message5() {i++; //每次调用接口i就+1;所以i从1,2,3,4递增,每次递增1if ( i % 3 == 0 ) {throw new RuntimeException();}//每过3次就触发一次异常,接口就会调用失败return "message5";}// //直接在本类定义发生BlockException时进入的方法(复用性低,不建议)
// public String blockHandler(BlockException ex) {
// log.error("{}", ex);
// return "接口被限流或者降级了...";
// }
// //直接在本类定义发生Throwable时进入的方法(复用性低,不建议)
// public String fallback(Throwable throwable) {
// log.error("{}", throwable);
// return "接口发生异常了...";
// }
}
Nepxion Discovery学习笔记4 Sentinel流量防卫兵/服务容错综合方案相关推荐
- Nepxion Discovery学习笔记3 Sentinel流量防卫兵/服务容错综合方案
Sentinel(分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案.它以流量 为切入点, 从流量控制.熔断降级.系统负载保护等多个维度来保护服务的稳定性. 笔记1: Sentin ...
- SpringCloud Alibaba之 Sentinel流量防卫兵
文章目录 Sentinel 流量防卫兵 一.安装与部署
- Sentinel流量防卫兵
前言 在我们平常工作中,总会有这样的事情发生:服务无法承受过多的请求而被打挂. 一般我们可以从两个方面处理: 增加节点,水平扩展(钱总是万能的) 对请求量过高的接口进行限流(没钱也不是不可以) 突发情 ...
- Sentinel 流量防卫兵-SpringCloudAlibaba No.4
这里写目录标题 安装与部署 1.下载 2.配置idea启动 3.需要的微服务加上依赖 4.需要的微服务的配置文件 流量控制 1.小试牛刀 2.链路模式: 1.一视同仁 2.区别对待 3.其他流控模式刻 ...
- Sentinel流量防卫兵和组成成分
在分布式系统里,许多服务之间通过远程调用实现信息交互,调用时不可避免会出现调用失败,比如超时.异常等原因导致调用失败,Sentinel能够保证在一个服务出问题的情况下,不会导致整体服务失败,避免级联故 ...
- 6.Spring Cloud Alibaba教程:Sentinel流量防卫兵的介绍与基本使用
官网 https://sentinelguard.io/ 服务雪崩 微服务中各个服务之间通过http/rpc互相调用,假设其中1个服务因为网络或自身原因出现问题,调用这个服务就会出现线程堵塞,此时若有 ...
- 3 - 分布式系统的流量防卫兵:Sentinel
Java工程师的进阶之旅 学习 SpringCloud2 这一篇就够了 1 - SpringCloud Alibaba 介绍 2 - 服务注册与配置中心:Nacos 3 - 分布式系统的流量防卫兵:S ...
- SpringCloudAlibaba - 分布式流量防卫兵Sentinel
一. Sentinel: 分布式系统的流量防卫兵 - 阿里巴巴产品 具体介绍可以看官方文档:https://github.com/alibaba/Sentinel/wiki/介绍,下面我们说点官方没有 ...
- Sentinel流量防控卫兵
Sentinel流量防控卫兵 启动控制台 利用@SentinelResource的低侵入方式 探讨blockHandler和fallback的区别 也可以直接按照官方的操作https://github ...
最新文章
- mysql中的多行查询结果合并成一个
- H3C S5560交换机风扇反转告警
- request.getAttribute()和 request.getParameter()有何区别?
- 打印Java数组最优雅的方式
- 网页中加载obj模型比较慢_R语言估计时变VAR模型时间序列的实证研究分析案例...
- SQL Server 2008空间数据应用系列四:基础空间对象与函数应用
- MFC通过sql访问excel的方法
- linux启动 mongo 不了问题
- 【物理应用】基于matlab GUI家庭室内温湿度控制【含Matlab源码 326期】
- 【转】C#字符串转换为日期
- 一看就懂:正则表达式
- 数学建模之层次分析法(含MATLAB代码)
- index函数python什么意思_详解python中的index函数用法
- Springboot整合Hibernate入门
- LeetCode--第25题K个一组翻转链表
- 假期北京旅游请注意了!
- winrar正确破解方法
- thingsboard
- 为什么学习信息学竞赛?
- 目标检测的评价指标P,R,mAP