在很多的平臺(tái)應(yīng)用中,都有這樣的需求,平臺(tái)內(nèi)包括多個(gè)子系統(tǒng)或者屬于其管控范圍內(nèi)的其他平臺(tái),需要對(duì)這些系統(tǒng)進(jìn)行統(tǒng)一的監(jiān)控,來(lái)查看當(dāng)前的運(yùn)行狀態(tài)或者其他運(yùn)行信息,我們的應(yīng)用也有這樣的一個(gè)情況,需要再外網(wǎng)服務(wù)端(平臺(tái))上監(jiān)控,其下運(yùn)行的多個(gè)內(nèi)網(wǎng)服務(wù)端的網(wǎng)絡(luò)狀況,查閱了寫資料后確立了2種可實(shí)現(xiàn)的方式。
簡(jiǎn)單的說(shuō)就是服務(wù)端需要實(shí)時(shí)了解其下運(yùn)行的客戶端的情況。
-
輪詢機(jī)制
輪詢:概括來(lái)說(shuō)是服務(wù)端定時(shí)主動(dòng)的去與要監(jiān)控狀態(tài)的客戶端(或者叫其他系統(tǒng))通信,詢問當(dāng)前的某種狀態(tài),客戶端返回狀態(tài)信息,客戶端沒有返回或返回錯(cuò)誤、失效信息、則認(rèn)為客戶端已經(jīng)宕機(jī),然后服務(wù)端自己內(nèi)部把這個(gè)客戶端的狀態(tài)保存下來(lái)(宕機(jī)或者其他),如果客戶端正常,那么返回正常狀態(tài),如果客戶端宕機(jī)或者返回的是定義的失效狀態(tài)那么當(dāng)前的客戶端狀態(tài)是能夠及時(shí)的監(jiān)控到的,如果客戶端宕機(jī)之后重啟了那么當(dāng)服務(wù)端定時(shí)來(lái)輪詢的時(shí)候,還是可以正常的獲取返回信息,把其狀態(tài)重新更新。
-
心跳
心跳:最終得到的結(jié)果是與輪詢一樣的但是實(shí)現(xiàn)的方式有差別,心跳不是服務(wù)端主動(dòng)去發(fā)信息檢測(cè)客戶端狀態(tài),而是在服務(wù)端保存下來(lái)所有客戶端的狀態(tài)信息,然后等待客戶端定時(shí)來(lái)訪問服務(wù)端,更新自己的當(dāng)前狀態(tài),如果客戶端超過指定的時(shí)間沒有來(lái)更新狀態(tài),則認(rèn)為客戶端已經(jīng)宕機(jī)或者其狀態(tài)異常。