关于sentinel:Spring-Cloud-AlibabaSentinel流量控制框架

46次阅读

共计 2937 个字符,预计需要花费 8 分钟才能阅读完成。

  1. Sentinel 简介
    Sentinel 被称为分布式系统的流量防守兵,是阿里开源流控框架,从服务限流、降级、熔断等多个维度爱护服务,Sentinel 提供了简洁易用的控制台,能够看到接入利用的秒级数据,并且能够在控制台设置一些规定爱护利用,它比 Hystrix 反对的范围广,如 Spring Cloud、Dubbo、gRPC 都能够整合。
    资源是 Sentinel 最要害的概念,遵循 Sentinel API 的开发标准定义资源,就能将利用爱护起来。
    而规定能够通过控制面板配置,也能够和资源联结起来,规定能够在控制台批改并且即时失效。
    名词解释:

限流:不能让流量一窝蜂的进来,否则可能会冲垮零碎,须要限载流量,个别采纳排队的形式有序进行

对应生存中的小例子:比方在一个景区,个别是不会让所有人在同一时间进去的,会限度人数,排队进入,让景区内人数在一个可控范畴,因为景区的基础设施服务不了那么多人。

降级:即便在零碎出故障的状况下,也要尽可能的提供服务,在可用和不可用之间找一个平衡点,比方返回敌对提醒等。

例如当初稍有规模的电商零碎,为了给用户提供个性化服务,个别都有举荐零碎,假如当初举荐零碎宕机了,不应该在举荐商品一栏不给用户展现商品,反而能够升高一点要求,保障给用户看到的是敌对界面,给用户返回一些筹备好的静态数据。

熔断:间接回绝拜访,而后返回敌对提醒,个别是依据申请失败率或申请响应工夫做熔断。

熔断好比家里的保险盒,当线路过热时,就会跳闸,免得烧坏电路。

  1. Sentinel 和同类产品比照
    Sentinel、Hystrix、Resilience4j 的异同

根底个性 SentinelHystrixResilience4j 限流 QPS、线程数、调用关系无限的反对 Rate LImiter 注解的反对反对反对反对动静规定配置反对多种数据源反对多种数据源无限反对实时统计信息滑动窗口滑动窗口 Ring Bit Buffer 熔断降级策略均匀响应工夫、异样比例、异样数异样比例均匀响应工夫、异样比例控制台可配置各种规定,接口调用的秒级信息,机器发现等简略监控不提供控制台,可对接其它监控平台流量整形反对预热、排队模式不反对简略的 Rate Limiter 模式零碎自适应限流反对不反对不反对扩展性多个扩大点插件的模式接口的模式罕用适配框架 Servlet、Spring Cloud、Dubbo、gRPC 等 Servlet、Spring Cloud、NetflixSpring Boot、Spring Cloud

  1. 下载和运行
    github 地址
    github.com/alibaba/Sen…
    能够间接下载 jar 包运行 jar 包,也能够下载源码编译运行
    因为它是 springboot 我的项目,下载 jar 包后间接运行 jar 包即可
    java -jar sentinel-dashboard-1.8.3.jar

默认端口 8080,如果须要批改,能够减少 -Dserver.port 参数,启动命令批改为 java -jar -Dserver.port=9000 sentinel-dashboard-1.8.3.jar,即可将程序端口改为 9000
默认账号 sentinel,默认明码 sentinel,登录后页面是空白的,是因为 sentinel 采纳懒加载的形式,只有证正应用它,性能才会展现进去

  1. 我的项目集成 Sentinel
    4.1 创立提供者服务
    pom.xml
    <dependencies>

     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
    
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
     </dependency>
    
     <!-- 热部署 -->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
         <scope>runtime</scope>
         <optional>true</optional>
     </dependency>
    
     <!-- 衰弱监控 -->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
     <!-- 服务注册 / 服务发现须要引入的 -->
     <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     </dependency>
     <!-- nacos 配置核心依赖 -->
     <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     </dependency>
     <!-- sentinel 组件依赖 -->
     <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
     </dependency>

    </dependencies>

bootstrap.yml
server:
port: 8082 #程序端口号
spring:
application:

name: provider # 利用名称

cloud:

sentinel:
  transport:
    port: 8719 # 启动 HTTP Server,并且该服务与 Sentinel 仪表进行交互,是 Sentinel 仪表盘能够管制利用,如被占用,则从 8719 顺次 + 1 扫描
    dashboard: 127.0.0.1:8080 # 指定仪表盘地址
nacos:
  discovery:
    server-addr: 127.0.0.1:8848 # nacos 服务注册、发现地址
  config:
    server-addr: 127.0.0.1:8848 # nacos 配置核心地址
    file-extension: yml # 指定配置内容的数据格式

management:
endpoints:

web:
  exposure:
    include: '*' # 公开所有端点

写一个简略的 Controller 给消费者调用
@RestController
public class TestController {


@GetMapping("/test")
public String test(){return "provider test 办法" + RandomUtils.nextInt(0,100);
}

}

正文完
 0