1,自我保護的條件
一般情況下,微服務在 eureka 上註冊後,會每 30 秒傳送心跳包,eureka 通過心跳來 判斷服務時候健康,同時會定期刪除超過 90 秒沒有傳送心跳服務。
如果超過90秒沒有接收到的服務的心跳包,就將服務刪除,注意這個刪除不是真的刪除,而是將服務進如自我保護狀態,保留服務的資料
2,有兩種情況會導致 eureka server 收不到微服務的心跳
a.是微服務自身的原因
b.是微服務與 eureka 之間的網路故障 通常(微服務的自身的故障關閉)只會導致個別服務出現故障,一般不會出現大面積 故障,而(網路故障)通常會導致 eureka server 在短時間內無法收到大批心跳。 考慮到這個區別,eureka 設定了乙個閥值,當判斷掛掉的服務的數量超過閥值時, eureka server 認為很大程度上出現了網路故障,將不再刪除心跳過期的服務。
3,那麼這個閥值是多少呢?
15 分鐘之內是否低於 85%;85%也是eureka區分單節點故障和網路故障的乙個的閥值,當eureka服務中的所有服務總宕機個數低於85%那麼就認為是網路故障,如果低於85%就是單點故障。
eureka server 在執行期間,會統計心跳失敗的比例在 15 分鐘內是否低於 85% 這種演算法叫做 eureka server 的自我保護模式
1,因為同時保留"好資料"與"壞資料"總比丟掉任何資料要更好,當網路故障恢復後, 這個 eureka 節點會退出"自我保護模式"。
2,eureka 還有客戶端快取功能(也就是微服務的快取功能)。即便 eureka 集群中所有節點 都宕機失效,微服務的 provider 和 consumer 都能正常通訊。
3,微服務的負載均衡策略會自動剔除死亡的微服務節點。
自我保護關閉的位置是在服務端進行關閉的
#關閉自我保護:true 為開啟自我保護,false 為關閉自我保護
eureka.server.enableselfpreservation=false
#清理間隔(單位:毫秒,預設是 60*1000)
eureka.server.eviction.interval-timer-in-ms=60000
Spring Cloud Eureka自我保護機制
eureka的自我保護機制 首先來說下cap理論,關於分布式的架構都會涉及到cap理論,eureka用的ap設計,即高可用以及分割槽容錯性 自我保護機制的工作機制是如果在15分鐘內超過85 的客戶端節點都沒有正常的心跳,那麼eureka就認為客戶端與註冊中心出現了網路故障,eureka server...
SpringCloud Eureka自我保護機制
首先對eureka註冊中心需要了解的是eureka各個節點都是平等的,沒有zk中角色的概念,即使n 1個節點掛掉也不會影響其他節點的正常執行。預設情況下,如果eureka server在一定時間內 預設90秒 沒有接收到某個微服務例項的心跳,eureka server將會移除該例項。但是當網路分割槽...
日產推出帶有自我修復功能的iPhone保護套
該保護套採用了日產公司2005年開發的自我修復塗料,該塗料技術此前已用於多種日產產品,能夠快速修復刮痕。該保護套由日產公司 東京大學以及advanced softmaterials inc共同研究開發,採用abs材質,具有更高的靈活性 柔軟性,以及更好的手感。該保護套外層塗料使用的是polyrota...