尚硅谷springcloud2020day13(p111-115)

今天是2020-12-16。
一。Sentinel
1.简单来说就是hystrix的alibaba版,也有限流、熔断等功能
2.分为两部分,基于java的核心库和基于springboot的控制台dashboard
二。docker 安装sentinel
1.docker pull bladex/sentinel-dashboard
2.docker run -d -p 8858:8858 --name mysentinel bladex/sentinel-dashboard
3.访问xxx:8858看到登录界面表示安装成功
三。微服务引入sentinel
1.pom:

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
       <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</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-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.application.yml:

server:
  port: 8401
spring:
  application:
    name: cloudalibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        #nacos地址
        server-addr: xxx:8848
    sentinel:
      transport:
        #sentinel监控平台地址
        dashboard: xxx:8858
        #应用本地会启动一个httpserver与sentinel控制台交互,端口默认8719,如果被占用就+1直到找到未被占用的端口
        port: 8719
        #如果是docker启动的话,本地服务想看到实时监控要配置这个为本机ip
         clientIp: 127.0.0.1
management:
  endpoints:
    web:
      exposure:
        include: "*"

三。流控规则
资源名:唯一名称,默认请求路径
针对来源:Sentinel可以针对调用者进行限流,填写微服务名,指定对哪个微服务进行限流 ,默认default(不区分来源,全部限制)
阈值类型/单机阈值:
1、QPS(每秒钟的请求数量):当调用该接口的QPS达到了阈值的时候,进行限流;
2、线程数:当调用该接口的线程数达到阈值时,进行限流
是否集群:不需要集群
流控模式:
1、直接:接口达到限流条件时,直接限流
2、关联:当关联的资源达到阈值时,就限流自己
3、链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就可以限流)[api级别的针对来源]
流控效果
1、快速失败:直接失败
2、Warm Up:即请求 QPS 从 threshold / 3 开始,经预热时长逐渐升至设定的 QPS 阈值
3、排队等待
四。qps失败
在簇点链路页面,可以为请求过的接口配置流控规则:
为/hello新建流控规则,选择阈值类型为qps,单机阈值为1,来源选择default–不区分微服务,高级选项使用默认配置直接快速失败,点击新增。然后访问/hello一秒两次,浏览器页面就会看到返回提示blocked by sentinel(flow limiting),此时/hello的qps达到了一秒两次,满足规则直接失败。

猜你喜欢

转载自blog.csdn.net/qq_44727091/article/details/111247104
今日推荐