服务雪崩及容错方案

一、服务雪崩是什么?

定义
  服务雪崩效应是一种因“服务提供者的不可用”(原因)导致“服务调用者不可用”(结果),并将不可用逐渐放大的现象。
  在这里插入图片描述

形成原因
服务雪崩的过程可以分为三个阶段:

服务提供者不可用;
重试加大请求流量;
服务调用者不可用;
服务雪崩的每个阶段都可能由不同的原因造成,总结如下:
在这里插入图片描述
应对策略
在这里插入图片描述

二、演示服务雪崩

2.1.修改 tomcat 的连接池 线程数量

	server:
	  port: 8090 # 服务端口
	  tomcat:
	    max-threads: 10 #tomcat的最大并发值修改为10,默认是200

2.2 安装 配置并发测试工具

使用 jmeter
在这里插入图片描述

三.常见容错方案有

要防止雪崩的扩散,我们就要做好服务的容错
常见的容错方案:隔离、超时、限流、熔断、降级

3.1 隔离

指的是系统按照一定原则划分若干个服务模块,各个模块之间相对独立、无强依赖,当有故障发生时,能将问题和影响隔离在某个模块内部,而不扩散风险,不波及其他模块,不影响整体的系统服务,如线程池隔离和信号量隔离
在这里插入图片描述

3.2 超时

指的是在上游服务调用下游服务的时候,设置一个最大响应时间,如果超过这个时间,下游未作出反应,就断开请求,释放掉线程,达到自我保护的目的。
在这里插入图片描述

3.3 限流

限制系统的输入和输出流量,达到保护系统目的。为了保证系统的稳固运行,一旦达到设置的阈值,就需要限流。
在这里插入图片描述

3.4 熔断

如果下游服务因为访问压力过大而影响变慢或者失败,上游服务为了保证系统整体可用性,可以暂时切断对下游服务的调用,这种局部牺牲,保全整体的措施就是熔断。
在这里插入图片描述
服务熔断的三种状态

  • 熔断关闭 Closed
    熔断没有故障时,熔断器所处的状态,对于调用方不做任何限制
  • 熔断开启 Open
    后续对该服务接口的调用不在经过网络,直接执行本地fallback方法
  • 半熔断Half-Open
    尝试恢复调用,允许有限的流量调用该服务,并且监控调用成功率,如果成功率达到预期,则说明服务已经恢复,进入熔断关闭,如果成功率很低,则重新进入熔断开启。

基本模式:
如果断路器状态为close,则调用断路器将调用supplier服务模块;
如果断路器状态为open则直接返回错误;
如果超时,我们将增加失败计数器,成功的调用会将其重置为零;
通过比较故障计数和阈值来确定断路器的状态;
在这里插入图片描述

3.5 降级

降级是为服务提供一个托底方案,一旦服务无法正常调用,就使用托底(备用)方案。
在这里插入图片描述
常用的降级策略如:熔断器降级,限流降级,超时降级,异常降级,平均响应时间降级等
在这里插入图片描述

  • 熔断器降级:即熔断器开启的时间直接熔断走降级的策略
  • 限流降级:对流量进行限制达到降级的效果,如:Hystrix中的线程池,信号量都能达到限流的效果
  • 超时降级:课时设置对应的超时时间如果服务调用超时了就执行降级策略,如:Hystrix中默认为1s
  • 异常降级:异常降级很简单就是服务出现异常了执行降级策略
  • 平均响应时间降级:服务响应时间持续飙高的时候实现降级策略,如Sentinel中默认的RT 上限是 4900 ms

参考链接: 参考:https://segmentfault.com/a/1190000020791119?utm_source=tag-newest.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jsxllht

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值