欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

sentinel分布式系统的流量防卫兵

程序员文章站 2022-03-19 15:27:08
目录一、Sentinel 介绍一、Sentinel 介绍...

一、Sentinel 介绍

sentinel分布式系统的流量防卫兵
sentinel分布式系统的流量防卫兵
Sentinel 分为两个部分
sentinel分布式系统的流量防卫兵
Sentinel特征
sentinel分布式系统的流量防卫兵
sentinel分布式系统的流量防卫兵

sentinel分布式系统的流量防卫兵

二、Sentinel 部署

下载jar包,然后启动即可。

下载地址https://github.com/alibaba/Sentinel/releases
使⽤v1.7.1
启动:

java -jar sentinel-dashboard-1.7.1.jar &

⽤户名/密码:sentinel/sentinel
sentinel分布式系统的流量防卫兵

三、微服务改造

1、pom

<!--sentinel 核⼼环境 依赖-->
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

2、application.yml修改

配置sentinel dashboard,暴露断点依然要有,删除原
有hystrix配置,删除原有OpenFeign的降级配置

spring:
  application:
    name: lagou-service-autodeliver
  cloud:
    sentinel:
      transport:
        dashboard: 127.0.0.1:8080 # sentinel dashboard/console地址

        port: 8719 # sentinel会在该端⼝启动http server,那么这样的话,控制台定义的⼀些限流等规则才能发送传递过来,
                   #如果8719端⼝被占⽤,那么会依次+1
  # springboot中暴露健康检查等断点接口

完整版

server:
  port: 8095
spring:
  application:
    name: lagou-service-autodeliver
  cloud:
    nacos:
      discovery:
        ################ 配置nacos server地址
        server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
    sentinel:
      transport:
        dashboard: 127.0.0.1:8080 # sentinel dashboard/console地址

        port: 8719 # sentinel会在该端⼝启动http server,那么这样的话,控制台定义的⼀些限流等规则才能发送传递过来,
                   #如果8719端⼝被占⽤,那么会依次+1
  # springboot中暴露健康检查等断点接口
  main:
    allow-bean-definition-overriding: true # 不加报错
management:
  endpoints:
    web:
      exposure:
        include: "*"
  # 暴露健康接口的细节
  endpoint:
    health:
      show-details: always
#针对的被调用方微服务名称,不加就是全局生效
lagou-service-resume:
  ribbon:
    #请求连接超时时间
    ConnectTimeout: 2000
    #请求处理超时时间
    ##########################################Feign超时时长设置
    ReadTimeout: 6000
    #对所有操作都进行重试
    OkToRetryOnAllOperations: true
    ####根据如上配置,当访问到故障请求的时候,它会再尝试访问一次当前实例(次数由MaxAutoRetries配置),
    ####如果不行,就换一个实例进行访问,如果还不行,再换一次实例访问(更换次数由MaxAutoRetriesNextServer配置),
    ####如果依然不行,返回失败信息。
    MaxAutoRetries: 0 #对当前选中实例重试次数,不包括第一次调用
    MaxAutoRetriesNextServer: 0 #切换实例的重试次数
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #负载策略调整
logging:
  level:
    # Feign日志只会对日志级别为debug的做出响应
    com.lagou.edu.config.ResumeFeignClient: debug

3、启动微服务

上述配置之后,启动⾃动投递微服务,使⽤ Sentinel 监控⾃动投递微服务。

此时我们发现控制台没有任何变化,因为懒加载,我们只需要发起⼀次请求触发即可

sentinel分布式系统的流量防卫兵

四、Sentinel 关键概念

概念名称 概念描述
资源 它可以是 Java 应⽤程序中的任何内容,例如,由应⽤程序提供的服务,或由应⽤程序调⽤的其它应⽤提供的服务,甚⾄可以是⼀段代码。我们请求的API接⼝就是资源
规则 围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。

五、Sentinel 流量规则模块

(一)新增流量监控规则页面说明

sentinel分布式系统的流量防卫兵

(二)流控模式

1、直接限流

2、关联限流

关联的资源调⽤达到阈值时候限流⾃⼰,⽐如⽤户注册接⼝,需要调⽤身份证校验接⼝(往往身份证校验接⼝),如果身份证校验接⼝请求达到阈值,使⽤关联,可以对⽤户注册接⼝进⾏限流。
sentinel分布式系统的流量防卫兵

3、链路限流

链路指的是请求链路(调⽤链)

链路模式下会控制该资源所在的调⽤链路⼊⼝的流量。需要在规则中配置⼊⼝资源,即该调⽤链路⼊⼝的上下⽂名称。

sentinel分布式系统的流量防卫兵
sentinel分布式系统的流量防卫兵

(三)流控效果

  1. 快速失败:一般情况下使用
  2. warm up:适用于突然爆发的高水位流量
  3. 排序等待:适用于削峰填

1、快速失败

2、Warm up

当系统⻓期处于空闲的情况下,当流量突然增加时,直接把系统拉升到⾼⽔位可能瞬间把系统压垮,⽐如电商⽹站的秒杀模块。

通过 Warm Up 模式(预热模式),让通过的流量缓慢增加,经过设置的预热时间以后,到达系统处理请求速率的设定值。

Warm Up 模式默认会从设置的 QPS 阈值的 1/3 开始慢慢往上增加⾄ QPS 设置值。

sentinel分布式系统的流量防卫兵

3、排队等待

sentinel分布式系统的流量防卫兵
sentinel分布式系统的流量防卫兵

(四)降级规则

Hystrix:在活动窗口内,尝试放一个请求过去,看能否调用成功,尝试⾃我修复。
而Sentinel不一样,就是明明确确的按照时间窗⼝来,熔断触发后,时间窗⼝内拒绝请求,时间窗⼝后就恢复。

sentinel分布式系统的流量防卫兵

1、Hystrix中的熔断回顾

sentinel分布式系统的流量防卫兵

2、RT:平均响应时间

sentinel分布式系统的流量防卫兵

2、异常比例

sentinel分布式系统的流量防卫兵
与RT类似,只不过熔断的条件不一样,一个是根据平均响应时间,一个是根据异常比例。

异常,比如。1/0。

sentinel分布式系统的流量防卫兵

3、异常数

异常的数据有多少个。

当资源近 1 分钟的异常数⽬超过阈值之后会进⾏熔断。注意由于统计时间窗⼝是分钟级别的,若 timeWindow ⼩于 60s,则结束熔断状态后仍可能再进⼊熔断状态。

时间窗⼝ >= 60s
sentinel分布式系统的流量防卫兵

六、

本文地址:https://blog.csdn.net/qq_37931744/article/details/112577617