09-Sentinel限流熔断应用实践,多线程并发面试题

  • 线程数:当调用这个api的时,线程数达到单机阈值时,就会限流。

设置限流模式


Sentinel的流控模式代表的流控的方式,默认【直接】,还有关联,链路。

直接模式:

Sentinel默认的流控处理就是【直接->快速失败】。

![在这里插入图片描述]( )

在这里插入图片描述

链路模式

链路模式只记录指定链路入口的流量。也就是当多个服务对指定资源调用时,假如流量超出了指定阈值,则进行限流。被调用的方法用@SentinelResource进行注解,然后分别用不同业务方法对此业务进行调用,假如A业务设置了链路模式的限流,在B业务中是不受影响的。例如现在设计一个业务对象,代码如下(为了简单,可以直接写在启动类内部):

@Service

public class ConsumerService{

@SentinelResource(“doGetResource”)

public String doGetResource(){

return “doGetResource”;

}

}

接下来我们在/consumer/doRestEcho1对应的方法中对ConsumerService中的doGetResource方法进行调用(应用consumerService对象之前,要先在doRestEcho01方法所在的类中进行consumerService值的注入)。例如:

@GetMapping(“/consumer/doRestEcho1”)

public String doRestEcho01() throws InterruptedException {

consumerService.doGetResource();

//Thread.sleep(200);

String url=“http://localhost:8081/provider/echo/”+server;

//远程过程调用-RPC

return restTemplate.getForObject(url,String.class);//String.class调用服务响应数据类型

}

其路由规则配置如下:

在这里插入图片描述

在这里插入图片描述

说明,流控模式为链路模式时,假如是sentinel 1.7.2以后版本,Sentinel Web过滤器默认收敛所有URL的入口上下文(sentinel_spring_web_context),因此互连限流不生效,需要在application.yml添加如下语句来关闭URL PATH聚合(了解,可以自己尝试):

sentinel:

web-context-unify: false

修改配置以后,重新sentinel,并设置链路流控规则,然后再频繁对链路/consumer/doRestEcho1进行访问,检测是否会出现500异常。

在这里插入图片描述

设计限流效果(了解)


此模块做为课后了解内容,感兴趣自学即可.

快速失败

流量达到指定阀值,直接返回报异常。(类似路前方坍塌,后面设定路标,让后面的车辆返回)

WarmUp (预热)

WarmUp也叫预热,根据codeFactor(默认3)的值,(阀值/codeFactor)为初始阈值,经过预热时长,才到达设置的QPS的阈值,假如单机阈值为100,系统初始化的阈为 100/3 ,即阈值为33,然后过了10秒,阈值才恢复到100。这个预热的应用场景,如:秒杀系统在开启的瞬间,会有很多流量上来,很有可能把系统打死,预热方式就是把为了保护系统,可慢慢的把流量放进来,慢慢的把阈值增长到设置的阈值。例如:

在这里插入图片描述

排队等待

从字面上面就能够猜到,匀速排队,让请求以均匀的速度通过,阈值类型必须设成QPS,否则无效。比如有时候系统在某一个时刻会出现大流量,之后流量就恢复稳定,可以采用这种排队模式,大流量来时可以让流量请求先排队,等恢复了在慢慢进行处理,例如:

在这里插入图片描述

小节面试分析


  • Sentinel是什么?(阿里推出一个流量控制平台,防卫兵)

  • 类似Sentinel的产品你知道有什么?(hystrix-一代微服务产品)

  • 你了解哪些限流算法?(计数器、令牌桶、漏斗算法,滑动窗口算法,…)

  • Sentinel 默认的限流算法是什么?(滑动窗口算法)

  • 你了解sentinel中的阈值应用类型吗?(两种-QPS,线程数)

  • Sentinel 限流规则中默认有哪些限流模式?(直连,关联,链路)

  • Sentinel的限流效果有哪些?(快速失败,预热,排队)

  • Sentinel 为什么可以对我们的业务进行限流,原理是什么?

我们在访问web应用时,在web应用内部会有一个拦截器,这个拦截器会对请求的url进行拦截,拦截到请求以后,读取sentinel 控制台推送到web应用的流控规则,基于流控规则对流量进行限流操作。

Sentinel降级入门

==================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值