什么是服务降级?
当服务器压力比较大的时候,我们可以通过服务降级,屏蔽掉一些非关键服务,给它们定义一个降级后的返回策略,从而降低核心业务的压力。
通俗的说,服务降级就是在远程调用失败(例如超时)之后,直接采用降级措施,返回一个我们已经定义好的提示。例如,在12306抢票高峰时,明明票还有,但查询列表总是空的,过了高峰之后再次查询,又会恢复正常,这可能是因为超时或者网络问题导致查询失败,最后不得不采用了服务降级进行处理,给我们返回一个已经定义好的值。
如何实现服务降级
Dubbo 中有一个 mock 的配置,我们可以通过这个配置实现服务降级。其中,mock 的配置有两种:
- 通过 boolean 值指定是否实行服务降级,其中默认为 false,当配置为 true 时,缺省通过在服务名后面加上 Mock 后缀的类来指定降级后的返回值
- 直接 return null,统一返回空
需要注意的是,mock 只会在非业务异常的时候执行,比如超时,又或者是网路异常。
测试
首先我们来看一下不做服务降级会是什么后果,我们在服务提供者中故意令其超时,由于 Dubbo 默认超时时间为1s,我们就令其睡眠两秒,代码如下:
package edu.szu.producer.serviceImpl;
import com.alibaba.dubbo.config.annotation.Service;
import edu.szu.api.service.NameService;
import org.springframework.stereotype.Component;
@Component
@Service
public class NameServiceImpl implements NameService {
@Override
public String updateName(String n

本文介绍服务降级的概念,即在服务器压力大时关闭非关键服务,以保护核心业务。通过Dubbo的mock配置实现服务降级,包括直接返回空和使用自定义返回值两种方式。并介绍了如何通过控制台进行服务降级。
最低0.47元/天 解锁文章
1659

被折叠的 条评论
为什么被折叠?



