问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

springcloud-gateway-源码之降级篇

发布网友 发布时间:2022-12-08 18:52

我来回答

1个回答

热心网友 时间:2023-09-21 18:07

这篇文章主要从源码的角度剖析gateway是这么对我们的请求进行降级的

springcloud-gateway 熔断降级也是基于hystrix实现的

Hystrix是Netflix开源的一个限流熔断的项目、主要有以下功能:

隔离(线程池隔离和信号量隔离):*调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。

优雅的降级机制:超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。

熔断:当失败率达到阀值自动触发降级(如因网络故障/超时造成的失败率高),熔断器触发的快速失败会进行快速恢复。

先来看一张图回顾下Hystrix熔断处理的过程

熟悉Hystrix的同学对这张图是不是很熟悉?

好了,回顾了Hystrix的流程之后,我们再正式探索下springcloud-gateway的熔断原理

首先springcloud-gateway的熔断是依赖filter实现的,给我们提供了一个名为HystrixGatewayFilterFactory的工厂类,这个类的apply方法返回一个GatewayFilter类的匿名对象来处理请求,我们来看下这个类的apply方法内容

这里红框出构建了RouteHystrixCommand对象,而HystrixObservableCommand的继承关系

可见它继承了HystrixObservableCommand这个类,是不是和上图完美契合呢?

源码中这个匿名的过滤器中调用了这个command.toObservable方法并监听其事件,最终调用的是AbstractCommand的toObservable方法

我们看下

跟进去发现调用了 applyHystrixSemantics方法如图

继续,发现调用OnError方法

再进入调用如下

不多说继续

最后回到RouteHystrixCommand的resumeWithFallback方法

留意红框处获取DispatcherHandler对象并调用其handle方法,

遍历handlerMappiing这里匹配的mapping为RouterFunctionMapping返回HandlerFunction对象,我这里是HystrixFallbackHandler对象

根据HystrixFallbackHandler对象匹配到HandlerFunctionAdapter并调用其handle方法跟进去最终调用的是HystrixFallbackHandler的handle方法

最后返回HandlerResult对象给DispatcherHandler,完成整个降级的过程。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
杭州水费多少一吨 昆明水价是多少钱一吨 昆明水费价格表 昆明水费收费标准2024 2024汕尾水费多少钱一吨 2024汕尾市水价标准 汕尾自来水收费标准 2021年深圳用水收费标准(附价格表) 什么是“环比”,与“同比”的区别是什么? “ 同比 “和“ 环比 “ 是什么意思? 什么属于金属行业 我的世界手机版最高版本多少?比0.17或1.0.0.7大,可以安装的,别说... 我的世界1.0版本在哪下我的世界1.0版本如何下载 我想"卧薪尝胆",但是"胆"用什么代替比较合适? hystrix熔断器的3种状态 搞笑的现代诗歌大全 ...买了24个桃子,大的4个一千克,小的6个一千克,估计大约重多少千克? 妈妈买了24个桃子,估计一下重多少千克大的4千克丨个,小的6千克|个? 3个桃子约重500克.24个桃子约重多少千克 万老师买了24个桃子,估计一下大约重多少千克? ...内衣一件一边有两个磁铁一边有一个磁铁另一件没有是怎么回事... 24个桃子大约多少千克的算式和答是什么 女子内衣磁铁的用途 汉邦工具怎么样?我想做代理, 汉邦工具是贴牌么 帮忙看一下甲状腺癌术后的化验指标 甲状腺癌已经全部切除,为什么还有甲状腺指标高呢? 甲状腺癌,甲状腺切除后服优甲乐,应血液检查那几项指标 暖玛士石墨烯是传销,暖玛士石墨烯是真的吗 上海英爽是流氓公司吗 峨眉山旅游!! 野鸡叫声诱捕音频效果怎么样 关于瑶琴的诗句 OPA2333的放大电路 汽车怎么摇车牌号? 摇车牌号怎么操作 贵广网络已缴费怎么只收到深圳一个台 个股里有大盘线吗 304,430不锈钢的AC1温度分别是多少? a股中w底涨幅最大的股票有哪些 奉贤区哪里有麻辣鸭头批发 2022年哪里鸭头拿货 金双启门怎么样 想在东南亚做业务,如果注册一个泰国公司用处大吗? 去奉贤区湖堤路399号怎么走? 企业为什么要及时注册商标 为什么要趁早注册商标 桂林博仕医院是什么医院? 桂林附近哪个医院最近?桂林博仕医院位置在哪? 广西脑博仕医院治失眠吗? 广西脑博仕医院精神分裂症?我需要一些这方面建议 广西脑博仕医院行吗?我有困难需要大家帮助下。 广西脑博仕医院神经衰弱症治疗? 广西脑博仕医院口碑?