什么是服务降级
降级的目的是为了保证核心服务可用。
降级可以有几个层面的分类: 自动降级和人工降级; 按照功能可以分为:读服务降级和写服务降级
- 对一些非核心服务进行人工降级,在大促之前通过降级开关关闭哪些推荐内容、评价等对主流程没有影响的功能
- 故障降级,比如调用的远程服务挂了,网络故障、或者RPC服务返回异常。 那么可以直接降级,降级的方案比如设置默认值、采用兜底数据(系统推荐的行为广告挂了,可以提前准备静态页面做返回)等等
- 限流降级,在秒杀这种流量比较集中并且流量特别大的情况下,因为突发访问量特别大可能会导致系统支撑不了。这个时候可以采用限流来限制访问量。当达到阀值时,后续的请求被降级,比如进入排队页面,比如跳转到错误页(活动太火爆,稍后重试等)
Dubbo降级的方式Mock
Mock是相对消费端而言的。
在dubboclient中新建一个实现类TestMock实现服务接口IHello:
在配置文件中进行相应的配置:
启动dubboserver后,在客户端进行调用:
正常调用dubboserver成功。
修改dubboclient配置文件,增加一个timeout="1",也就是说1毫秒以上就属于超时:
再次用dubboserver调用:
这时候走到了Mock:
要注意的是如果这里配置了容错机制,会优先执行容错机制: