1.服务降级方式
能够实现服务降级方式很多,常见的有如下几种情况:
- 部分服务暂停
- 全部服务暂停
- 随机拒绝服务
- 部分服务延迟
2.dubbo服务降级
Dubbo的服务降级采用的是mock机制。
mock只在出现非业务异常(比如超时,网络异常等)时执行。
mock配置在调用方,服务降级不需要对服务方配置产生修改。
mock的配置支持两种:
- 一种为boolean值,默认的为false。如果配置为true,则缺省使用mock类名,即接口名+Mock
- 另外一种则是配置"return null",可以很简单的忽略掉异常。
2.1 Mock Null 服务降级处理
只需要在消费端的服务或者方法中加上mock=“return null”
<dubbo:reference id="fooService" interface="com.test.service.FooService" timeout="10000" check="false" mock="return null">
2.1 Mock Class 服务降级处理
<dubbo:reference id="fooService" interface="com.test.service.FooService" timeout="10000" check="false" mock="true">
消费端需要实现有降级需要的提供者接口,实现类名称必须是 接口名 + Mock,并且实现类与接口在同一目录下
public class FooServiceMock implements FooService {
public void doSomething1() {
throw new RuntimeException("fail!");
}
public String doSomething2(String str) {
return "降级临时返回结果";
}
}