sentinel部署与使用

一、sentinel-dashboard部署

1.下载

  1. 下载地址:https://github.com/alibaba/Sentinel/tags
  2. 下载ZIP
  3. 进入文件夹:sentinel-dashboard;
  4. mvn package 打包成 sentinel-dashboard.jar

2.启动

  1. java -Dserver.port=8866 -Dcsp.sentinel.dashboard.server=localhost:8866 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
  2. 访问地址为 http://ip:8866
  3. 用户密码:sentinel/sentinel

image

二、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:是否集群。

三、控制台展示

image

image

源码分析:https://blog.csdn.net/a15835774652/article/details/132469542

源码分析 :https://blog.csdn.net/a15835774652/article/details/132234943

https://sentinelguard.io/zh-cn/docs/quick-start.html

posted @ 2025-08-27 16:27  pk.com.cn  阅读(41)  评论(0)    收藏  举报