我正在通过Zuul调用我的演示服务。当我重新启动演示服务并在Eureka中注意到它时,Zuul提出了一个例外情况:“负载均衡器没有可用于客户端的服务器:演示服务”。
当我继续通过Zuul调用demo-service时,它只在30秒后开始工作。
eureka服务器配置:
spring.application.name=registry
server.ip=127.0.0.1
server.port=6006
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://${server.ip}:${server.port}/eureka/
eureka.server.enable-self-preservation=false
eureka.server.eviction-interval-timer-in-ms=5000
zuul config:
spring.application.name=gateway
server.port=4002
## demo
zuul.routes.api-demo.path=/demo/**
zuul.routes.api-demo.serviceId=demo-service
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:6006/eureka
eureka.instance.prefer-ip-address=true
eureka.client.registryFetchIntervalSeconds=5
logging.level.root=debug
eureka客户端配置(演示服务):
spring.application.name=demo-service
server.port=6020
endpoints.shutdown.enabled=true
endpoints.shutdown.sensitive=false
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:6006/eureka
eureka.instance.prefer-ip-address=true
eureka.instance.lease-renewal-interval-in-seconds=5
eureka.instance.lease-expiration-duration-in-seconds=10
eureka.client.healthcheck.enabled=true
似乎Zuul配置中的eureka.client.registryFetchIntervalSeconds=5
无效,考虑到Zuul需要30秒才能了解演示服务实例。我怎样才能让它正常工作?
答案 0 :(得分:0)
Eureka Client和Eureka Server之间有许多缓存层和间隔。因此,您的Eureka客户端无法立即识别状态的变化。但是你无法通过以下属性来减少延迟。
eureka.server.responseCacheUpdateInvervalMs
eureka.client.registryFetchIntervalSeconds
ribbon.ServerListRefreshInterval