SpringCloud之Hystrix解决服务雪崩效应原理

服务降级

在高并发的情况下,防止用户一直等待,使用服务器降级方式(返回一个友好提示给客户端,不会去处理请求,调用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, "返回一个友好提示", "服务降级 ,服务器繁忙,请稍后重试!");
      }

你可能感兴趣的:(SpringCloud之Hystrix解决服务雪崩效应原理)