【图解秒杀系列】秒杀技术点——隔离、熔断、限流、降级

【图解秒杀系列】秒杀技术点------隔离、熔断、限流、降级

隔离

隔离的思想其实就是舱壁模式,这在Docker中有所体现。在Docker中,容器与容器间互相隔离互不影响。一个容器有它独立的与外界隔离的环境与资源,包括CPU、内存等,如果容器中的服务出问题,比如占用资源过高,也不会影响到别的容器中的服务。

我们的秒杀系统同样可以应用这种思想。秒杀系统的隔离是指单独部署一套秒杀服务,与常规的服务区分开,这样即使秒杀服务出了问题,原先的服务也不会受影响。

单独部署一套秒杀服务,看起来成本有点过高,但是现在是云计算时代,很多企业都在云上部署自己的服务,不像过去自己采购机器在物理机上部署服务。现在各云服务厂商都有相关的服务,比如阿里云有ECS和云容器服务,我们只要在上面租用相关的服务器即可。

而且在云上部署服务还有一个好处,就是弹性扩缩容的机制。当服务器压力过大时,可以通过弹性扩容动态地临时扩充服务器,以应对暂时地流量洪峰,等压力降下来之后,又可以自动缩容。

熔断

熔断机制可以有效保护我们的系统不会被一些异常服务拖垮。比如某些服务不可用或者响应超时,如果没有熔断措施的保护的话,就有可能造成服务雪崩。

当我们为我们的系统增加了熔断措施的保护之后,就可以保护调用方服务免受被调用方的不可用而导致自己也受影响。

熔断功能通过增加一个断路器实现。

断路器一般有三个状态:关闭、打开、半开。

  • 关闭状态:如果一个开关处于闭合状态,此时接口可以执行正常的逻辑处理。
  • 打开状态:如果一个开关处于打开状态,此时接口的所有请求都会被降级处理。
  • 半开状态:处于半开状态的断路器,允许一个请求执行正常的逻辑处理,这相当于是试探性的调用一下,如果能正常返回结果,那么断路器恢复为闭合状态,否则变为打开状态。

断路器的三种状态间的转换如下图:

当断路器处于打开状态时,由于接口的正常逻辑无法执行,此时就是进行降级处理。

目前市面上的开源中间件中,Hystrix和Sentinel都有这样的功能。

限流

限流也叫流控,也就是流量控制,作用是限制流入服务接口的流量大小。每一个服务或接口能扛住的流量大小都是有上限的,如果超过了这个上限,就有可能造成性能下降或服务不可用。

限流通过在服务或接口前添加限流器实现。如果流量没有超过限流器的阈值,那么请求可以正常通过;如果流量超过限流器的阈值,那么超过阈值的这一部分请求就要被拦截掉。

被流控的请求,可以报错返回错误信息,也可以走降级处理的逻辑。

限流器的限流算法包括:

  • 简单时间窗算法
  • 滑动时间窗算法
  • 漏桶算法
  • 令牌桶算法

降级

当我们的系统经过层层优化之后,最终还是扛不住高并发的压力的话。可以考虑进行降级处理。

也就是说停掉我们系统中一些非核心服务,保证核心服务的正常运行,也就是丢车保帅。通过下线掉非核心服务,原先这些服务所占用的服务器资源(比如CPU、内存)等就可以腾出来,供核心服务使用。

这是服务级别的降级,还有接口级别的降级。

接口级别的降级是指,原有的逻辑无法正常执行,转而执行的一段备用的有损的逻辑。

比如服务A的接口调用服务B的接口发生异常或超时,那么服务A的接口进行降级逻辑,调用本地的一个方法,返回默认的数据。

除此以外,断路器打开,那么也会执行降级逻辑,而不会走正常逻辑。

相关推荐
wtGEOyh2 分钟前
2026,劲豆种业如何用生物育种“豆”振中国?
中间件
陈随易6 小时前
pm2 替代品,nodejs&bun 线上部署必备工具
前端·后端·程序员
ZGIAI7 小时前
ZGI Skill Loop:给工具调用设边界
人工智能·架构
ZGIAI7 小时前
ZGI 工作区权限:用户为何看不到资源
人工智能·架构
FlagOS智算系统软件栈7 小时前
Qwen3.8-Flash-Next发布首日适配 8 款AI芯片,众智FlagOS跑通并优化新一代混合注意力架构
人工智能·架构
丘山一郎7 小时前
Spring 中的IOC控制反转 和DI依赖注入
java·后端·spring
码视野7 小时前
基于 Spring Boot + Vue3 的【大学英语四六级 (CET-4/6) 作文智能评分与句式润色系统】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端·vue3
Hrain-AI7 小时前
Qwen4 架构预览解读:GDN+QSA 混合注意力如何把激活参数压到 6B
人工智能·架构·开源
MetaLite7 小时前
Spring-AOP自调用为什么失效-AopContext真能解决吗
java·后端·spring
许彰午8 小时前
14-字段级SM4加密与SM2签名
java·低代码·架构