1、服務保護模式
默認:客戶端每30s給Eureka Server發送一次心跳,如果超過90s沒收到心跳,Eureka Server會在服務列表中刪除該節點
如果Eureka Server心跳統計在15分鐘內,失敗率超過了25%,如果超過,則會認為此時發生了網絡故障,不會刪除丟失心跳的節點
Eureka還有客戶端緩存功能,如果Server都宕機了,任然能通過client端緩存的列表跟應用服務通信。客戶端負載均衡策略會自動剔除死掉的節點
# 關閉自我保護:true為開啟自我保護,false為關閉自我保護
eureka.server.enableSelfPreservation=false
2、優雅停服
停服時,會觸發Eureka的服務保護模式,導致服務停掉了,eureka任然緩存著。
所以一般會關掉自我保護模式,而關掉又會導致網絡問題導致的丟失心跳,eureka會下線服務,而實際服務是任然運行可以提供服務的。
建議服務保護模式開啟。
服務下線可以使用優雅停服,spring-boot-starter-actuator ,提供了一個endpoint調用,可以用來通知eureka停服下掉節點,不觸發保護模式。
# 啟用shutdown,優雅停服功能
endpoints.shutdown.enabled=true