gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣

学习地址:https://www.bilibili.com/video/BV18E411x7eT?p=111

Sentinel

官网地址:

中文文档:/wiki/介绍

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

解决服务使用中的各种问题:服务雪崩、服务降级、服务熔断、服务限流。

主要特性

gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第1张图片

相关配置:

安装

下载地址:/releases

演示版本:

前提:java8

8080端口不能被占用

Sentinel分为两个部分:

  1. 核心库(Java客户端)不依赖任何框架/库,能够运行于所有Java运行时环境,同时对Dubbo / Spring Cloud等框架也有较好的支持。

  2. 控制台(Dashboard) 基于Spring Boot开发,打包后可以直接运行,不需要额外的Tomcat等应用容器。

运行

java -jar .jar

http://localhost:8080
登录账号密码均为sentinel

gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第2张图片


gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第3张图片


gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第4张图片

初始化演示工程

启动Nacos8848成功

http://localhost:8848/nacos/#/login

cloudalibaba-sentinel-service8401

  1. 建module

  2. 写POM



    
        springcloud2020
        com.nuc.springcloud
        -SNAPSHOT
    
    4.0.0

    cloudalibaba-sentinel-service8401

    
        
            com.nuc.springcloud
            cloud-api-commons
            ${}
        

        
            com.nuc.springcloud
            cloud-api-commons
            ${}
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

        
            com.alibaba.csp
            sentinel-datasource-nacos
        

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-sentinel
        

        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        

        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            cn.hutool
            hutool-all
            4.6.3
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        

    


  1. 写YML
server:
  port: 8401

spring:
  application:
    name: cloudalibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        #Nacos服务注册中心
        server-addr: localhost:8848
    sentinel:
      transport:
        #配置Sentinel dashboard 地址
        dashboard: localhost:8080
        port: 8719  #默认8719,假如被占用了会自动从8719开始依次+1扫描。直至找到未被占用的端口

management:
  endpoints:
    web:
      exposure:
        include: '*'
  1. 主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class MainApp8401 {
    public static void main(String[] args) {
        ();
    }
}
  1. 业务类
@RestController
@Slf4j
public class FlowLimitController {
    @GetMapping("/testA")
    public String testA() {
        return "------testA";
    }

    @GetMapping("/testB")
    public String testB() {
        return "------testB";
    }
}
  1. 测试

启动8401微服务后查看sentienl控制台

Sentinel采用的懒加载:执行一次访问即可

gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第5张图片


gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第6张图片

流控规则

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

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

阈值类型/单机阈值:
QPS (每秒钟的请求数量):当调用该api的QPS达到阈值的时候,进行限流
线程数:当调用该api的线程数达到阈值的时候,进行限流

是否集群:不需要集群

流控模式:
直接:api达到限流条件时,直接限流
关联:当关联的资源达到阈值时,就限流自己
链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就进行限流)[api级别的针对来源]

流控效果:
快速失败:直接失败,抛异常
Warm Up:根据codeFactor (冷加载因子,默认3)的值,从阈值 / codeFactor,经过预热时长,才达到设置的QPS阈值
排队等待:匀速排队,让请求以匀速的速度通过,阈值类型必须设置为QPS,则无效

流控模式

直接(默认)--> 快速失败

gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第7张图片


表示一秒内查询1次就OK,若超过次数1,就直接--快速失败,报默认错误

gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第8张图片

思考:需要一个类似fallback的兜底方法

关联

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

当与A关联的资源B达到阈值后,就限流自己

B惹事,A挂了

当关联资源/testB的qps阈值超过1时,就限流/testA的Rest访问地址,当关联资源到阈值后限制配置好的资源名

gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第9张图片


手动测试

gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第10张图片


postman测试线程数访问

访问testB成功

gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第11张图片


postman里新建多线程集合组

gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第12张图片


将访问地址添加进新线程组

gateway sentinel 熔断 不起作用_Sentinel实现熔断与限流 - 魔笔钨丝浣_第13张图片


20个线程每次间隔秒访问一次

你可能感兴趣的:(gateway,sentinel,熔断,不起作用,sentinel,端口)