自我保護(hù)機(jī)制,Eureka Server在運(yùn)行期間,會(huì)統(tǒng)計(jì)心跳失敗的比例在15分鐘之內(nèi)是否低于85%,如果出現(xiàn)低于的情況(在單機(jī)調(diào)試的時(shí)候很容易滿足,實(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ī)制:首先對(duì)Eureka注冊(cè)中心需要了解的是Eureka各個(gè)節(jié)點(diǎn)都是平等的,沒(méi)有ZK中角色的概念, 即使N-1個(gè)節(jié)點(diǎn)掛掉也不會(huì)影響其他節(jié)點(diǎn)的正常運(yùn)行。默認(rèn)情況下,如果Eureka Server在一定時(shí)間內(nèi)(默認(rèn)90秒)沒(méi)有接收到某個(gè)微服務(wù)實(shí)例的心跳,Eureka Server將會(huì)移除該實(shí)例。但是當(dāng)網(wǎng)絡(luò)分區(qū)故障發(fā)生時(shí),微服務(wù)與Eureka Server之間無(wú)法正常通信,而微服務(wù)本身是正常運(yùn)行的,此時(shí)不應(yīng)該移除這個(gè)微服務(wù),所以引入了自我保護(hù)。