在线网站通常都会有服务器压力剧增的时候,好比说网上商城的促销,这个时候经常使用的手段就是服务降级,根据当前业务状况及流量对一些服务和页面有策略的降级,以此缓解了服务器资源压力,以保证核心任务的正常运行,同时也保证了部分甚至大部分客户获得正确响应。java
服务降级实施策略nginx
- 页面拒绝服务:页面提示因为服务繁忙此服务暂停。跳转到varnish或nginx的一个静态页面。
- 服务接口拒绝服务:无用户特定信息的页面能访问,提示服务器繁忙。页面内容也可在缓存(Varnish)或CDN内获取。
- 延迟持久化:页面访问照常,可是涉及记录变动,会提示稍晚能看到结果,将数据记录到异步队列或log,服务恢复后执行。
- 随机拒绝服务:服务接口随机拒绝服务,让用户重试,目前较少采用。由于用户体验不佳。
如今说一下dubbo服务的降级方式,有两种方式:缓存
- 在dubbo-admin中进行动态配置来事项降级
其中动态配置中的参数能够定义超时时间服务器
这里能够使用debug测试,让服务超时,很快消费者会报错异步
这里的mock值,这里有容错和屏蔽两个选择测试
屏蔽(mock=force):网站
mock=force:return+null 表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响
消费者放直接返回null不远程调用服务spa
容错(mock=fail)debug
还能够改成 mock=fail:return+null 表示消费方对该服务的方法调用在失败后,再返回 null 值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。
若是调用失败后返回null
code
- 经过注册配置实现
<dubbo:reference id="iUser" interface="com.dubbosample.iface.IUser" timeout="1000" check="false" mock="return null">