sentinel部分使用说明

Sentinel是一款强大的流量控制和容错保护组件,主要用于微服务架构。它提供了多种流控策略,如QPS、线程数限制,以及直接、关联、链路等流控模式。此外,Sentinel还支持快速失败、WarmUp和排队等待三种流控效果。在降级方面,Sentinel可以根据RT、异常比例和异常数进行资源的熔断。配置持久化可选择保存到Nacos等数据源,确保规则在集群环境中的生效。

Sentinel

流控

  • 资源名:唯一名称,默认请求路径

  • 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源)

  • 阈值类型/单机阈值:

    • QPS:(每秒钟的请求数量):当调用该api的QPS达到阈值的时候,进行限流

    • 线程数:当调用该api的线程数达到阈值的时候进行限流

  • 是否集群

  • 流控模式:

    • 直接:api达到限流条件时,直接限流

    • 关联:当关联的资源达到阈值时,就限流自己

    • 链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就进行限流)【api级别的针对来源】

  • 流控效果

    • 快速失败:直接失败,抛异常

    • Warm Up:根据codeFactor(冷加载因子,默认为3)的值,从阈值/codeFactor,经过预热时长,才达到设置的QPS阈值

    • 排队等待:匀速排队,让请求以匀速的速度通过,阈值类型必须设置为QPS,否则无效

降级

  • RT(平均响应时间):当1s内持续进入5个请求,对应时刻的平均响应时间(秒级)均超过阈值,那么在接下来的时间窗口之内,对这个方法的调用都会自动地熔断。注意Sentinel默认统计的RT上限是4900ms’,超出此阈值的都会算作4900ms,若需要变更此上线可以通过启动配置项-Dcsp.sentinel.statistic.max.rt=XXX来配置
  • 异常比例 (ERROR_RATIO):当资源的每秒请求量>=5,并且每秒异常总数占通过量的比值超过阈值之后,资源进入降级状态,即在接下来的时间窗口之内,对这个方法的调用都会自动地返回
  • 异常数 (ERROR_COUNT):当资源近1分钟的异常数目超过阈值之后会进行熔断。注意由于统计时间窗口是分钟级别的,若timeWindow小于60s,则结束熔断状态后仍可能再进入熔断状态

持久化

持久到Nacos

依赖:

implementation 'com.alibaba.csp:sentinel-datasource-nacos'

yml:

spring:
  application:
    name: gateway
  cloud:
    sentinel:
      datasource:
        ds1:
          nacos:
            server-addr: localhost:8848
            dataId: gateway
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: flow

nacos添加配置:

image-20201231101454194
[
    {
        "resource":"/A",
        "limitApp":"default",
        "grade":1,
        "count":1,
        "strategy":0,
        "controlBehavior":0,
        "clusterMode":false
    }
]

“resource”:资源名称
“limitApp”:来源应用
“grade”:阈值类型,0表示线程数,1表示QPS
“count”:单机阈值
“strategy”:流控模式,0表示直接,1表示关联,2表示链路
“controlBehavior”:流控效果,0表示快速失败,1表示Warm Up,2表示排队等待
“clusterMode”:是否集群

