服务降级:主要包括容错降级和屏蔽降级两种模式。
一.屏蔽降级
大促期间,为了保证核心服务。对非核心服务做强制降级,不发起远程服务调用,直接返回空、异常后者执行本地特定逻辑。把资源释放出来供核心服务使用。
1.屏蔽降级的流程

2.屏蔽降级的设计实现
屏蔽降级,一般取值有如下三种方式:
- mock=force:return null. 不发起远程服务调用,直接返回空对象。
- mock=force:throw Exception. 不发起远程服务调用,直接抛出指定异常。
- mock=force:execute Bean. 不发起远程服务调用,直接执行本地模拟接口实现类。
二.容错降级
当非核心服务不可用时,可以对故障服务做业务逻辑方通,分布式服务框架的业务放通实际属于容错降级的一种。
容错降级不仅仅用于业务放通,它也常用于服务提供方再客户端执行容错逻辑,容错逻辑主要包括两种:
- RPC异常:通常指超时异常、消息解码异常、流控异常、系统拥塞保护异常等
- Service异常:比如登录校验失败异常、数据库操作失败异常等。
1.容错降级的工作原理

容错降级与屏蔽降级的主要差异如下:
- 触发条件不同:容错降级是根据服务调用结果,自动匹配触发的。而屏蔽降价往往是通过人工根据系统运行情况手动触发的。
- 作用不同:容错降级是当服务提供者不可用时,让消费者执行业务放通;屏蔽降级的主要目的是将原来属于降级业务的资源调配出来供核心业务使用。
- 调用机制不同:一个发起远程服务调用,一个只能做本地调用。
容错降级策略如下:
- mock=fail:throw Exception。将异常转移。
- mock=fail:execute bean。 将异常屏蔽掉,直接执行本地模拟接口实现类返回Mock的执行结果。
2.运行时容错降级

三.业务层降级
服务降级并不能100%满足所有业务放通场景,对于不满足的特殊场景需要业务自己开发业务层的降级框架。
网友评论