Sentinel学习笔记

一、安装

  1. 下载
    Sentinel下载地址
  2. 安装
    java -jar sentinel-dashboard-1.7.0.jar
    3.访问 localhost:8080
    在这里插入图片描述

二、配置

1.搭建项目

  1. 引入maven依赖
 <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--持久化 -->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
  1. 配置yml
server:
  port: 8401

spring:
  application:
    #服务实例名称
    name: cloudalbaba-sentinel-service
  cloud:
    nacos:
      discovery:
        #nacos服务地址
        server-addr: 192.168.252.101:1111
    sentinel:
      transport:
        # 配置sentinel dashboard地址
        dashboard: localhost:8080
        # 默认8719端口,假如被占用会自动从8719开始一次+1扫描,直到找到未被占用的端口
        port: 8719
  1. 启动类添加注解
    @SpringBootApplication
    @EnableDiscoveryClient
  2. 请求任意接口刷新sentinel dashboard

在这里插入图片描述

2.流控

  1. 流控规则
    点击sentinel dashboard页面的流控规则,新增流控规则,设置阈值类型、阈值
    阈值类型:
    QPS:每秒钟请求数量,当达到阈值时限流
    线程数:处理请求的线程数,当调用该api的线程达到阈值时限流
    • 流控模式

      • 直接:接口达到限流条件时,开启限流
      • 关联:当关联的资源达到限流条件时,开启限流,适合做应用让步。例如为一个查询的接口添加关联流控,关联 资源为一个更新的接口,当更新的接口达到阈值时,开启查询接口的限流,为更新接口让步服务器资源。
      • 链路:当从某个接口过来的资源达到限流条件时,开启限流
    • 流控效果

      • 快速失败
      • Warm Up(预热)
        当系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮,通过预热让流量缓慢增加,在一定时间内逐渐增加到阈值,避免系统压垮。
        • 公式:阈值除以coldFactor(冷加载因子,默认值3),经过预热时长后才会达到阈值
    • 排队等待
      严格控制请求请求通过的时间间隔,让请求通过均匀速度通过,对应漏桶算法。用于处理间隔突发流量

  2. 降级规则(没有半开状态)
    • RT(平均响应时间,秒级)
      平均响应时间 超出阈值且QPS>=5,两个条件同时满足后触发降级,窗口期后关闭断路器
      RT最大4900(更大设置 -Dcsp.sentinel.statistic.max.rt=xxx)
      异常比例(秒级)
      QPS>=5 且异常比例(秒级统计)超过阈值时,触发降级;时间窗口期结束后,关闭降级
      异常数(分钟级)
      异常数(分钟统计)超过阈值,触发降级;时间窗口期结束后,关闭降级,设置时时间窗口大于60秒
  3. 热点规则
    请求SentinelResource指定的api名称的指定参数,达到QPS开启断路器,时间窗口期后关闭断路器
    • 参数例外项
      当参数为指定类型时,使用例外配置的规则
  4. 系统规则(入口级别,粗粒度)
    • LOAD
    • RT
    • 线程数
    • 入口QPS
    • CUP使用率

3.@SentinelResource

不支持private方法
value:名称
fallback处理运行异常,blockHandler处理流控配置
blockHandler:降级方法
blockHandlerClass:降级类
blockHandlerClass,blockHandler:指定降级类中的降级方法
exceptisToIgnore:忽略多个异常

与openFeign整合
增加配置

 #激活Sentinel对feign的支持       
feign:
  sentinel:
    enabled: true

4.持久化

将限流规则持久化到nacos

  1. 添加maven依赖
 <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

2.配置yml

spring:
  application:
    #服务实例名称
    name: cloudalibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        #nacos服务地址
        server-addr: 192.168.252.101:1111
    sentinel:
      transport:
        # 配置sentinel dashboard地址
        dashboard: localhost:8080
        # 默认8719端口,假如被占用会自动从8719开始一次+1扫描,直到找到未被占用的端口
        port: 8719
          datasource:
            dsl:
              nacos:
                server-addr: 192.168.252.101:1111
                dataId: cloudalibaba-sentinel-service
                data-type: json
                rule-type: flow
  1. nacos配置流控规则
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值