IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    spring-cloud feign hystrix配置熔断为什么不生效的原因

    asuncool@gmail.com(yihaomen)发表于 2017-05-26 22:54:49
    love 0
    今天特地测试了用feign来作为负载均衡器做测试,配置很简单,而且也能很好的工作,但突然,我想既然用了feign,干脆也把熔断也测试了,也就是hystrix支持的熔断. 没想到反而在这个上面花了不少时间。死活不进入熔断配置的方法。一般报两种错:
    1. Service Look up error: Load balancer does not have available server for client...
    2. feign connection refused: connect executing get, 也就是找不到微服务,连接不上,因为熔断测试的时候是停止微服务测试的。

    其实对于第一种错误,也许可以参考github上面的说明:https://github.com/spring-cloud/spring-cloud-netflix/issues/746, fetching the registry is how eureka is able to tell ribbon (loadbalancer) about what servers are available. 所以我们需要在EUREKA SERVER的工程配置文件里面加上这样的配置:
    程序代码 程序代码

    server:
      port: 8761
    eureka:
      server:
        enable-self-preservation: false       # 关闭自我保护模式(缺省为打开)
        eviction-interval-timer-in-ms: 1000   # 续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
      client:
        register-with-eureka: false
        fetch-registry: true
        service-url:
          defaultZone: http://localhost:8761/eureka

    注意 eureka.client.fetch-registry=true 这句,非常重要,这是用ribbon来做负载均衡的,一定要启用。

    对于第二个问题,可能是我自己一直忽略的问题,微服务断掉了,连接不上,是正常的。但我代码里面是加入了熔断fallback配置的,应该走到熔断哪里去呀。不应该报connection refused这样的错误呀。其实就是自己少了一个配置:
    程序代码 程序代码

    server:
      port: 3333

    spring:
      application:
        name: client-consumer-feign

    eureka:
      instance:
        instance-id: ${spring.application.name}:${server.port}
        prefer-ip-address: true
        lease-renewal-interval-in-seconds: 5
        lease-expiration-duration-in-seconds: 15
      client:
        healthcheck:
          enabled: true
        serviceUrl:
          defaultZone: http://localhost:8761/eureka
    feign:
      hystrix:
        enabled: true    


    注意最后面的feign.hystrix.enable=true, 这是启用熔断的开关,一定要开启。好了,搞定了这两点,很自然的熔断生效了。又浪费了两个小时,真是坑呀。后面,干脆把我的代码也上传上来做个备份。


    下载文件 spring-boot-microservice sample
    下载文件 spring-cloud-eureka-server
    下载文件 spring-cloud-feign-hystrix-sample


沪ICP备19023445号-2号
友情链接