Eureka的自我保护机制
Tips:生產環境中不建議關閉 Eureka 的自我保護模式
什么是保護模式
??保護模式,主要用于一組客戶端 和 Eureka Server 之間存在網絡分區場景下的保護。一旦進入保護模式,Eureka Server 將會嘗試保護其服務注冊表中的信息,不再刪除服務注冊表中的數據,也就是不會注銷任何微服務實例。
??當我們在 Eureka Server 服務首頁中,看到有如下這段提示,則說明此時 Eureka Server 已經進入了保護模式。
Eureka Server 為什么會進入保護模式
??默認情況下,如果 Eureka Server 在一定時間內沒有收到某個微服務實例的心跳,Eureka Server 便會將該實例注銷。 (默認是90s)
??但是 當網絡分區發生故障(延遲、卡頓、擁擠)時,微服務與 Eureka Server 之間是無法正常通信的,在這種情況下微服務本身其實是健康的,本來是不應該注銷這個服務的,此時 Eureka 便會通過 “自我保護模式” 來解決這個問題。
??Eureka 的自我保護機制,就是 CAP 原則中的 AP 分支。即滿足:可用性、分區容錯性。
CAP 原則又稱 CAP 定理,指的是在一個分布式系統中,一致性(Consistency)、可用性(Availability)、分區容錯性(Partition tolerance)。CAP 原則指的是,這三個要素最多只能同時實現兩點,不可能三者兼顧。
如何禁用自我保護
??在 Eureka 中,自我保護模式默認是 開啟 的。此處也只是來演示一下如何關閉。生產環境中是不建議關閉 Eureka 的自我保護模式。
1.Eureka Server 端操作
添加如下配置信息:
eureka:server:#關閉自我保護機制,保證不可用服務被及時剔除enable-self-preservation: false#清理無效節點的時間間隔,默認60000毫秒,即60秒 (此處時間間隔設置為2s)eviction-interval-timer-in-ms: 2000- 1
- 2
- 3
- 4
- 5
- 6
此時,在啟動 Eureka Server 時,便會看到一條鮮明的提示信息。
2. Eureka Client 端操作
添加如下配置信息:
eureka:instance:# Eureka客戶端向服務端發送心跳的時間間隔,單位為妙(默認是30s)lease-renewal-interval-in-seconds: 1# Eureka服務端在收到最后一次心跳后的等待時間上限,單位為秒(默認90s),超時將移除服務lease-expiration-duration-in-seconds: 2- 1
- 2
- 3
- 4
- 5
- 6
到此處,配置就已經全部完成。
3.測試結果
??這種情況下,我們手動將該微服務停止,Eureka Server 便會在 2s 超時過后,將其移除服務。不會給它任何的機會,當遇到網絡 延遲、卡頓、擁擠 時,這種操作顯然是不友好的。
所以大多數情況下,還是建議不要關閉 Eureka 的自我保護模式。
博主寫作不易,加個關注唄
求關注、求點贊,加個關注不迷路 ヾ(?°?°?)ノ゙
我不能保證所寫的內容都正確,但是可以保證不復制、不粘貼。保證每一句話、每一行代碼都是親手敲過的,錯誤也請指出,望輕噴 Thanks?(・ω・)ノ
總結
以上是生活随笔為你收集整理的Eureka的自我保护机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【PHP入门篇】 WAMPServer集
- 下一篇: setserial - 取得/设置 Li