如何剔除eureka無(wú)效和down狀態(tài)的問(wèn)題
如何剔除eureka無(wú)效和down狀態(tài)
在eureka server的web界面上
我們經(jīng)常看見有的實(shí)例明明被我們關(guān)掉了,但是仍然展示在服務(wù)實(shí)例的列表里面,而且狀態(tài)還是UP?
這種情況是eureka的自我保護(hù)機(jī)制導(dǎo)致的。由于eureka和實(shí)例之間要進(jìn)行心跳檢測(cè),但是當(dāng)網(wǎng)絡(luò)故障時(shí),eureka server不能準(zhǔn)確判斷這個(gè)實(shí)例時(shí)存活還是死亡,于是采取的默認(rèn)策略是認(rèn)為其任然存活。
這是eureka的AP思想(Availability-可用性,Partition-分區(qū)容錯(cuò)性)的體現(xiàn),給予實(shí)例存活的狀態(tài)。
當(dāng)然我們也可以通過(guò)如下配置,來(lái)關(guān)掉eureka的自我保護(hù)機(jī)制(僅限開發(fā)環(huán)境),這樣一旦接收不到實(shí)例心跳,就將其剔除。
eureka.server.enable-self-preservation=false
但是生產(chǎn)環(huán)境是不能使用這種配置的,否則網(wǎng)絡(luò)狀況一不穩(wěn)定,就將本來(lái)是健康的實(shí)例剔除掉,會(huì)大大降低服務(wù)的可用性。
備注:有的文章說(shuō)造成這種現(xiàn)象的原因是我們的服務(wù)沒有正常關(guān)閉,IDEA中我們直接Stop服務(wù)會(huì)導(dǎo)致這種狀況,如果選擇Exit就不會(huì)出現(xiàn)這種情況。我還沒有驗(yàn)證。
對(duì)于一些已經(jīng)DOWN掉的節(jié)點(diǎn)
想直接剔除掉,不想讓他展示在界面中?
這個(gè)問(wèn)題和上個(gè)問(wèn)題的解決辦法是一致的,如下。
解決辦法:
使用Postman發(fā)送delete請(qǐng)求,主動(dòng)刪除無(wú)效實(shí)例。
如圖,我們構(gòu)建上述DELETE請(qǐng)求
DELETE請(qǐng)求 http://localhost:8761/eureka/apps/ABC-BOOT/192.168.1.50:abc-boot:9020 # 格式 http://注冊(cè)中心地址/eureka/apps/實(shí)例名稱/節(jié)點(diǎn)詳細(xì)信息
1.注意要使用DELETE請(qǐng)求;
2.注意JESSIONID可以從eureka界面的F12中獲取,否則會(huì)驗(yàn)證失敗。
eureka自動(dòng)剔除無(wú)效的服務(wù)
由于Eureka擁有自我保護(hù)機(jī)制,當(dāng)其注冊(cè)表里服務(wù)因?yàn)榫W(wǎng)絡(luò)或其他原因出現(xiàn)故障而關(guān)停時(shí),Eureka不會(huì)剔除服務(wù)注冊(cè),而是等待其修復(fù)。這是AP的一種實(shí)現(xiàn)。
若要剔除無(wú)效服務(wù),可以按照以下方式實(shí)現(xiàn)
在eureka注冊(cè)服務(wù)中心上配置
server端配置:
eureka: ? ? server: ? ? ? ? enable-self-preservation: false ? ? ? ? eviction-interval-timer-in-ms: 4000
enable-self-preservation
: 關(guān)閉自我保護(hù)模式(缺省為打開)eviction-interval-timer-in-ms
: 續(xù)期時(shí)間,即掃描失效服務(wù)的間隔時(shí)間
在eureka client節(jié)點(diǎn)上配置
client配置:
eureka: ? ? instance: ? ? ? ? lease-renewal-interval-in-seconds: 10 ? ? ? ? lease-expiration-duration-in-seconds: 30
lease-renewal-interval-in-seconds
:表示eureka client發(fā)送心跳給server端的頻率lease-expiration-duration-in-seconds
: 發(fā)呆時(shí)間,即服務(wù)續(xù)約到期時(shí)間
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot集成mqtt超級(jí)詳細(xì)步驟
這篇文章主要介紹了springboot集成mqtt超級(jí)詳細(xì)步驟,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06ssm項(xiàng)目實(shí)現(xiàn)用戶登陸持久化(token)
這篇文章主要介紹了ssm項(xiàng)目實(shí)現(xiàn)用戶登陸持久化(token),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Spring boot中自定義Json參數(shù)解析器的方法
這篇文章主要介紹了Spring boot中自定義Json參數(shù)解析器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Java中的Unsafe在安全領(lǐng)域的使用總結(jié)和復(fù)現(xiàn)(實(shí)例詳解)
unsafe里面有很多好用的方法,比如allocateInstance可以直接創(chuàng)建實(shí)例對(duì)象,defineAnonymousClass可以創(chuàng)建一個(gè)VM匿名類(VM?Anonymous?Class),以及直接從內(nèi)存級(jí)別修改對(duì)象的值。這篇文章主要介紹了Java中的Unsafe在安全領(lǐng)域的一些應(yīng)用總結(jié)和復(fù)現(xiàn),需要的朋友可以參考下2022-03-03java fastJson轉(zhuǎn)JSON兩種常見的轉(zhuǎn)義操作
在實(shí)際開發(fā)中,我們有時(shí)需要將特殊字符進(jìn)行轉(zhuǎn)義,本文主要介紹了java fastJson轉(zhuǎn)JSON兩種常見的轉(zhuǎn)義操作,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Spring Boot多數(shù)據(jù)源及其事務(wù)管理配置方法
本篇文章主要介紹了Spring Boot多數(shù)據(jù)源及其事務(wù)管理配置方法,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04