当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务有策略的降低服务级别,以释放服务器资源,保证核心任务的正常运行. 今天看到dubbo相关知识后,了解了为什么要使用服务降级。 这是防止分布式服务发生雪崩效应,什么是雪崩?就是蝴蝶效应,当一个请 求发生超时,一直等待着服务响应,那么在高并发情况下,很多请求都是因为这样一直等着响应,直到服务资源耗尽产生宕机,而宕机之后会导致分布式其他服务调用该宕机的服务也会出现资源耗尽宕机,这样下去将导致整个分布式服务都瘫痪,这就是雪崩。 Dubbo的服务降级是采用的mock机制。方式有:Mock Null 降级处理和Mock Class 降级处理。 下面通过简单的一段代码: 1.我们普通的一个接口如下:
@Path("/")
public interface ISayHelloService {
@GET
@Path("/say")
String sayHello(String msg);
}
2.同时简单的配置mock需要执行的代码即可
@DubboReference(registry = {"shanghai","hunan"},
protocol = "dubbo",
loadbalance = "consistenthash",
mock = "com.gupaoedu.springboot.dubbo.springbootdubbosampleconsumer.MockSayHelloService",
timeout = 500,
cluster = "failfast",check = false,methods = {
@Method(loadbalance = "",name ="" )
},retries = 5)
ISayHelloService sayHelloService;
@GetMapping("/say")
public String say(){
return sayHelloService.sayHello("Mic");
}
指定mock需要执行的对象,遇到服务出现问题,就会往指定降级服务处转发处理。 以上就是一个简单的dubbo降级服务过程
|