alibaba sentinel

  1. hystrix 弊端:没有一套web界面可以给我们进行更加细粒度的配置 留空 速率控制 服务熔断 服务降级。。。

  2. sentinel : 单独一个组件可以独立出来,直接界面化的细粒度同意配置

  3. sentinel使用场景:消息削峰填谷、集群流量控制 实时熔断下游不可应用
    完备的实时监控:sentinel同事提供实时的监控500台以下规模的集群汇总运行情况
    广泛的开源生态:sentinel可以与spring cloud Dubbo 整合,只需要引入相应的依赖并进行简单的配置即可快速地接入sentinel

  4. https://github.com/alibaba/Sentinel sentinel下载地址,可以自动编译里面的sentinel-core和sentinel-dashborad(监控)

  5. 执行java -jar dashboard.jar 访问http://localhost:8080/dashboard 完成sentinel的监控平台安装。

  6. 启动Nacos服务注册,写一个服务(sentinal-service)并启动,接着启动上面的sentinel平台(8080),此时这个服务注册到了Nacos,并且保护着这个服务(服务熔断、降级)

  7. pom.xml中

      
           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
     
    
  8. application.yml
    server:
    port: 8401
    spring:
    application:
    name: cloud-sentinel-service
    cloud:
    nacos:
    discovery:
    server-addr: localhost:8848
    sentinel:
    transport:
    # 配置sentinel dashboard地址
    dashboard: localhost:8080
    #默认8719端口,加入被占用会自动从8719开始依次+1扫描直至找 到未被占用的端口
    port: 8719
    #这个是监控,图形化展现需要配置这种配置
    management:
    endpoints:
    web:
    exposure:
    include: ‘*’

    1. @RestController
      public class FlowLimitController()
      {
      @GetMapping("/testA")
      public String testA()
      {
      return “--------------testA”;
      }

      @GetMapping("/testB")
      public String testB()
      {
      return “====testB”;
      }
      }

    2. 先启动 Nacos注册中心,在启动 sentinal-service ,查看nacos中已经注册了sentinel-service这个微服务。登录sentinel-dashboard(http://localhost:8080) 用户名 密码:sentinel sentinel,查看没有被哨兵保护的sentinal-service这个应用,因为sentinel是懒加载机制,必须访问下sentinel-service这个服务的接口,在sentinel-dashboard界面上才能看到,—会出现sentinal-service这个服务的监控,下拉框会出现–>实时监控,簇点链路,流控规则,降级规则,热点规则,系统规则,授权规则,集群流控,及其列表等
      例如实时监控选项:绿色是通过的,蓝色是没动的
      其中流控规则中的“编辑”中的阈值类型(QPS(选中) , 线程数(狂点没事,因为就这一个线程就没事)),单机阈值如果设置1
      表示每秒只能点击一次,如果在地址栏狂点(http://localhost:8401/testA),会出错–flow limit错误
      流控模式–>“直接”, 流控效果–>"快速失败“。。。
      如下:
      资源名: 唯一名称,默认请求路径
      针对来源:sentinel可以针对调用者进行限流,天铁微服务名默认default
      阈值类型/单机阈值:
      QPS:(每秒钟的请求数量): 当调用该api的QPS达到阈值的时候进行限流
      线程数:当调用该api的线程数达到阈值的时候进行限流
      是否集群:不需要集群
      流控模式:
      直接:api达到限流条件是直接限流
      关联:当挂链的资源达到阈值时,就限流自己(B惹事,A挂了,在postman中保存B的访问路径集合,模拟高并发访问)
      alibaba sentinel_第1张图片

    链路:只记录置顶链路上的流量
    

    流控效果:
    快速失败:直接失败,抛异常
    warm up: 根据codeFactor(冷加载因子默认3)的值,从阈值/codefactor,经过预热时长擦能达到设置的QPS阈值。 --当系统长期出啊与低水位情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间吧系统压垮,通过”冷启动“,让通过的流量缓慢增加,一段时间内增加到阈值上线,如下图:表示5秒的预热时长,从默认的单机阈值的3到达10,这意思。alibaba sentinel_第2张图片

    alibaba sentinel_第3张图片
    上图的流量模式是直接,表示前五秒每次点击超过三次(10/3=3)即初始化时候的阈值是3,会有flow limit提示,5秒后不会有提示,因为5s后就有10个访问量了
    应用场景:秒杀系统-当秒杀系统开启瞬间会有很多流量上来,很有可能把系统打死预热方式就是为了保护系统,可慢慢把流量放进来慢慢的把阈值增长到设置的阈值
    排队等待:类似于排队,可以一秒钟进来100个,但是一次只处理一个。
    应用场景:消息队列中某时候大并发进来,有时候处于空闲。
    alibaba sentinel_第4张图片

alibaba sentinel_第5张图片
119看完

你可能感兴趣的:(SpringCloud)