您好,登錄后才能下訂單哦!
一、Eureka的自我保護
默認情況下,如果Eureka server長時間接收不到來自某微服務發來的心跳,Eureka server會自動將該微服務進行注銷。但是當網絡分區發生故障是,服務和Eureka server之間無法正常通信,但此時的微服務是正常工作的,此時本不應該將此實例注銷。
Eureka會通過自我保護機制解決這個問題。
當Eureka server短時間內丟失大量微服務客戶端時,會判定為可能發生了網絡分區的故障,那么這個節點就會進入自我保護模式。一旦進入該模式,Eureka server會保護服務注冊表中的數據,不會進行注銷任何微服務的操作。當網絡故障恢復后,該Eureka server會自動退出自我保護模式。
原則:寧可同時不注銷所有微服務,包括正常和不正常的,也不會注銷任何一個正常的微服務。
關閉自我保護模式:
eureka: ??server: ????enable-self-preservation:?false
二、Eureka的健康檢查
已知當微服務持續向Eureka server發送心跳時,Eureka server才會認定這個微服務是可用狀態,但這個狀態并不能保證微服務真的可用。可能Eureka server與微服務之間的連接是正常的,但是微服務本身是有問題的,隸屬數據源連接等會提導致微服務崩潰但并不影響微服務發送心跳。此時就需要將微服務的健康狀態發送給Eureka server。
在微服務項目總作如下改動:
1、加入依賴:
<dependency> ???<groupId>org.springframework.boot</groupId> ???<artifactId>spring-boot-starter-actuator</artifactId> </dependency>
2、修改yml,開啟健康檢查:
eureka: ??client: ????healthcheck: ??????enabled:?true
這樣,微服務就可以將健康信息傳播到Eureka server了
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。