2017-09-07 99 views
0

我打电话给我的演示服务通过Zuul。当我重新启动演示服务并在Eureka注意到它时,Zuul抛出了一个关于“负载均衡器没有可用的客户端服务器:演示服务”的例外情况。zuul慢慢获取新的服务客户端

当我通过Zuul不断呼叫演示服务时,它只在30秒后开始工作。

尤里卡服务器配置:

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配置:

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 

尤里卡客户端配置(演示服务):

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 

似乎eureka.client.registryFetchIntervalSeconds=5在Zuul配置是不工作,因为Zuul需要长达30秒的时间才能了解其中的演示服务姿态。我怎样才能使它正常工作?

回答

0

Eureka客户端和Eureka服务器之间有许多缓存层和间隔。所以你的尤里卡客户不能立即识别状态的变化。但是你不能通过以下属性来减少延迟。

  • eureka.server.responseCacheUpdateInvervalMs
    • 定义尤里卡服务器。
    • 这是尤里卡服务器的API响应缓存时间。默认值是30秒,对大多数情况来说太大了。你可以减少这个值。
  • eureka.client.registryFetchIntervalSeconds
    • 定义尤里卡客户端。
    • 间隔从Eureka服务器获取注册表。你可以减少它。
  • ribbon.ServerListRefreshInterval
    • 限定在带(尤里卡)客户端。
    • 通常尤里卡被用于丝带。因此,Ribbon的提取间隔对于减少延迟也很重要。默认是30秒。你可以减少它。
相关问题