<think>好的,我现在需要帮用户了解Sentinel 1.8.8的使用方法和配置指南。根据用户提供的引用内容,首先我需要整理这些信息,看看有哪些部分可以直接用上。 首先,引用1提到了下载Sentinel Dashboard的步骤,用户使用的是JDK17,下载了1.8.8版本的jar包。启动命令是java -jar,这部分应该放在配置指南的基础步骤里。然后引用3给出了Spring Boot项目的配置示例,包括application.properties中的配置项,比如dashboard地址和端口,这些是关键配置点,需要详细说明。 接下来,引用2提到了Spring Cloud Sentinel的自动配置,特别是Feign客户端的支持。用户可能需要知道如何启用Sentinel对Feign的集成,这部分应该包含在配置章节中,说明如何添加相关注解和配置属性。 引用4讨论了控制台的链路限流配置,特别是WEB_CONTEXT_UNIFY参数。用户可能需要了解如何关闭上下文收敛以实现更细粒度的限流,这里需要解释配置项的作用和设置方法。 引用5关于规则持久化,用户可能想了解如何将规则保存到Nacos,但用户的问题主要聚焦在1.8.8的使用,所以可能需要简要提及持久化的步骤,但注意引用5提到需要修改Dashboard源码,这部分可能比较复杂,是否需要详细展开?根据用户的问题,可能先给出基本使用,再提到持久化需要额外步骤。 然后,用户需要示例,引用3中的application.properties配置可以直接作为示例,同时可能需要一个简单的Controller示例来展示流控规则的应用。此外,代码示例中的BlockHandler处理方法也是关键,需要说明如何定义降级逻辑。 还需要检查是否有遗漏的配置点,比如启动Dashboard的参数,或者其他相关依赖。比如,在Spring Cloud项目中是否需要添加特定的starter依赖?引用2中的配置类可能属于自动配置的一部分,但用户可能需要添加依赖,比如spring-cloud-starter-alibaba-sentinel。 此外,注意事项部分需要提醒版本兼容性,比如Spring Cloud Alibaba版本与Sentinel的对应关系,避免用户因版本不匹配出现问题。引用4中提到SCA 2.1.1对应Sentinel 1.7.0,但用户使用的是1.8.8,可能需要确认版本对应情况,但用户提供的引用中没有更详细的信息,所以可能需要建议查阅官方文档。 最后,相关问题部分需要生成几个用户可能进一步询问的问题,比如如何持久化规则、整合Nacos、处理异常等,这些可以基于引用内容中的主题来设计。 总结步骤:下载与启动、Spring Boot配置、控制台使用、规则配置示例、注意事项、相关问题。确保各部分引用正确,比如引用3的配置示例,引用4的web-context-unify配置,引用2的Feign配置。需要将各个引用内容自然地融入到指南中,并在适当位置添加引用标记。</think>### Sentinel 1.8.8 使用教程与配置指南 #### 一、环境准备与启动 1. **下载Dashboard** 访问[GitHub Releases页面](https://github.com/alibaba/Sentinel/releases),选择`sentinel-dashboard-1.8.8.jar`(适用于JDK17)[^1]。 2. **启动控制台** 执行以下命令启动Sentinel Dashboard: ```bash java -jar sentinel-dashboard-1.8.8.jar ``` 默认访问地址:`http://localhost:8080`(账号/密码:sentinel/sentinel)。 --- #### 二、Spring Boot集成配置 1. **添加依赖** 在`pom.xml`中引入Spring Cloud Alibaba Sentinel依赖: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <version>2021.0.5.0</version> </dependency> ``` 2. **基础配置** 在`application.properties`中配置Dashboard地址与端口[^3]: ```properties spring.application.name=sentinel-test-001 server.port=8080 spring.cloud.sentinel.transport.dashboard=localhost:8081 spring.cloud.sentinel.transport.port=8791 ``` 3. **Feign客户端支持** 启用Sentinel对Feign的熔断功能[^2]: ```properties feign.sentinel.enabled=true ``` --- #### 三、控制台规则配置 1. **流控规则** - 登录Dashboard → 选择资源 → 配置QPS或线程数阈值。 - 示例:对接口`/api/test`设置QPS=10,超限触发降级。 2. **链路限流优化** 关闭上下文收敛以实现细粒度限流[^4]: ```properties spring.cloud.sentinel.web-context-unify=false ``` --- #### 四、代码示例 1. **定义资源与降级逻辑** ```java @RestController public class TestController { @GetMapping("/api/test") @SentinelResource(value = "testApi", blockHandler = "handleBlock") public String test() { return "Normal Response"; } // 降级处理方法 public String handleBlock(BlockException ex) { return "Triggered Block Handler"; } } ``` 2. **查看监控数据** 调用接口后,Dashboard的`簇点链路`页面会显示资源`testApi`的实时流量。 --- #### 五、注意事项 1. **版本兼容性** Spring Cloud Alibaba 2021.x 对应Sentinel 1.8.x,需确保依赖版本一致。 2. **规则持久化** 需修改Dashboard源码并集成Nacos[^5],步骤包括: - 下载Dashboard源码,添加`sentinel-datasource-nacos`依赖。 - 配置Nacos数据源,实现规则自动同步。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值