降级设计-degradation
约 555 字大约 2 分钟...
降级设计-degradation
含义:
本质是为了解决资源不足和访问量过大的问题。当资源和访问量出现矛盾的时候,在有限的资源下,为了能够扛住大量的请求,我们就需要对系统进行降级操作。也就是说,暂时牺牲掉一些东西,以保障整个系统的平稳运行。
降级待牺牲清单:
降低一致性: 从强一致性变为最终一致性。 a. 使用异步方式,简化流程一致性
b. 使用缓存,降低数据一致性
停止次要功能:停止访问不重要的功能,从而释放出更多的资源。
简化功能或流程。把一些功能简化掉,比如不再返回全量数据,只返回部分数据。对计算等资源需求比较高的,不重要的逻辑简化掉。
降级设计要点:
- 很难不侵入业务,所以需要对业务足够熟悉并作出梳理。哪些是 must-have 的功能,哪些是 nice-to-have 的功能;哪些是必须要死保的功能,哪些是可以牺牲的功能。
- 提前清楚地定义好降级的关键条件。比如,吞吐量过大、响应时间过慢、失败次数多过,有网络或是服务故障,做好相应的应急预案。
- 降级的时候,需要牺牲掉一致性,或是一些业务流程。读操作:可以使用缓存来解决。写操作:需要异步调用来解决。并且以流水账的方式记录下来,方便对账,以免漏掉或是和正常的流程混淆。
- 降级的功能可做成系统的配置开关或者由调用方驱动。做成配置时,你需要在要降级的时候推送相应的配置。当调用侧发生限流并达到某个值时,传参过来,从而驱动服务做相应降级。
- 数据降级需要前端配合展示,做好相关区分。当服务恢复时,重新获取数据,实现最终一致。
- 降级出现少,相关机制需要提前演练,避免本身出现bug。