SpringCloud-高级篇(三)
创始人
2024-06-02 10:22:19

目录:

(1)Feign与Sentinel的整合

(2)Sentinel实现线程隔离和熔断

           熔断策略-慢调用 

          熔断策略-异常比例  异常数


(1)Feign与Sentinel的整合

前面学习了限流的各种用法,限流可以降低服务的负载,从而避免服务因为过高并发而出现故障,服务不出现故障自然不会把故障传递给其他服务,从而避免了级联失败,限流是对服务故障的预防措施,但是如果服务已经出现了故障,就很容易把故障传递给依赖它的其他服务,这样很容易出现雪崩了,多以需要使用线程隔离、线程熔断避免级联失败

保护服务的调用者,应该在服务调用者在发起远程调用的时候去做隔离或者做熔断,在SpringCloud在远程调用的时候是基于Feign来实现的,所以我们要想实现隔离和降级,最好的办法是基于Feign去整合Sentinel去做隔离和降级

 通过在配置文件中添加,这样就可以我们的Sentinel可以自动的去监控Feign客户端,把它变成一个链路中的资源,这样一来就可以给它配置限流的规则,隔离的规则、降级的规则等

限流也好,服务被拒绝也好,服务器出现了故障,都是直接抛出一个异常 到前端,这种方式不够友好,给用户体验不好,比较好的处理方案是给用户一个好的提示,告诉他说这里出了什么事,或者返回默认的信息,这些就是失败降级的逻辑

用了Feign的客户端 

 编写返回逻辑:

 

我们的Feign没有在order-service模块里而是抽成了一个模块 

 

 

 加上fallbackFactory

 重启:先访问一下:

 有了Feign的请求路径

 

 (2)Sentinel实现线程隔离和熔断

 

 

扇出:我这个服务依赖于n个其他的服务,这个就叫扇出

 点击流控

 

测试: 

 

这里显示 是正常的因为我们做了逻辑处理,在控制台显示报错,返回一个空的用户 

 

多余的请求都被降级了 

 

 

熔断策略-慢调用 

 

更肥usercontroller:添加睡眠时间,触发熔断策略

 重启:

查询101,因为设置了睡眠,这条数据的响应时间在60毫秒以上了 

 

 查询102的时候,是非常快的,16毫秒,没有触发熔断

 配置降级规则,点击降级

 

就配置好了,降级规则了 

 

 狂刷5次查询101:

 

在访问102:

102本来可以查询到,但是在查询一次:出现问题,而且响应时间是非常的快,10毫秒就结束了,说明用户在查询订单的那一刻直接被熔断了,直接走降级逻辑返回null,所以响应时间没有边长反而变短了

 

 

 过了熔断时间后进入Half-Open:在重新刷新一次,成功了,进入到了Close状态

熔断策略-异常比例  异常数

 

 

修改 controller 

 

 重启:

查询102:会抛出异常:

 

配置熔断:重新配置点击降级按钮

 

 

 102连续访问5次:就会触发熔断规则

 此时访问103,就不能正常访问了:

 

 

 

相关内容

热门资讯

每日机构分析:12月12日 转自:新华财经•法兴银行:日本中性利率或小幅上移,但政策区间下限难言显著上调•摩根士丹利:若欧央行维...
河南金融监管局:河南省累计引入... 中经记者 陈晶晶 何莎莎 北京报道12月11日,国家金融监督管理总局河南监管局(以下简称“河南金融监...
辽宁沈阳:生产服务型国家智慧陆... 来源:环球网 近日,辽宁沈阳生产服务型国家智慧陆港项目主体结构全面封顶,标志着项目建设正式转入装饰装...
从“单兵作战”到“协同共治”,... (来源:上观新闻)每日闲暇,外卖骑手小陈都会来到“暖新坊”休息,这个由集装箱改造的驿站,让奔波的骑手...
首药控股:筹划境外发行股份(H... 首药控股12月12日公告,正在筹划发行境外股份(H股)并在香港联合交易所有限公司上市事宜。公司正与中...