sentinel部署与使用
一、sentinel-dashboard部署
1.下载
- 下载地址:https://github.com/alibaba/Sentinel/tags
- 下载ZIP
- 进入文件夹:sentinel-dashboard;
- mvn package 打包成 sentinel-dashboard.jar
2.启动
java -Dserver.port=8866 -Dcsp.sentinel.dashboard.server=localhost:8866 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar- 访问地址为 http://ip:8866
- 用户密码:sentinel/sentinel
二、springCloud整合sentinel
1.添加maven依赖
<!--Sentinel是Spring Cloud Alibaba提供的一个专门用于服务容错、服务熔断、服务限流的微服务组件--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <version>2021.1</version> </dependency> <!--sentinel持久化依赖,采用Nacos作为规则配置数据源。--> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> <version>1.8.5</version> </dependency>
2.添加yml依赖
spring:
application:
## 指定服务名称,在nacos中的名字
name: mstickservice
cloud:
loadbalancer:
enabled: true
nacos:
discovery:
server-addr: 192.168.244.131:8848
sentinel:
webContextUnify: false # 默认true 将调用链路收敛, 导致链路流控效果无效
filter:
enabled: false
transport:
dashboard: 192.168.244.120:8866 # 配置sentinel dashboard地址,监控项目端口8001
port: 8719 # 默认8719端口,如果被占用,则从8719递增检查未被占用的端口
datasource:
nacos-flow-rule: # 自定义数据源名称,可以随便定义,保持唯一,可以配置多个,目的是为了区分出每条规则,无实际应用。
nacos:
server-addr: 192.168.244.131:8848 # nacos地址
dataId: test_sentinel # Nacos创建的配置DataId
ruleType: flow # 规则类型 flow:流控规则;
dataType: json # 默认值json,可以不填。3.controller代码
@RequestMapping("/testSentinel")
@ResponseBody
@SentinelResource(value = "test-1", fallback = "fallback1")
public String testSentinel() {
return "1111111111111111111";
}
//sentinel限流处理
public String fallback1(BlockException ex) {
return "限流处理1111111";
}@SentinelResource的属性说明
- ==value==:作用指定资源名称,必填
- ==entryType==:entry类型,标记流量的方向,指明是出口流量,还是入口流量;取值 IN/OUT ,默认是OUT。非必填
- ==blockHandler==:处理BlockException的函数名称,函数要求为 必须是public 返回类型与原方法一致 参数类型需要和原方法相匹配,并在最后加上BlockException类型的参数 默认需和原方法在同一个类中,如果希望使用其他类的函数,可配置blockHandlerClass,并指定blockHandlerClass里面的方法
- ==blockHandlerClass==:存放blockHandler的类。对应的处理函数必须static修饰,否则无法解析。函数要求为: 必须是public 返回类型与原方法一致 参数类型需要和原方法相匹配,并在最后加上BlockException类型的参数
- ==fallback==:用于在抛出异常的时候提供fallback处理逻辑。fallback函数可以针对所有类型的异常(除了execptionsToIgnore 里面排除掉的异常类型)进行处理,函数要求为: 返回类型与原方法一致 参数类型需要和原方法相匹配,Sentinel 1.6版本之后,也可在方法最后加上Throwable类型的参数 默认需和原方法在同一个类中,若希望使用其他类的函数,可配置fallbackClass,并指定fallbackClass里面的方法
- ==fallbackClass==:存放fallback的类。对应的处理函数必须static修饰,否则无法解析,其他要求:同fallback。
- ==defaultFallback==:用于通用的 fallback 逻辑。默认fallback函数可以针对所有类型的异常(除了 exceptionsToIgnore 里面排除掉的异常类型)进行处理。若同时配置了 fallback 和 defaultFallback,以fallback为准。函数要求: 返回类型与原方法一致 方法参数列表为空,或者有一个Throwable类型的参数 默认需要和原方法在同一个类中,若希望使用其他类的函数,可配置fallbackclass,并指定fallbackClass里面的方法。
- ==exceptionsToIgnore==:指定排除掉哪些异常。排除的异常不会计入异常统计,也不会进入fallback逻辑,而是原样抛出
- ==exceptionsToTrace==:需要trace的异常
4.nacos配置中心配置
[
{
"resource": "test-1",
"controlBehavior": 0,
"count": 1,
"grade": 1,
"limitApp": "default",
"strategy": 0,
"clusterMode": false
},
{
"resource": "test-2",
"controlBehavior": 0,
"count": 1,
"grade": 1,
"limitApp": "default",
"strategy": 0,
"clusterMode": false
}
]
配置说明:
- resource:资源名称;
- limitApp:来源应用;
- grade:阈值类型;0表示线程数,1表示QPS;
- count:单机阈值;
- strategy:流控模式;0表示直接,1表示关联,2表示链路;
- controlBehavior:流控效果;0表示快速失败,1表示Warm Up,2表示排队等待;
- clusterMode:是否集群。
三、控制台展示
源码分析:https://blog.csdn.net/a15835774652/article/details/132469542
源码分析 :https://blog.csdn.net/a15835774652/article/details/132234943




浙公网安备 33010602011771号