spring cloud 通过Ribbon配置负载均衡 和Hystrix熔断器

前言:

本篇博客是基于上一篇博客的再度扩展springcloud项目配置,Ribbon是用于实现负载均衡的,Hystrix是用于超时的方法返回一个兜底数据的。

Ribbon配置:

spring cloud 通过Ribbon配置负载均衡 和Hystrix熔断器_第1张图片

1. 在RestTemplate上加注解

@LoadBalanced

实现默认的负载均衡策略

2.实现RandomRule负载均衡策略

    /**
     * 创建RestTemplate交给容器
     */
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }


    @Bean
    public IRule ribbonRule() {
        return new RandomRule();
    }

熔断器配置:

所需依赖:

        
            org.springframework.cloud
            spring-cloud-starter-netflix-hystrix
        

yml配置:

#设置熔断器的等待时间
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 3000;
            #熔断器每个方法隔离采用的方式,线程池或者信号量 THREAD\SEMAPHORE
            strategy: THREAD;

 实例演示:

    @HystrixCommand(fallbackMethod ="getFallBackMethod")
    @GetMapping("order/{id}")
    public ResponseEntity selectOne(@PathVariable Long id) {
        SysOrder order = orderService.getOrderById(id);
        return ResponseEntity.ok(order);
    }

在想要实现熔断器的方法上配置注解

@HystrixCommand(fallbackMethod ="熔断器方法名")

熔断器方法: 

    /**
     * 降级方法
     * 该方法调用时机为原有方法超时 参数必须与原有方法保持一致
     */
    public ResponseEntity getFallBackMethod(Long id){
//        String s="你的请求太慢了";
//        System.out.println("你的请求太慢了");
//        return s;
        SysOrder order = new SysOrder();
        return ResponseEntity.ok(order);
    }

 该方法为熔断器方法,原有方法超时则会执行该方法返回一个兜底数据

注:熔断器方法的方法参数和返回值要与原来方法保持一致。

你可能感兴趣的:(spring,cloud,ribbon,负载均衡)