Eureka
作為一個(gè)成熟的服務(wù)注冊中心
當(dāng)然也有合理的內(nèi)部維護(hù)服務(wù)節(jié)點(diǎn)
的機(jī)制,比如我們本章將要講解到的服務(wù)下線
、失效剔除
、自我保護(hù)
,也正是因?yàn)閮?nèi)部有這種維護(hù)機(jī)制才讓Eureka
更健壯洒放、更穩(wěn)定。
本章目標(biāo)
了解Eureka
是怎么保證服務(wù)相對較短時(shí)長內(nèi)
的有效性滨砍。
服務(wù)下線
迭代更新
往湿、終止訪問
某一個(gè)或者多個(gè)服務(wù)節(jié)點(diǎn)
時(shí)妖异,我們在正常關(guān)閉服務(wù)節(jié)點(diǎn)
的情況下,Eureka Client
會通過PUT
請求方式調(diào)用Eureka Server
的REST
訪問節(jié)點(diǎn)/eureka/apps/{appID}/{instanceID}/status?value=DOWN
請求地址领追,告知Eureka Server
我要下線了他膳,Eureka Server
收到請求后會將該服務(wù)實(shí)例
的運(yùn)行狀態(tài)
由UP
修改為DOWN
,這樣我們在管理平臺
服務(wù)列表內(nèi)看到的就是DOWN
狀態(tài)的服務(wù)實(shí)例蔓腐。
有關(guān)
Eureka Server
內(nèi)部的REST
節(jié)點(diǎn)地址矩乐,請?jiān)L問SpringCloud組件:Eureka服務(wù)注冊中心內(nèi)置的REST節(jié)點(diǎn)列表來了解詳情。
失效剔除
Eureka Server
在啟動完成后會創(chuàng)建一個(gè)定時(shí)器每隔60秒
檢查一次服務(wù)健康狀況
回论,如果其中一個(gè)服務(wù)節(jié)點(diǎn)超過90秒
未檢查到心跳散罕,那么Eureka Server
會自動從服務(wù)實(shí)例列表
內(nèi)將該服務(wù)剔除
。
由于非正常關(guān)閉不會執(zhí)行
主動下線
動作傀蓉,所以才會出現(xiàn)失效剔除
機(jī)制欧漱,該機(jī)制主要是應(yīng)對非正常關(guān)閉服務(wù)的情況,如:內(nèi)存溢出
葬燎、殺死進(jìn)程
误甚、服務(wù)器宕機(jī)
等非正常流程
關(guān)閉服務(wù)節(jié)點(diǎn)時(shí)。
自我保護(hù)
Eureka Server
的自我保護(hù)機(jī)制
會檢查最近15分鐘
內(nèi)所有Eureka Client
正常心跳的占比谱净,如果低于85%
就會被觸發(fā)窑邦。
我們?nèi)绻?code>Eureka Server的管理界面發(fā)現(xiàn)如下的紅色內(nèi)容,就說明已經(jīng)觸發(fā)了自我保護(hù)機(jī)制
壕探。
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
當(dāng)觸發(fā)自我保護(hù)機(jī)制
后Eureka Server
就會鎖定服務(wù)列表
冈钦,不讓服務(wù)列表內(nèi)的服務(wù)過期
,不過這樣我們在訪問服務(wù)時(shí)李请,得到的服務(wù)很有可能是已經(jīng)失效的實(shí)例
瞧筛,如果是這樣我們就會無法訪問到期望的資源,會導(dǎo)致服務(wù)調(diào)用失敗导盅,所以這時(shí)我們就需要有對應(yīng)的容錯(cuò)機(jī)制
较幌、熔斷機(jī)制
,我們在接下來的文章內(nèi)會詳細(xì)講解這塊知識點(diǎn)白翻。
我們的服務(wù)如果是采用的公網(wǎng)IP地址
乍炉,出現(xiàn)自我保護(hù)機(jī)制
的幾率就會大大增加
,所以這時(shí)更要我們部署多個(gè)相同InstanId
的服務(wù)或者建立一套完整的熔斷機(jī)制
解決方案滤馍。
自我保護(hù)開關(guān)
如果在本地測試環(huán)境恩急,建議關(guān)掉自我保護(hù)機(jī)制
,這樣方便我們進(jìn)行測試纪蜒,也更準(zhǔn)備的保證了服務(wù)實(shí)例
的有效性
!4说纯续!
關(guān)閉自我保護(hù)
只需要修改application.yml
配置文件內(nèi)參數(shù)eureka.server.enable-self-preservation
將值設(shè)置為false
即可随珠。
總結(jié)
我們通過本章的講解,了解到了Eureka Server
對服務(wù)的治理猬错,其中包含服務(wù)下線
窗看、失效剔除
、自我保護(hù)
等倦炒,對自我保護(hù)機(jī)制
一定要謹(jǐn)慎的處理显沈,防止出現(xiàn)服務(wù)失效問題。
源碼位置
- SpringBoot配套源碼地址:訪問碼云查看源碼逢唤、訪問GitHub查看源碼
- SpringCloud配套源碼地址(
本章源碼在這
):訪問碼云查看源碼拉讯,訪問GitHub查看源碼