預設情況下,如果Eureka Server在一定時間内沒有接收到某個微服務執行個體的心跳,Eureka Server将會登出執行個體(預設90秒)。但是當網絡分區故障發生時,微服務與Eureka Server之間無法正常通信,以上行為可能變得非常危險-----因為微服務本省其實是健康的,此時不應該登出這個微服務。
Eureka通過“自我保護模式”來解決這個問題------當Eureka Server節點在短時間内丢失過多用戶端時(可能發生網絡分區故障),那麼這個節點就會進入自我保護模式。一旦進入自我保護模式,Eureka Server就會保護服務系統資料庫中的資訊,不再删除服務系統資料庫中的資料(也就是不會登出任何微服務)。當網絡故障恢複後,該Eureka Server節點會自動退出自我保護模式。
綜上,自我保護模式是一種應用網絡異常的安全保護措施。它是甯可同時保留所有微服務(健康的和不健康的),也不盲目登出任何健康的服務。使用自我保護模式,可以讓Eureka叢集更加健壯、穩定。
在Spring Cloud中可以使用eureka.server.enable-self-preservation=false禁用自我保護模式。
@SpringCloudApplication時一個注解的集合
使用@SpringCloudApplication包括,Springboot注解,注冊服務到注冊中心注解,熔斷器注解。在SpringCloud看來這是每一微服務所必須應有的三個注解,是以才推出了@SpringCloudApplication注解。
使用@SpringCloudApplication需要進入Springboot依賴外,還需要引入下邊。
<!--将微服務注冊到注冊中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<[email protected]注解需要依賴的 熔斷器 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
微信公衆号