Spring Cloud(二)—— Eureka註冊與發現

失效剔除

場景:有些時候,咱們的服務實例並不必定會正常下線,可能因爲內存溢出、網絡故障等緣由使服務不能正常運做。而服務註冊中心並未收到「服務下線」的請求網絡

解決:爲了從服務列表中將這些沒法提供服務的實例剔除,Eureka Server在啓動的時候會建立一個定時任務,默認每隔一段時間(默認爲60秒)將當前清單中超時(默認爲90秒)沒有續約的服務剔除出去。框架

自我保護

服務註冊到Eureka Server後,會維護一個心跳鏈接,告訴Eureka Server本身還活着。Eureka Server在運行期間會統計心跳失敗的比例在15分鐘以以內是否低於85%,若是出現低於的狀況,Eureka Server會將當前實例註冊信息保護起來,讓這些實例不會過時。這樣作會使客戶端很容易拿到實際已經不存在的服務實例,會出現調用失敗的狀況。所以客戶端要有容錯機制,好比請求重試、斷路器。微服務

如下是自我保護相關的屬性:server

eureka.server.enableSelfPreservation=true. 能夠設置改參數值爲false,以確保註冊中心將不可用的實例刪除內存

微服務啓動報Cannot execute request on any known server 的幾種解決辦法

鏈接Eureka服務端的URL不對:it

  若是訪問地址是:http://127.0.0.1:8080/eureka/io

  則在Eureka服務發現應該配置爲:class

    server.port: 8080cli

    eureka.client.serviceUrl.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
注意:Eureka服務端至關於一個特殊的Eureka客戶端,也能夠進行註冊發現【實現Eureka的高可用】。配置

@EnableDiscoveryClient和@EnableEurekaClient的區別

@EnableDiscoveryClient和@EnableEurekaClient的區別主要是使用的場景不一樣。

後者只能在註冊中心是Eureka的時候使用,前者的範圍更加普遍既能夠在註冊中心是Eureka的時候使用也能在註冊中心是其餘的框架組件的使用使用。

相關文章
相關標籤/搜索