-
springcloud11:Hystrix服务降级(断路器)
- 分布式系统面临问题:
80调8001,8001调用8002等等链路调用,如果其中一个服务超时情况,服务雪崩:需要有服务降级。服务熔断:如果正常调用失败需要有备选方案。 - Hystrix能干什么?
服务降级
服务熔断
接近实时监控 - Hystrix停更进维
进入维护阶段 - Hystix重要概念
服务降级:fallback (对方系统不可用了,需要有备选方案)发生情况:超时,线程池打满,程序运行异常。
服务熔断:break(保险丝达到最大服务访问后,直接拒绝访问,调用服务降级)(服务降级-进而熔断-恢复调用链路)
服务限流:flowlimit(如果流量拥挤,安排排队) - 案例配置
controller中的服务 一个很快 一个访问三秒
此时问题不大
高并发的压力测试 20000个来访问三秒服务
此时访问很快的也会很慢(转圈圈)
为什么会被卡死?
tomcat的默认工作线程满了 - 解决上述问题?
对方服务超时(宕机)后,调用者不能卡死,必须有服务降级
调用者自己出故障有自我要求,自己处理降级 - 如何处理降级?
- 解决对方服务器超时的服务降级
8001 先从自身找问题,设置自身调用时间,超过了时间有兜底方法处理,做服务降级fallback(服务端降级保护)
80测找问题,自己对自己的降级保护,(客户端降级保护)
上述方法 代码耦合,每个方法都有兜底方法即代码膨胀
解决方法:
设置全局兜底方法解决代码膨胀问题
实现@Feign的接口中的方法的类来统一fallback定义和调度
- 服务熔断(服务熔断也会触发服务降级)
断路器:保险丝
熔断:检测到服务差错,会进行服务降级,但是服务正常,恢复调用链路 - 整理
熔断打开:请求不会调用服务(直接服务降级)
熔断关闭:服务正常进行
熔断半开:请求成功且符合规则认为当前服务正常
涉及参数:
时间参数:休眠时间,即当休眠时间到期,才会从关闭到半开状态的转换
请求总数:满足请求总数
错误百分比:判断是否超过总数的百分的错误,超过则开启断路器 - 服务限流:高级篇alibaba的sentinal讲解
- hystrix的工作流程图
- 图形化监控(自己搭建图形化监控)
-
相关阅读:
Linux:多行shell命令转成单行命令形式的方法
如何使用Github发布私有NPM包
一文带你了解 Spring 的@Enablexxx 注解
vueRouter的$route和$router的解析和运用场景
小试单一职责原则
spring boot +Scheduled 动态定时任务配置
给单号进行标色并去色的方法
APP或小程序突然打开显示连接网络失败,内容一片空白的原因是,SSL证书到期啦,续签即可
Netty编解码器
Linux知识
-
原文地址:https://blog.csdn.net/qq_44724899/article/details/128012002