Eureka心跳檢測

2021-10-06 23:22:09 字數 1790 閱讀 2662

註冊中心的心跳機制有兩種形式:客戶端主動上報和客戶端被動響應。eureka屬於是主動上報型別的,client通過renew機制頻繁的向server傳送訊息,通知server它還活著,不要將其從服務列表中剔除,但是我們renew僅僅是監控client是否存活,並不會去檢測client依賴的服務是否存活

從圖中我們發現client123和client456兩個客戶端均依賴了第三方元件,並且mysql同時宕機了。

client456通過擴充套件healthindicator介面和healthcheckhandler介面,然後來自定義需要監控的內容

在類discoveryclient#gethealthcheckhandler方法中選擇需要使用的健康管理器

public healthcheckhandler gethealthcheckhandler()  else if (null != healthcheckcallbackprovider) 

if (null == healthcheckhandler)

this.healthcheckhandlerref.compareandset(null, healthcheckhandler);

} return this.healthcheckhandlerref.get();

}

方法呼叫流程圖

自定義監控元件

@component

public class healthpolicybean implements initializingbean

/*** 監控redis狀態

*/protected class redistimer implements runnable else

} catch (exception e) }}

}

自定義healthindicator

/**

* cc健康指示器

*/@component

public class cchealthindicator implements healthindicator else }}

自定義healthcheckhandler

/**

* cc健康管理器

*/@component

public class cchealthcheckhandler implements healthcheckhandler

return instanceinfo.instancestatus.down;}}

方法呼叫流程圖

我們開啟redis服務,啟動eureka server、client123和client456。

在實際的生產工作中,盡量不要使用預設的healthcheckhandler,不然就算是我們專案的mysql、redis、mongodb、mq都掛掉了,只要專案的程序還存活,那麼status就很大的可能是up,但實際上專案已經無法正常提供服務了,會給我們的專案帶來很大的麻煩。

Eureka 心跳機制

server服務端 server port 8761 eureka client 例項是否在eureka伺服器上註冊自己的資訊以提供其他服務發現,預設為true register with eureka false 此客戶端是否獲取eureka伺服器登錄檔上的註冊資訊,預設為true fetch r...

LINUX PPP心跳檢測

arm linux開發 warewin 2g 3g無線傳輸 dtu 和路由器 筆記 使用ppp 層心跳檢測需在 pppd 程序的配置檔案中需配置以下兩個引數及其值 lcp echo failure 心跳失敗最大次數 lcp echo interval 心跳間隔時間 這兩個引數需配合使用,表示在乙個l...

CentOS Keepalived心跳檢測部署

簡介 keepalived的作用是檢測伺服器的狀態,如果有一台web伺服器宕機,或工作出現故障,keepalived將檢測到,並將有故障的伺服器從系統中剔除,同時使用其他伺服器代替該伺服器的工作,當伺服器工作正常後keepalived自動將伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉...