如何剔除eureka無效和down狀態(tài)的問題
如何剔除eureka無效和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)行心跳檢測,但是當(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ān)掉eureka的自我保護(hù)機(jī)制(僅限開發(fā)環(huán)境),這樣一旦接收不到實(shí)例心跳,就將其剔除。
eureka.server.enable-self-preservation=false
但是生產(chǎn)環(huán)境是不能使用這種配置的,否則網(wǎng)絡(luò)狀況一不穩(wěn)定,就將本來是健康的實(shí)例剔除掉,會大大降低服務(wù)的可用性。
備注:有的文章說造成這種現(xiàn)象的原因是我們的服務(wù)沒有正常關(guān)閉,IDEA中我們直接Stop服務(wù)會導(dǎo)致這種狀況,如果選擇Exit就不會出現(xiàn)這種情況。我還沒有驗(yàn)證。
對于一些已經(jīng)DOWN掉的節(jié)點(diǎn)
想直接剔除掉,不想讓他展示在界面中?
這個(gè)問題和上個(gè)問題的解決辦法是一致的,如下。
解決辦法:
使用Postman發(fā)送delete請求,主動(dòng)刪除無效實(shí)例。
如圖,我們構(gòu)建上述DELETE請求
DELETE請求 http://localhost:8761/eureka/apps/ABC-BOOT/192.168.1.50:abc-boot:9020 # 格式 http://注冊中心地址/eureka/apps/實(shí)例名稱/節(jié)點(diǎn)詳細(xì)信息
1.注意要使用DELETE請求;
2.注意JESSIONID可以從eureka界面的F12中獲取,否則會驗(yàn)證失敗。
eureka自動(dòng)剔除無效的服務(wù)
由于Eureka擁有自我保護(hù)機(jī)制,當(dāng)其注冊表里服務(wù)因?yàn)榫W(wǎng)絡(luò)或其他原因出現(xiàn)故障而關(guān)停時(shí),Eureka不會剔除服務(wù)注冊,而是等待其修復(fù)。這是AP的一種實(shí)現(xiàn)。
若要剔除無效服務(wù),可以按照以下方式實(shí)現(xiàn)
在eureka注冊服務(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)文章
ssm項(xiàng)目實(shí)現(xiàn)用戶登陸持久化(token)
這篇文章主要介紹了ssm項(xiàng)目實(shí)現(xiàn)用戶登陸持久化(token),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Spring boot中自定義Json參數(shù)解析器的方法
這篇文章主要介紹了Spring boot中自定義Json參數(shù)解析器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問題
這篇文章主要介紹了解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01Java中的Unsafe在安全領(lǐng)域的使用總結(jié)和復(fù)現(xiàn)(實(shí)例詳解)
unsafe里面有很多好用的方法,比如allocateInstance可以直接創(chuàng)建實(shí)例對象,defineAnonymousClass可以創(chuàng)建一個(gè)VM匿名類(VM?Anonymous?Class),以及直接從內(nèi)存級別修改對象的值。這篇文章主要介紹了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