1. 程式人生 > >Eureka 引數調優

Eureka 引數調優

常見問題

  為什麼服務下線了,Eureka Server 介面返回的資訊還會存在。
  為什麼服務上線了,Eureka Client 不能及時獲取到。
  為什麼有時候會出現如下提示:
  EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

解決之道

  對於第一個問題,Eureka Server 並不是強一致的,因此 registry 中會存留過期的例項資訊,這裡頭有幾個原因:

  應用例項異常掛掉,沒能在掛掉之前告知 Eureka Server 要下線掉該服務例項資訊。這個就需要依賴 Eureka Server 的 EvictionTask 去剔除。
  應用例項下線時有告知 Eureka Server 下線,但是由於 Eureka Server 的 REST API 有 response cache,因此需要等待快取過期才能更新。
  Eureka Server 由於開啟並引入了 SELF PRESERVATION 模式,導致 registry 的資訊不會因為過期而被剔除掉,直到退出 SELF PRESERVATION 模式。
  針對 Client 下線沒有通知 Eureka Server 的問題,可以調整 EvictionTask 的排程頻率,比如下面配置將排程間隔從預設的 60 秒,調整為 5 秒:

 

 

安全驗證

我們啟動了Eureka Server,然後在瀏覽器中輸入http://localhost:8761/後,直接回車,就進入了spring cloud的服務治理頁面,這麼做在生產環境是極不安全的,下面,我們就給Eureka Server加上安全的使用者認證.

(1)pom檔案中引入依賴

<dependency> 

   <groupId>org.springframework.boot</groupId> 

   <artifactId>spring-boot-starter-security</artifactId> 

</dependency> 

(2)serviceurl中加入安全校驗資訊

eureka.client.serviceUrl.defaultZone=http://<username>:<password>@${eureka.instance.hostname}:${server.port}/eureka/