最新要闻
- 全球今热点:功耗只有65W!14核心i5-13500偷跑:解锁到154W太生猛了
- 【环球热闻】实拍日本多地暴雪:1.6米高积雪掩埋车辆、14人死亡
- Redmi Buds 4青春版耳机亮相:单耳轻至3.9g 活力4色
- 环球快资讯:《阿凡达2》中的“海怪”:原来真的存在于地球!
- 天天快消息!男生考研分到高中母校被班主任监考:网友一句话扎心
- 天天信息:山东小伙用1个月微缩30倍农村老屋:惟妙惟肖
- 每日播报!2022年优化最差游戏榜单出炉:《巫师3》次世代版上榜
- 世界通讯!能跑虚幻5特效!Centerpiece机械键盘自带CPU+GPU
- 环球滚动:康辉被调侃为“天选打工人”:连上六天班、领带惹眼
- 世界百事通!Redmi K60首款素皮机身揭秘:参照跑车内饰 拟真缝线工艺
- 上海今起对快递外卖每人每天补贴60元 元旦春节补贴150元
- 全球观焦点:15.5小时!阿里云史上最长大规模中断:官方公告四大问题
- 不吃饭光吃补充剂 真的可以避免营养缺乏吗?
- 历时9个月 时速350高铁成功“穿海入城”
- 别再说RTX 4090功耗比A卡高了:4K 120帧仅需150W
- 简讯:权威结果出炉:今年画质最好的游戏有答案了
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
每日快讯!统一异常处理——BlockException
五.统一异常处理—BlockException
在上述规则测试中,当违反规则时,出来的异常信息页面不够友好和统一,我们可以通过设置统一的异常处理类,针对不同规则显示不同异常信息。
创建一个配置类,实现BlockExceptionHandler接口
【资料图】
@Componentpublic class MyBlockExceptionHandler implements BlockExceptionHandler { @Override public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, BlockException e) throws Exception { ResponseResult rs=null; if(e instanceof FlowException) rs= Response.createFailResp(-1,"接口限流了"); else if(e instanceof DegradeException) rs=Response.createFailResp(-2,"服务降级了"); else if(e instanceof ParamFlowException) rs=Response.createFailResp(-3,"参数限流了"); else if(e instanceof AuthorityException) rs=Response.createFailResp(-4,"权限规则不通过"); else if(e instanceof SystemBlockException) rs=Response.createFailResp(-5,"系统保护"); httpServletResponse.setContentType("application/json;charset=utf-8"); httpServletResponse.getWriter().write(JSON.toJSONString(rs)); }}
添加规则测试:
六 @SentinelResource注解详解
通过前面的学习,我们了解到通过Sentinel除了可以控制对Spring Mvc接口层级的控制,也可以对service层的某个方法控制,也就是说在我们实际项目开发时不仅仅限于接口,可能对于某个方法的调用限流,对于某个外部资源的调用限流等都希望做到控制。那么如何使用@SentinelResource注解灵活的定义控制资源以及如何配置控制策略。我们来系统学习一下。
1.自定义资源点
我们可以对这个资源点做限流处理
2 实现异常处理
默认情况下,Sentinel对控制资源的限流处理是直接抛出异常。设置了统一异常处理BlockExceptionHandler也会发现对非控制层的资源没有用,这样对用户交流不友好,我们需要处理一下@SentinelResource资源的异常信息。
@SentinelResource资源的异常处理有两种方式:
blockHandler:sentinel定义的失败调用或限制调用,若本次访问被限流或服务降级,则调用blockHandler指定的接口
fallback:失败调用,若本接口出现未知异常,则调用fallback指定的接口。
当两个都配置时,也就是当出现sentinel定义的异常时,调用blockHandler,出现其它异常时,调用fallback。
2.1 blockhandler 的使用
blockhandler 定义当资源内部发生了BlockException(也就是sentinel定义的失败异常或限制异常),应该走的处理逻辑。
要求:
1.当前方法的返回值和参数要和原方法一致
2.允许在参数列表的最后加入一个参数BlockException,用来接收原方法中发生的异常。
2.2 fallback的使用
要求:
1.当前方法的返回值和参数要和原方法一致
2.允许在参数列表的最后加入一个参数Throwable,用来接收原方法中发生的异常。
2.3 测试
3.怎么将异常处理放在资源类的外面
如果将所有的异常处理都放在资源类里面,会导致类很臃肿,不利于维护,外面可以将异常处理放在类外面
4.@SentinelResource的其它属性
value: Sentinel资源的名称,我们不仅可以通过url进行限流,也可以把此值作为资源名配置,一样可以限流。entryType: 条目类型(入站或出站),默认为出站(EntryType.OUT)resourceType: 资源的分类(类型)blockHandler: 块异常函数的名称,默认为空blockHandlerClass: 指定块处理方法所在的类默认情况下, blockHandler与原始方法位于同一类中。 但是,如果某些方法共享相同的签名并打算设置相同的块处理程序,则用户可以设置存在块处理程序的类。 请注意,块处理程序方法必须是静态的。fallback: 后备函数的名称,默认为空defaultFallback: 默认后备方法的名称,默认为空defaultFallback用作默认的通用后备方法。 它不应接受任何参数,并且返回类型应与原始方法兼容fallbackClass: fallback方法所在的类(仅单个类)默认情况下, fallback与原始方法位于同一类中。 但是,如果某些方法共享相同的签名并打算设置相同的后备,则用户可以设置存在后备功能的类。 请注意,共享的后备方法必须是静态的。exceptionsToTrace: 异常类的列表追查,默认 ThrowableexceptionsToIgnore: 要忽略的异常类列表,默认情况下为空。
七 Sentinel整合OpenFeign实现服务降级(服务容错)
如果一个服务(服务消费者)调用了另一个服务(服务生产者),服务生产者有异常,会导致服务消费者出错,我们希望不仅仅只是显示错误,而是能启动熔断器,对服务消费者做降级(容错)处理。
那么应该怎么实现呢?
1.添加jar包
我们当前项目里已添加
org.springframework.cloud spring-cloud-starter-openfeign
2.添加配置信息
在服务消费者的配置文件中添加
3.添加降级处理类
4.在feign客户端关联对应的降级处理类
5.在服务提供者中模拟一个异常
比如 int i=1/0;
6.测试
八 Sentinel 规则持久化
Sentinel Dashboard中添加的规则是存储在内存中的,只要项目一重启规则就丢失了
我们可以将规则持久化到nacos中,在nacos中添加规则,然后同步到dashboard中.
方法如下:
1.添加jar包
com.alibaba.csp sentinel-datasource-nacos
2.在nacos配置中心添加配置文件
[ { "resource":"/goods", "limitApp":"default", "grade":1, "count":2, "strategy":0, "controlBehavior":0, "clusterMode":false }]
注意:
配置格式:选择 json 选项
配置内容:
resource: 资源名称
limitApp: 来源应用
grade: 阈值类型,0表示线程,1表示QPS
count: 单机阈值
strategy: 流控模式,0表示直接,1表示关联,2表示链路
controlBehavior: 流控效果,0表示快速失败,1表示Warm Up,2表示排队等待
clusterMode: 是否集群
3.修改微服务配置信息,添加sentinel规则配置信息到微服务的配置文件中
4.重启服务
- 配置信息查询
https://github.com/alibaba/Sentinel/wiki
-
环球快资讯丨Codeforces 983 D Arkady and Rectangles 题解
题目链接挺有意思的数据结构题,题面看着像个板子,其实还是有不少学问的。平面上一堆矩形的题目常见套...
来源: 每日快讯!统一异常处理——BlockException
环球快资讯丨Codeforces 983 D Arkady and Rectangles 题解
全球今热点:功耗只有65W!14核心i5-13500偷跑:解锁到154W太生猛了
全球视点!教你用JavaScript实现调皮的字母
【新视野】PHP Composer 虚拟依赖包 - 实现按需载入钉钉对应功能模块的 php sdk
全球新动态:Safari浏览器对SVG中的
标签支持不友好,渲染容易错位 【环球热闻】实拍日本多地暴雪:1.6米高积雪掩埋车辆、14人死亡
Redmi Buds 4青春版耳机亮相:单耳轻至3.9g 活力4色
环球快资讯:《阿凡达2》中的“海怪”:原来真的存在于地球!
AcWing241. 楼兰图腾
天天速递!CentOS7配置静态IP
天天快消息!男生考研分到高中母校被班主任监考:网友一句话扎心
天天信息:山东小伙用1个月微缩30倍农村老屋:惟妙惟肖
MAUI新生6.1-Shell导航视觉层次结构
每日播报!2022年优化最差游戏榜单出炉:《巫师3》次世代版上榜
世界通讯!能跑虚幻5特效!Centerpiece机械键盘自带CPU+GPU
环球滚动:康辉被调侃为“天选打工人”:连上六天班、领带惹眼
世界百事通!Redmi K60首款素皮机身揭秘:参照跑车内饰 拟真缝线工艺
上海今起对快递外卖每人每天补贴60元 元旦春节补贴150元
全球观焦点:15.5小时!阿里云史上最长大规模中断:官方公告四大问题
不吃饭光吃补充剂 真的可以避免营养缺乏吗?
历时9个月 时速350高铁成功“穿海入城”
别再说RTX 4090功耗比A卡高了:4K 120帧仅需150W
简讯:权威结果出炉:今年画质最好的游戏有答案了
炉石关服前夕:网易同类卡牌游戏《秘境对决》宣布恢复运营
今日最新!洛谷 P5721 【入门3】循环结构
【pygame游戏】用Python实现一个蔡徐坤大战篮球的小游戏,可还行?【附源码】
环球热议:大货车雪地滑坡 山东小伙神操作“拔草相助”!后续令网友感动
超长寿命TLC闪存 金邦2TB PCIe 4.0硬盘679元:5GB/s速度
热门:再不努力就要归零 2nm工艺成日本半导体最后的机会
教你用JavaScript实现搜索展开
天天新资讯:李斌:创业的没有几个真的是骗子 要多鼓励
AMD 8年真身接连被破 Intel 13代酷睿“开挂“:超频无敌了
【焦点热闻】索尼被质疑虚假宣传:上市两年后 PS5仍不支持8K
中国千年酒文化传承 酒祖杜康白酒大促:礼盒装110两瓶
今日聚焦!李斌再回应蔚来数据泄露:会承担所有责任 哪怕破产也不妥协
环球微动态丨「杂题乱写」AtCoderDP26 题
(二)elasticsearch 源码目录
【新视野】碳纤维纹理后盖!Redmi K60回归硬核设计:刀锋战士理念
速看:无惧严寒!网易严选牛奶绒床品四件套:159元起
新的全国铁路列车运行图实行:石家庄至北京将实现一小时通达
新版以太坊Ethereum库ethersV5.0配合后端Golang1.18实时链接区块链钱包(Metamask/Okc)以及验签操作
环球关注:高速上飞来钢管插进驾驶室:差点害死驾驶员
热消息:联想:小红点会在ThinkPad笔记本上永远存在
天天头条:正式发布前 盒装RTX 4070 Ti线下偷跑:售价感人
天天热资讯!保时捷为Taycan推出全新充电器:充电速度提升一倍 改装费用上万
环球通讯!Epic喜加一!免费送大作《地铁》:下款将是《死亡搁浅》
每日头条!2023考研报告发布:“逆向考研”成亮点!附报告源文
世界快播:锐龙7000系列三款非X型号曝光:价格感受下
囧!日本老师暴打初二男生 因学“左手定则”时比中指
老人故意推倒摩托车损坏被抓:车主回应希望判决不手软 惯犯了
焦点速递!Sentinel的规则
天天热议:一加11下周官宣:安卓性能天花板
MAUI新生5.3-Layout布局类控件难点
国产OS统信UOS家庭版22.0明年1月发布:免费用1年 可与Windows共存
全靠移民硬撑?美国人口增长率仍贴近历史低位
视点!18岁女生因焦虑2个月减25斤:最终瘦成95斤
天天消息!男子无聊送外卖发现2小时挣150:开豪车也干
天天精选!Kubernetes监控手册03-宿主监控实操
今日观点!一路用到安卓17?OPPO将提供4年ColorOS重大更新
环球即时看!同价位罕见!雷军:Redmi K60系列这三款全都上2K直屏
微资讯!“联盟号”发生泄漏:俄罗斯或派遣救援飞船接回机组人员
世界播报:cmake-4
Redmi可穿戴新品公布:手表、耳机全都有
行业最快!红魔8 Pro系列搭载520Hz游戏体感肩键:毫秒级触控响应
《阿凡达2:水之道》国内票房突破6亿:卡梅隆光环褪色 回本太难
每日焦点!终结起火、爆炸困扰!红旗全固态电芯试制完成:10Ah级大容量
27款笔记软件的介绍
全球视点!ts10_使用webpack打包ts文件3
环球今日报丨C#封装GRPC类库及调用简单实例
百事通!Spring IOC官方文档学习笔记(四)之依赖项(下)
【天天报资讯】Web 标准 & W3C 规范
今日热闻!研究人员在柬埔寨发现超级蚊子:对杀虫剂免疫
焦点关注:C++基础3
焦点滚动:惧怕《阿凡达2》 输不起?郭帆回应《流浪地球2》撤档 春节见
播报:Redmi K60全系标配2K柔性屏 专家:国产技术已破局超越
环球即时看!以小博大外小内大,Db数据库SQL优化之小数据驱动大数据
全球快资讯丨最高799元 迪士尼再发布涨价公告:开业以来已涨4次
质感一绝!一加11证件照公布:双曲面屏、流动天阶设计
速递!共计100小时:全球首架C919自12月26日起验证飞行
ts09_使用webpack打包ts文件2
环球热头条丨2022贺岁档票房破10亿!《阿凡达:水之道》5.9亿元能拯救院线吗
曾因“双标”遭网友痛批:好丽友旗舰店发布闭店公告
全球热头条丨AcWing1134/洛谷P1144 最短路计数
WPF开发之Prism详解【内附源码】
不愧是宝马 因机油渗漏:近500台S1000系列摩托车被召回
最新快讯!Codeforces 1097 G Vladislav and a Great Legend 题解 (DP)
焦点日报:肾脏衰竭 球王贝利病情继续恶化:家人开始筹备葬礼
02.关于线程你必须知道的8个问题(上)
当前头条:喜提安卓13!小米平板5/Pro 12.4推送MIUI 14开发版:支持光子引擎
每日热文:SSD/内存白菜价难持续:国产厂商被制裁 三星等大厂减产提价
天天热点!我的2022年个人总结
环球焦点!FreeSWITCH学习笔记:EventSocket
AMD RX7900被吐槽空气卡 溢价千元普遍:国内用户持币等 买它还是4080?
【世界播资讯】小米又一爆款诞生!小米净水器销量破500万台
热推荐:新冠后丧失嗅觉的关键原因找到了 科学家:长期失灵也能恢复
环球通讯!3199元起 爱奇艺奇遇MIX VR一体机发布:4K级3000吋巨幕 支持Steam串流
焦点快播:趁早加满!下轮国内油价上调几成定局
影驰发布全球第三款8GHz DDR5内存:如此"光污染" 绝了
焦点速讯:电解质水到底有没有用?我来告诉你