目录
- 一、Sentinel 介绍
- 二、Sentinel 部署
- 三、微服务改造
- 1、pom
- 2、application.yml修改
- 3、启动微服务
- 四、Sentinel 关键概念
- 五、Sentinel 流量规则模块
- (一)新增流量监控规则页面说明
- (二)流控模式
- 1、直接限流
- 2、关联限流
- 3、链路限流
- (三)流控效果
- 1、快速失败
- 2、Warm up
- 3、排队等待
- (四)降级规则
- 1、Hystrix中的熔断回顾
- 2、RT:平均响应时间
- 2、异常比例
- 3、异常数
- 六、
一、Sentinel 介绍
Sentinel 分为两个部分
Sentinel特征
二、Sentinel 部署
下载jar包,然后启动即可。
下载地址:https://github.com/alibaba/Sentinel/releases
使?v1.7.1
启动:
java -jar sentinel-dashboard-1.7.1.jar &
?户名/密码: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 关键概念
概念名称 | 概念描述 |
---|---|
资源 | 它可以是 Java 应?程序中的任何内容,例如,由应?程序提供的服务,或由应?程序调?的其它应?提供的服务,甚?可以是?段代码。我们请求的API接?就是资源 |
规则 | 围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。 |
五、Sentinel 流量规则模块
(一)新增流量监控规则页面说明
(二)流控模式
1、直接限流
2、关联限流
关联的资源调?达到阈值时候限流??,?如?户注册接?,需要调?身份证校验接?(往往身份证校验接?),如果身份证校验接?请求达到阈值,使?关联,可以对?户注册接?进?限流。
3、链路限流
链路指的是请求链路(调?链)
链路模式下会控制该资源所在的调?链路??的流量。需要在规则中配置??资源,即该调?链路??的上下?名称。
(三)流控效果
- 快速失败:一般情况下使用
- warm up:适用于突然爆发的高水位流量
- 排序等待:适用于削峰填
1、快速失败
2、Warm up
当系统?期处于空闲的情况下,当流量突然增加时,直接把系统拉升到??位可能瞬间把系统压垮,?如电商?站的秒杀模块。
通过 Warm Up 模式(预热模式),让通过的流量缓慢增加,经过设置的预热时间以后,到达系统处理请求速率的设定值。
Warm Up 模式默认会从设置的 QPS 阈值的 1/3 开始慢慢往上增加? QPS 设置值。
3、排队等待
(四)降级规则
Hystrix:在活动窗口内,尝试放一个请求过去,看能否调用成功,尝试?我修复。
而Sentinel不一样,就是明明确确的按照时间窗?来,熔断触发后,时间窗?内拒绝请求,时间窗?后就恢复。
1、Hystrix中的熔断回顾
2、RT:平均响应时间
2、异常比例
与RT类似,只不过熔断的条件不一样,一个是根据平均响应时间,一个是根据异常比例。
异常,比如。1/0。
3、异常数
异常的数据有多少个。
当资源近 1 分钟的异常数?超过阈值之后会进?熔断。注意由于统计时间窗?是分钟级别的,若 timeWindow ?于 60s,则结束熔断状态后仍可能再进?熔断状态。
时间窗? >= 60s