02、初识Sentinel-雪崩问题及解决方案
Spring Cloud Config (Spring自家的)
Gateway (Spring自家的)
Nefflix : Eureka Feign Ribbon Hystrix
Alibaba :Nacos 服务注册发现Sentinel 限流熔断Setata 分布式事务
什么是雪崩
雪崩就是当微服务收到请求的时候发送给订单服务,当订单服务的请求量过大就会造成宕机,然后用户服务调用订单服务里的资源,是调用不了的,就会导致用户服务的tomcat线程占用,当用户服务的tomcat的线程被占用完了也会宕机,这就是雪崩
解决方法(4种)
1.超时处理:(默认是1秒)
设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待
2.线程隔离(仓壁模式)
给每个微服务创建一个线程池10个,当这十个线程占用了,就把请求返回(降级:友好提示业务繁忙)
我们可以限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。
3.熔断器(断路器)(三个方法)
1.设置超时比例(慢请求比例)
2.异常比例
3.异常数
状态机包括三个状态:
- closed:关闭状态,断路器放行所有请求,并开始统计异常比例、慢请求比例。超过阈值则切换到open状态
- open:打开状态,服务调用被熔断,访问被熔断服务的请求会被拒绝,快速失败,直接走降级逻辑。Open状态5秒后会进入half-open状态
- half-open:半开状态,放行一次请求,根据执行结果来判断接下来的操作。
- 请求成功:则切换到closed状态
- 请求失败:则切换到open状态

4.QPS限流(预防雪崩)(一共三种方法)
QPS限流示例
1)流控模式
在添加限流规则时,点击高级选项,可以选择三种流控模式:
1.直接:
写多少个单阀一秒钟就放行多少个
统计当前资源的请求,触发阈值时对当前资源直接限流,也是默认的模式
2.关联:统计与当前资源相关的另一个资源,触发阈值时,对当前资源限流
(自己理解的)当关联的资源访问超过了五个,就会限制资源名的资源,把资源调给关联资源使用
3.链路:统计从指定链路访问到本资源的请求,触发阈值时,对指定链路限
流

