springcloud Feign+Hystrix ,一直是走fallback,为什么

  最近在研究springcloud,遇到个棘手的问题:

  就是我有一个customer 两个Provider,负载均衡是轮询,请求失败的话就会进入fallback方法. 我让其中一个provider超时,当我发起请求时,理想情况是,根据负载均衡,依次调用两个provider,应该是一次fallback, 正常 ,fallback ,正常.... 但是现在就是一直fallback,也就是没有调用正常的那个provider.

项目配置:

springboot :2.1.4.RELEASE

springcloud : Greenwich.SR1

使用轮训策略为 :RoundRobinRule

这是服务消费者调用服务

@FeignClient(name= "provider-service",fallback = FeignHystrixServiceImpl.class)
public interface FeignHystrixService {
    @GetMapping (value = "/hello")
    String hello(@RequestParam(value = "name") String name);
}

这是fallback方法

@Component
public class FeignHystrixServiceImpl implements FeignHystrixService {

    @Override
    public String hello(String name) {
        return "hello请求失败,进入fallback";
    }
}

在其中一个provide中让返回超时:

@RequestMapping("/hello")
    public String index(@RequestParam String name) throws InterruptedException {
        Thread.sleep(8000);
        return "这是服务提供者1,参数:"+name;
    }

 然后试了几次,要么只有第一次成功然后走fallback,要么全部走fallback。

猜想:是不是在 RoundRobinRule 轮训机制下,如果一次请求走了fallback,那么这次请求并没有让指针移动,所以以后的每次都是走这个指针,迈不过这道坎的感觉。。。

欢迎大神指导.

你可能感兴趣的:(微服务)