自我保護(hù)機(jī)制,Eureka Server在運(yùn)行期間,會統(tǒng)計(jì)心跳失敗的比例在15分鐘之內(nèi)是否低于85%,如果出現(xiàn)低于的情況(在單機(jī)調(diào)試的時候很容易滿足,實(shí)際在生產(chǎn)環(huán)境上通常是由于網(wǎng)絡(luò)不穩(wěn)定導(dǎo)致)。
解決辦法:
添加如下配置,關(guān)閉自我保護(hù)
Eureka server application.yml

Service application.yml

Spring Cloud Eureka的自我保護(hù)機(jī)制:首先對Eureka注冊中心需要了解的是Eureka各個節(jié)點(diǎn)都是平等的,沒有ZK中角色的概念, 即使N-1個節(jié)點(diǎn)掛掉也不會影響其他節(jié)點(diǎn)的正常運(yùn)行。默認(rèn)情況下,如果Eureka Server在一定時間內(nèi)(默認(rèn)90秒)沒有接收到某個微服務(wù)實(shí)例的心跳,Eureka Server將會移除該實(shí)例。但是當(dāng)網(wǎng)絡(luò)分區(qū)故障發(fā)生時,微服務(wù)與Eureka Server之間無法正常通信,而微服務(wù)本身是正常運(yùn)行的,此時不應(yīng)該移除這個微服務(wù),所以引入了自我保護(hù)。