服务降级
在高并发的情况下,防止用户一直等待,使用服务器降级方式(返回一个友好提示给客户端,不会去处理请求,调用fallBack)
秒杀------当前请求人数过多,请稍后重试
如果调用其他接口超时的时候(默认是一秒时间),如果在一秒钟没有及时响应的话,在默认情况下业务逻辑是可以执行的,但是直接执行服务器降级方法。
(在tomact 中没有线程进行处理客户端请求的时候,不应该让用户一直在转圈等待。)
服务隔离
服务熔断目的是为了保护服务,在高并发的情况下,如果请求达到了一定的极限(可以直接设置阈值),如果流量超出了设置的阈值,自动开启保护服务的功能,使用服务降级方式返回一个友好的提示,服务熔断机制和服务降级一起使用。
服务熔断
家里电闸保险丝
服务器隔离机制 线程池隔离: 每个服务接口都有自己独立的线程池,每个线程池互不影响,缺点:CPU占有率非常高。不是所有的接口都去采用线程隔离,核心关键接口
@HystrixCommand(fallbacMethod="")
默认开启服务隔离方式,以线程池方式
默认开启服务降级执行方法
-
默认开启服务熔断机制
/*** zengyujun * fallbackMethod 方法作用:服务降级执行。 * @HystrixCommand 默认开启服务隔离,以线程池隔离方式 * 默认开启服务降级执行方法 getUserInfoByMemberHystrixFallbackMethod * 默认开启服务服务熔断机制 */ @HystrixCommand(fallbackMethod = "getUserInfoByMemberHystrixFallbackMethod") @RequestMapping("/getUserInfoByMemberHystrix") public BaseResponse getUserInfoByMemberHystrix() { System.out.println("getUserInfoByMemberHystrix-->线程池名称:" + Thread.currentThread().getName()); return memberServiceFeign.getUserInfo(); } public BaseResponse getUserInfoByMemberHystrixFallbackMethod() { return new BaseResponse(500, "返回一个友好提示", "服务降级 ,服务器繁忙,请稍后重试!"); }