秒杀系统(终)——兜底方案

586 阅读2分钟

这是我参与2022首次更文挑战的第27天,活动详情查看:2022首次更文挑战

前言

根据我们之前的讨论的秒杀系统的设计策略,可以保证大多数的情况,但是不能百分百保证没有任何意外产生,所以我们在设计时,还要思考最后一个兜底方案,来预想最坏的结果,并且保证能够稳定系统。

兜底方案

我们在对系统的进行架构设计时,必须要对系统的各个阶段进行高可用的设计,来保证系统的高可用性的。假如我们在秒杀系统遇到了意想不到的大流量的时候,那么我们应该从哪些方面来进行入手,保障系统的稳定运行呢。

降级

当系统的容量达到一定的程度时,我们需要限制非核心功能或者非核心服务的功能,降低其服务器资源,从而腾出资源给核心功能的运行,保证核心功能的稳定,避免大流量导致拖垮整个系统,可以设计一个流量指标,例如当秒杀流量达到设置的阈值时,就关闭交易信息的展示,不再频繁的进行更新操作。或者将优惠券信息的界面展示。

限流

降级导致用户体验可能会有所下降,限流就是当系统容量达到瓶颈时,限制一部分流量来保障系统的措施。我们可以通过客户端限流和服务端限流的两种方式

客户端限流:限制请求发出,减少请求对服务器资源的消耗。客户端分散,限流的阈值难以设置一个合理的值范围来对请求进行限制。

服务端限流:可以通过服务器的性能来设置合理的阈值,来限制无用请求,但是无用请求还是会消耗服务器的资源。

拒绝服务

这是最粗暴的解决方式,当系统负载达到一个阈值时,系统会直接拒绝随后的一切请求,这种方式是最暴力和最有效的方式。

总结

兜底方案是为了最坏的结果而准备的,最终目的就是保证系统的稳定性。