Sentinel降级操作

1.通过对feign调用的降级 如果访问失败,则返回另外的信息

正常的feign调用

@FeignClient(value = "gulimall-seckill",fallback = SeckillFeignServiceFallback.class)
public interface SeckillFeignService {/*** 写给商品服务的接口,查询秒杀服务信息* @param skuId* @return*/@GetMapping("/currentSeckillSkus/sku/seckill/{skuId}")R getSkuSeckillInfo(@PathVariable("skuId") Long skuId);
}

兜底方法返回另外的信息

/*** 如果feign调用失败返回的信息*/
@Component
public class SeckillFeignServiceFallback implements SeckillFeignService {@Overridepublic R getSkuSeckillInfo(Long skuId) {return R.error(500,方法调用失败);}
}

2.对代码进行访问控制,在可视化工具中对seckillSkus进行数据设置

@Overridepublic List<SecKillSkuRedisTo> getCurrentSeckillSkus() {//1.确定当前时间属于哪个秒杀场次long time = new Date().getTime();try(Entry seckillSkus = SphU.entry("seckillSkus")){//正常的业务代码-----}//然后在可视化工具中对这个代码进行限流控制设置}catch (BlockException e){System.out.println("资源被限流");}return null;}

3.统一config配置返回降级信息

*** 自定义流量控制请求失败后返回信息*/
@Configuration
public class SeckillSentinelConfig {public SeckillSentinelConfig(){WebCallbackManager.setUrlBlockHandler(new UrlBlockHandler() {@Overridepublic void blocked(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, BlockException e) throws IOException {R error = R.error(BizCodeEnum.TO_MANY_REQUEST.getCode(), BizCodeEnum.TO_MANY_REQUEST.getMsg());httpServletResponse.setCharacterEncoding("UTF-8");httpServletResponse.setContentType("application/json");httpServletResponse.getWriter().write(JSON.toJSONString(error));}});}
}

4.使用注解结合可视化操作进行控制

 public List<SecKillSkuRedisTo> blockHandler(BlockException e){log.error("getCurrentSeckillSkus被限流了");return null;}/*** 返回当前时间段可以参加秒杀的商品信息* Entry seckillSkus = SphU.entry("seckillSkus"对代码进行降级* @return*/@SentinelResource(value = "getCurrentSeckillSkus",blockHandler = "blockHandler")@Overridepublic List<SecKillSkuRedisTo> getCurrentSeckillSkus() {return null;}

 @SentinelResource(value = "getCurrentSeckillSkus",blockHandler = "blockHandler")

value的名称是可视化页面的限流处理名称

blockHandler的内容是限流降级后的操作方法

两个方法返回类型要一致

5.整合sentine和gateway

引入依赖

<!--        sentinel和gateway整合--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId><version>2.1.0.RELEASE</version></dependency>

版本需要和common中的阿里依赖一致

<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

config文件

@Configuration
public class SentinelGatewayConfig {public SentinelGatewayConfig(){GatewayCallbackManager.setBlockHandler(new BlockRequestHandler() {@Overridepublic Mono<ServerResponse> handleRequest(ServerWebExchange serverWebExchange, Throwable throwable) {R error = R.error(BizCodeEnum.TO_MANY_REQUEST.getCode(), BizCodeEnum.TO_MANY_REQUEST.getMsg());String jsonString = JSON.toJSONString(error);Mono<ServerResponse> body = ServerResponse.ok().body(Mono.just(jsonString), String.class);return body;}});}
}

也可以配置相关的信息

配置网关返回的状态码
spring.cloud.sentinel.scg.fallback.response-status=400

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/642013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024茶饮品牌如何出圈,媒介盒子分析

随着新式茶饮的消费场景更加多元化&#xff0c;品类不断拓宽&#xff0c;消费者对新式茶饮的热情也是只增不减。居民可支配收入水平不断上升&#xff0c;居民消费升级为新式茶饮的发展也提供了良好基础&#xff0c;今天媒介盒子就来和大家聊聊&#xff1a;2024茶饮品牌如何出圈…

win10系统 pdf 文件无法正常预览

网上也看了不少办法&#xff0c;修改注册表什么的&#xff0c;太麻烦了&#xff0c;尝试了一下下载Adobe Acrobat Reader&#xff0c;安装后就可以成功预览显示啦&#xff01;对&#xff0c;就是这么简单&#xff01;Adobe Acrobat Reader下载链接&#xff1a;link

随机森林中每个树模型分裂时的特征选取方式

随机森林中每个树模型分裂时的特征选取方式 随机森林中每个树模型的每次分裂都是基于随机选取的特征子集进行分裂的。 具体来说&#xff0c;对于每个决策树&#xff0c;在每个节点的分裂过程中&#xff0c;随机森林算法会从原始特征集合中随机选择一个特征子集&#xff0c;然…

vulhub之Zabbix篇

CVE-2016-10134--SQL注入 一、漏洞介绍 zabbix是一款服务器监控软件&#xff0c;其由server、agent、web等模块组成&#xff0c;其中web模块由PHP编写&#xff0c;用来显示数据库中的结果。 漏洞环境 在vulhub靶场进行复现&#xff0c;启动zabbix 3.0.3。 二、复现步骤 1…

[代码随想录2]51单片机1T/12T到底怎么选?

为什么说51单片机怎么选&#xff1f; 时至今日&#xff0c;44年来51单片机自强不息&#xff0c;怎么描述它&#xff0c;堪称控制芯片中的王者&#xff01;&#xff01;&#xff01; 假设你21岁大学毕业进入社会&#xff0c;交社保交到今天恭喜你成功退休了214465 传统即标准5…

搭建一个简单的Spring Demo

要学习Spring 源码&#xff0c;一个是从Spring GitHub 上去down源码&#xff0c;然后倒入IDEA编译&#xff0c;但这种方法费时费力&#xff0c;如果你不需要对Spring 源码进行修改后&#xff0c;再编译的话&#xff0c;直接搭建一个Spring Demo 的Maven项目&#xff0c;引入Spr…

代理设计模式JDK动态代理CGLIB动态代理原理

代理设计模式 代理模式&#xff08;Proxy&#xff09;&#xff0c;为其它对象提供一种代理以控制对这个对象的访问。如下图 从上面的类图可以看出&#xff0c;通过代理模式&#xff0c;客户端访问接口时的实例实际上是Proxy对象&#xff0c;Proxy对象持有RealSubject的引用&am…

使用DockerFile构建镜像与镜像上传

目录 前言&#xff1a;为什么要使用Dockerfile &#xff1f; DockerFile构建镜像 1、构建基础对象 2、Dockerfile文件结构 3、构建Dockerfile文件镜像 二、镜像上传&#xff08;阿里云&#xff09; 前言&#xff1a;为什么要使用Dockerfile &#xff1f; 首先Dockerfile …

IOS-生命周期-Swift

目录 App生命周期应用状态未运行——Not running未激活——Inactive激活——Active后台——Backgroud挂起——Suspended 关系图生命周期方法相关方法注意在其他地方监听 ViewController生命周期UIView生命周期 App生命周期 应用状态 App主要有五种状态&#xff0c;分别是&…

Axure RP 9 动态面板

目录 轮播图绘制 多种方式登录 前言: 轮播图绘制、多种方式登录界面绘制 轮播图绘制 首先绘制一个动态面板 在概要区域选中动态面板进入State1面板中插入图片绘制 双击图片绘制插入本地图片&#xff0c;右键State1重复状态并更改图片 点击交互面板新建交互将需要添加…

RuoYi-Cloud本地部署--详细教程

文章目录 1、gitee项目地址2、RuoYi-Cloud架构3、本地部署3.1 下载项目3.2 idea打开项目3.3 启动nacos3.4 若依数据库准备3.5 启动redis3.6 修改nacos中的各个模块的配置文件3.7 启动ruoyi前端项目3.8 启动各个微服务模块 4、启动成功 1、gitee项目地址 https://gitee.com/y_p…

http网络编程——在ue5中实现文件传输功能

http网络编程在ue5中实现 需求&#xff1a;在unreal中实现下载功能&#xff0c;输入相关url网址&#xff0c;本地文件夹存入相应文件。 一、代码示例 1.Build.cs需要新增Http模块&#xff0c;样例如下。 PublicDependencyModuleNames.AddRange(new string[] { "Core&q…

Whatsapp 相关

Whatsapp 相关 本篇文章主要记录下whatsapp 的一些文件信息的存储路径. 1: 应用包名 whatsapp的包名如下: com.whatsapp 2: 注册信息 whatsapp的注册信息存储路径如下: /data/data/com.whatsapp/shared_prefs/registration.RegisterPhone.xml内容如下: <?xml versio…

Android:RecyclerView自由拖动item

原生就自带有可拖动item的工具&#xff1a;ItemTouchHelper 看下效果&#xff1a; 可拖动RecyclerView预览效果 接下来我们看如何使用。 1、自定义ItemTouchHelper的callback&#xff0c;用来限制是否可以拖动&#xff0c;以及拖动之后的位置更新&#xff1a; 其中判断条件中…

python的__doc__

直接问GPT的回答如下&#xff0c;但是提供的例子不够好。 __doc__ 是 Python 中用于保存对象&#xff08;模块、类、函数等&#xff09;文档字符串的特殊属性。 文档字符串&#xff08;docstring&#xff09;是编写在代码中用于文档自述的字符串。它通常用于提供关于代码目的…

python常见函数-笔记

lambda函数用法 匿名函数lambda&#xff1a;是指一类无需定义标识符&#xff08;函数名&#xff09;的函数或子程序。 所谓匿名函数&#xff0c;通俗地说就是没有名字的函数&#xff0c;lambda函数没有名字&#xff0c;是一种简单的、在同一行中定义函数的方法。 lambda函数一…

锂电池SOC估计 | PatchTST时间序列模型锂电池SOC估计

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池SOC估计 | PatchTST时间序列模型锂电池SOC估计 采用新型PatchTST时间序列模型预测锂电池SOC&#xff0c;送锂电池数据集 可替换数据集&#xff0c;实现负荷预测、流量预测、降雨量预测、空气质量预测等其他多种…

k8s之ingress

ingress基于域名进行映射&#xff0c;把url(http https)的请求转发到service&#xff0c;再由service把请求转发到每一个pod ingress只要一个或者少量的公网ip或者LB&#xff0c;可以把多个http请求暴露到外网&#xff0c;七层反向代理 理解为service的service&#xff0c;是…

OSPF基础华为ICT网络赛道

6.1.OSPF协议概述 由协议之中OSPF(Open Shortest Path First,开放式最短路径优先)协议是使用场 景非常广泛的动态路由协议之一。 OSPF在RFC2328中定义&#xff0c;是一种基于链路状态算法的路由协议。 静态路由是由工程师手动配置和维护的路由条目&#xff0c;命令行简单明确…

年末怒赚一笔,程序员快码住!趁热接单

元旦已过&#xff0c;龙年将至。 有钱没钱&#xff0c;回家过年。 话说回来&#xff0c;年关将至&#xff0c;农历的2023即将落下帷幕。天气渐寒&#xff0c;你的钱包是否也让你心生寒意&#xff1f;年初立下的赚钱flag是否优雅地实现了? 如果flag都倒了&#xff0c;你先别…