spring-cloud feign hystrix配置熔断为什么不生效的原因
By:Roy.LiuLast updated:2017-05-26
今天特地测试了用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的工程配置文件里面加上这样的配置:
注意 eureka.client.fetch-registry=true 这句,非常重要,这是用ribbon来做负载均衡的,一定要启用。
对于第二个问题,可能是我自己一直忽略的问题,微服务断掉了,连接不上,是正常的。但我代码里面是加入了熔断fallback配置的,应该走到熔断哪里去呀。不应该报connection refused这样的错误呀。其实就是自己少了一个配置:
注意最后面的feign.hystrix.enable=true, 这是启用熔断的开关,一定要开启。好了,搞定了这两点,很自然的熔断生效了。又浪费了两个小时,真是坑呀。后面,干脆把我的代码也上传上来做个备份。
spring-boot-microservice sample
spring-cloud-eureka-server
spring-cloud-feign-hystrix-sample
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
From:一号门
Next:Maven配置编译JDK版本
COMMENTS