栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Day05-Sentinel限流熔断应用实践

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Day05-Sentinel限流熔断应用实践

Sentinel简介 背景分析

Sentinel限流入门

第一步:在提供方sca-provider配置sentinel依赖

 第二步:配置

第三步:创建类

 第四步:启动sca-provider服务,然后对指定服务进行访问

第五步:刷新sentinel 控制台,实时监控信息

 Sentinel限流入门实践

我们设置一下指定接口的流控(流量控制),QPS(每秒请求次数)单机阈值为1,代表每秒请求不能超出1次,要不然就做限流处理,处理方式直接调用失败。

第一步:设置限流策略

第二步:设置限流策略

第三步:反复刷新访问消费端端服务,检测是否有限流信息输出

 第四步:查看Sentinel控制台,会发现有拒绝的次数

Sentinel流控规则分析 阈值类型
  • QPS(Queries Per Second):当调用相关url对应的资源时,QPS达到单机阈值时,就会限流。
  • 线程数:当调用相关url对应的资源时,线程数达到单机阈值时,就会限流。

设置限流模式

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

直接模式

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

 关联模式

当关联的资源达到阈值,就限流自己。例如设置了关联资源为/ur2时,假如关联资源/url2的qps阀值超过1时,就限流/url1接口(是不是感觉很霸道,关联资源达到阀值,是本资源接口被限流了)。这种关联模式有什么应用场景呢?我们举个例子,订单服务中会有2个重要的接口,一个是读取订单信息接口,一个是写入订单信息接口。在高并发业务场景中,两个接口都会占用资源,如果读取接口访问过大,就会影响写入接口的性能。业务中如果我们希望写入订单比较重要,要优先考虑写入订单接口。那就可以利用关联模式;在关联资源上面设置写入接口,资源名设置读取接口就行了;这样就起到了优先写入,一旦写入请求多,就限制读的请求。
第一步:在ProviderSentinelController中添加一个方法

 第二步:在sentinel中做限流设计

第三步:打开两个测试窗口,对/provider/sentinel02进行访问,检查/provider/sentinel01的状态

 链路模式

链路模式只记录指定链路入口的流量。也就是当多个服务对指定资源调用时,假如流量超出了指定阈值,则进行限流。被调用的方法用@SentinelResource进行注解,然后分别用不同业务方法对此业务进行调用,假如A业务设置了链路模式的限流,在B业务中是不受影响的。现在对链路模式做一个实践,
第一步:在指定包创建一个ResourceService类,

 第二步:在ProviderSentinelController中添加一个方法,

第三步::在sentinel中配置限流规则

第四步:设置链路流控规则后,再频繁对限流链路进行访问,检测是否会出现500异常

 后端会报错

 说明,流控模式为链路模式时,假如是sentinel 1.7.2以后版本,Sentinel Web过滤器默认会聚合所有URL的入口为sentinel_spring_web_context,因此单独对指定链路限流会不生效,需要在bootstrap.yml添加如下语句来关闭URL PATH聚合

当我们也可以基于@SentinelResource注解描述的方法进行限流后的异常进行自定义处理,其步骤如下:

第一步:定义blockHandlerClass

第二步:修改@SentinelResource注解中的属性定义,

 第三步:在controller方法中,调用@Sentinel注解描述的方法

 第四步:访问网页并查看

 如何将Sentinel限流中自定义内容?

第一步:在idea中通过ctrl+n查找

 第二步:通过ctrl+h查找BlockExceptionHandler接口中的类,找到

 第三步:自定义一个类来实现BlockExceptionHandler接口

 第四步:在sentinel中设置限流后访问,出现自定义内容

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/679006.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号