2017-09-07 103 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秒。你可以減少它。
相關問題