本發(fā)明實(shí)施方式涉及通訊技術(shù)領(lǐng)域,尤其涉及一種云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的方法和系統(tǒng)。
背景技術(shù):
云接入控制器(Access Controller,AC)系統(tǒng)往往通過(guò)超文本標(biāo)記語(yǔ)言(HyperText Markup Language,HTML)呈現(xiàn)系統(tǒng)的功能接口,用戶可以通過(guò)瀏覽器連接云接入控制器系統(tǒng),進(jìn)行各種操作。
由于云接入控制器系統(tǒng)需要同時(shí)處理大量的終端設(shè)備連接信息,單臺(tái)服務(wù)器已經(jīng)不能滿足業(yè)務(wù)數(shù)據(jù)處理的性能要求,為了解決大數(shù)據(jù)的處理場(chǎng)景,需要把業(yè)務(wù)處理分布到多臺(tái)服務(wù)器中。云接入控制器分布式系統(tǒng)由多臺(tái)服務(wù)器組成,每臺(tái)服務(wù)器運(yùn)行系統(tǒng)中的多個(gè)業(yè)務(wù)模塊,當(dāng)處理能力達(dá)到閥值時(shí),云接入控制器系統(tǒng)可以通過(guò)動(dòng)態(tài)的增加服務(wù)器,或在服務(wù)器中增加系統(tǒng)業(yè)務(wù)模塊來(lái)解決性能上的問(wèn)題。
在分布式環(huán)境下,云接入控制器由多個(gè)服務(wù)器以及多個(gè)業(yè)務(wù)模塊組成。在運(yùn)行過(guò)程中,可能會(huì)遇到多種異常情況,比如服務(wù)器發(fā)生硬件故障、電源發(fā)生異常、服務(wù)器的CPU,內(nèi)存使用率超過(guò)設(shè)置的閥值,運(yùn)行中的業(yè)務(wù)模塊發(fā)生異常導(dǎo)致處理進(jìn)程終止執(zhí)行等等。當(dāng)發(fā)生這些運(yùn)行異常時(shí),需要實(shí)時(shí)的把系統(tǒng)的異常狀況發(fā)送給運(yùn)維人員,以便及時(shí)處理。運(yùn)維人員也需要實(shí)時(shí)了解云接入控制器系統(tǒng)中各個(gè)服務(wù)器的運(yùn)行狀態(tài),以及業(yè)務(wù)模塊的進(jìn)程狀態(tài)。
在實(shí)施本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在如下問(wèn)題:
現(xiàn)有技術(shù)中云接入控制器使用分布式方法處理大量業(yè)務(wù)數(shù)據(jù)時(shí),考慮到系統(tǒng)運(yùn)行的復(fù)雜性和多種故障發(fā)生的可能性,沒(méi)有一種可靠的機(jī)制實(shí)時(shí)監(jiān)控分布式系統(tǒng)中各個(gè)組件的運(yùn)行狀態(tài),系統(tǒng)沒(méi)有提供在這種復(fù)雜環(huán)境下的系統(tǒng)運(yùn)行監(jiān)控方案。
應(yīng)該注意,上面對(duì)技術(shù)背景的介紹只是為了方便對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整的說(shuō)明,并方便本領(lǐng)域技術(shù)人員的理解而闡述的。不能僅僅因?yàn)檫@些方案在本發(fā)明的背景技術(shù)部分進(jìn)行了闡述而認(rèn)為上述技術(shù)方案為本領(lǐng)域技術(shù)人員所公知。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述問(wèn)題,本發(fā)明實(shí)施方式的目的在于提供一種云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的方法和系統(tǒng),能夠把系統(tǒng)的監(jiān)控置于分布式環(huán)境下,保證在發(fā)生故障時(shí),監(jiān)控系統(tǒng)實(shí)時(shí)的發(fā)現(xiàn)系統(tǒng)的運(yùn)行故障,即使單臺(tái)或多臺(tái)監(jiān)控進(jìn)程發(fā)生故障,也能保證監(jiān)控機(jī)制的正確運(yùn)行。
為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施方式提供一種云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的方法,所述云接入控制器為由多個(gè)服務(wù)器以及多個(gè)業(yè)務(wù)模塊組成的分布式系統(tǒng),所述方法包括:云接入控制器設(shè)置多個(gè)監(jiān)控進(jìn)程,其中一個(gè)為當(dāng)前監(jiān)控進(jìn)程,其余為備份監(jiān)控進(jìn)程;分布式處理框架創(chuàng)建監(jiān)控當(dāng)前監(jiān)控進(jìn)程的根結(jié)點(diǎn),并在所述根結(jié)點(diǎn)下創(chuàng)建孩子結(jié)點(diǎn),根據(jù)預(yù)設(shè)規(guī)則,為根結(jié)點(diǎn)下的孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限,擁有所述監(jiān)控權(quán)限的孩子結(jié)點(diǎn)監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程;所述當(dāng)前監(jiān)控進(jìn)程監(jiān)控云接入控制器中多個(gè)服務(wù)器的服務(wù)器性能數(shù)據(jù)和/或多個(gè)業(yè)務(wù)模塊的業(yè)務(wù)處理信息;如果當(dāng)前監(jiān)控進(jìn)程發(fā)生異常,分布式處理框架刪除監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的孩子結(jié)點(diǎn),從所述備份監(jiān)控進(jìn)程中確定新的當(dāng)前監(jiān)控進(jìn)程,并從所述根結(jié)點(diǎn)下的所有孩子結(jié)點(diǎn)中確定新的孩子結(jié)點(diǎn)監(jiān)控新的當(dāng)前監(jiān)控進(jìn)程。
進(jìn)一步地,所述所述孩子結(jié)點(diǎn)采用孩子結(jié)點(diǎn)名稱和序列值標(biāo)識(shí),其中,所述根結(jié)點(diǎn)中孩子結(jié)點(diǎn)的序列值為其前一個(gè)孩子結(jié)點(diǎn)的序列值加1;所述根據(jù)預(yù)設(shè)規(guī)則,分布式處理框架為根結(jié)點(diǎn)下的孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限,包括:獲取所述根結(jié)點(diǎn)下的所有孩子結(jié)點(diǎn)的序列值,判斷當(dāng)前孩子結(jié)點(diǎn)的序列值在所有孩子結(jié)點(diǎn)的序列值中是否最小;如果是,則分布式處理框架為序列值最小的當(dāng)前孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限;如果否,則當(dāng)前孩子結(jié)點(diǎn)在其前一個(gè)孩子結(jié)點(diǎn)中設(shè)置狀態(tài)監(jiān)聽(tīng)回調(diào),并判斷所述前一個(gè)孩子結(jié)點(diǎn)的序列值在所有孩子結(jié)點(diǎn)的序列值中是否最小;直到在所述根結(jié)點(diǎn)下確定出序列值最小的孩子結(jié)點(diǎn);分布式處理框架為序列值最小的孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限。
進(jìn)一步地,所述所述當(dāng)前監(jiān)控進(jìn)程監(jiān)控云接入控制器中多個(gè)服務(wù)器的服務(wù)器性能數(shù)據(jù)和/或多個(gè)業(yè)務(wù)模塊的業(yè)務(wù)處理信息,包括:在所述根結(jié)點(diǎn)下創(chuàng)建服務(wù)結(jié)點(diǎn)以及在所述服務(wù)結(jié)點(diǎn)下創(chuàng)建子結(jié)點(diǎn),所述子結(jié)點(diǎn)包括第一子結(jié)點(diǎn)和第二子結(jié)點(diǎn),其中,所述第一子結(jié)點(diǎn)用于監(jiān)控服務(wù)器的服務(wù)器性能數(shù)據(jù),所述第二子結(jié)點(diǎn)用于監(jiān)控業(yè)務(wù)模塊的業(yè)務(wù)處理信息;當(dāng)前監(jiān)控進(jìn)程啟動(dòng)后,將所述服務(wù)結(jié)點(diǎn)下的所有子結(jié)點(diǎn)加入到緩存中并監(jiān)聽(tīng)所有子結(jié)點(diǎn)的狀態(tài),當(dāng)存在子結(jié)點(diǎn)的狀態(tài)發(fā)生改變時(shí),獲取所述服務(wù)結(jié)點(diǎn)下的所有子結(jié)點(diǎn),并將獲取的所有子結(jié)點(diǎn)和緩存中的所有子結(jié)點(diǎn)進(jìn)行比較;如果緩存中的子結(jié)點(diǎn)在獲取的子結(jié)點(diǎn)中不存在,則當(dāng)前監(jiān)控進(jìn)程判斷出所述不存在的子結(jié)點(diǎn)發(fā)生異常并將異常信息發(fā)送給云接入控制器;如果緩存中的子結(jié)點(diǎn)在獲取的子結(jié)點(diǎn)存在,則當(dāng)前監(jiān)控進(jìn)程獲取所述存在的子結(jié)點(diǎn)監(jiān)控的服務(wù)器性能數(shù)據(jù)和/或業(yè)務(wù)處理信息并發(fā)送給云接入控制器進(jìn)行處理。
進(jìn)一步地,所述當(dāng)前監(jiān)控進(jìn)程發(fā)生異常,包括:所述當(dāng)前監(jiān)控進(jìn)程根據(jù)預(yù)先設(shè)置的時(shí)間間隔周期性地發(fā)送服務(wù)器性能數(shù)據(jù)和/或業(yè)務(wù)處理信息;如果在所述時(shí)間間隔內(nèi)沒(méi)有收到所述當(dāng)前監(jiān)控進(jìn)程發(fā)送的服務(wù)器性能數(shù)據(jù)和/或業(yè)務(wù)處理信息,則所述當(dāng)前監(jiān)控進(jìn)程發(fā)生異常。
進(jìn)一步地,所述分布式處理框架刪除監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的孩子結(jié)點(diǎn),從所述備份監(jiān)控進(jìn)程中確定新的當(dāng)前監(jiān)控進(jìn)程,并從所述根結(jié)點(diǎn)下的所有孩子結(jié)點(diǎn)中確定新的孩子結(jié)點(diǎn)監(jiān)控新的當(dāng)前監(jiān)控進(jìn)程,包括:分布式處理框架刪除監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的孩子結(jié)點(diǎn),并將結(jié)點(diǎn)刪除信息發(fā)送給下一個(gè)序列值的孩子結(jié)點(diǎn);當(dāng)所述下一個(gè)序列值的孩子結(jié)點(diǎn)收到所述結(jié)點(diǎn)刪除信息時(shí),向所述根結(jié)點(diǎn)發(fā)送所述當(dāng)前監(jiān)控進(jìn)程和監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的孩子結(jié)點(diǎn)的異常信息,則分布式處理框架從所述備份監(jiān)控進(jìn)程中確定新的當(dāng)前監(jiān)控進(jìn)程,并根據(jù)所述預(yù)設(shè)規(guī)則從所述根結(jié)點(diǎn)下的所有孩子結(jié)點(diǎn)中確定新的孩子結(jié)點(diǎn)監(jiān)控新的當(dāng)前監(jiān)控進(jìn)程。
為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施方式還提供一種云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的系統(tǒng),包括:云接入控制器,為由多個(gè)服務(wù)器以及多個(gè)業(yè)務(wù)模塊組成的分布式系統(tǒng),用于設(shè)置多個(gè)監(jiān)控進(jìn)程,其中一個(gè)為當(dāng)前監(jiān)控進(jìn)程,其余為備份監(jiān)控進(jìn)程;分布式處理框架,用于創(chuàng)建永久結(jié)點(diǎn)以及在所述永久結(jié)點(diǎn)下創(chuàng)建臨時(shí)結(jié)點(diǎn),所述永久結(jié)點(diǎn)為監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的根結(jié)點(diǎn),所述臨時(shí)結(jié)點(diǎn)為所述根結(jié)點(diǎn)的孩子結(jié)點(diǎn);根據(jù)預(yù)設(shè)規(guī)則,為根結(jié)點(diǎn)下的孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限,擁有所述監(jiān)控權(quán)限的孩子結(jié)點(diǎn)監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程;所述當(dāng)前監(jiān)控進(jìn)程監(jiān)控云接入控制器中多個(gè)服務(wù)器的服務(wù)器性能數(shù)據(jù)和/或多個(gè)業(yè)務(wù)模塊的業(yè)務(wù)處理信息,如果當(dāng)前監(jiān)控進(jìn)程發(fā)生異常,則刪除監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的孩子結(jié)點(diǎn),從所述備份監(jiān)控進(jìn)程中確定新的當(dāng)前監(jiān)控進(jìn)程,并從所述根結(jié)點(diǎn)下的所有孩子結(jié)點(diǎn)中確定新的孩子結(jié)點(diǎn)監(jiān)控新的當(dāng)前監(jiān)控進(jìn)程。
由上可見(jiàn),本發(fā)明實(shí)施方式提供的一種云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的方法和系統(tǒng),通過(guò)使用分布式監(jiān)控方式,把監(jiān)控置于分布式環(huán)境下,保證在發(fā)生故障時(shí),監(jiān)控系統(tǒng)能實(shí)時(shí)的發(fā)現(xiàn)系統(tǒng)的運(yùn)行故障,即使單臺(tái)或多臺(tái)監(jiān)控進(jìn)程發(fā)生故障,也能保證監(jiān)控機(jī)制的正確運(yùn)行。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖逐一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施方式,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施方式提供的云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的方法的流程示意圖;
圖2為本發(fā)明實(shí)施方式提供的云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的系統(tǒng)的示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施方式的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施方式中的附圖,對(duì)本發(fā)明實(shí)施方式中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施方式是本發(fā)明一部分實(shí)施方式,而不是全部的實(shí)施方式?;诒景l(fā)明中的實(shí)施方式,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施方式,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施方式提供一種云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的方法。請(qǐng)參閱圖1,包括以下步驟:
步驟S1:云接入控制器設(shè)置多個(gè)監(jiān)控進(jìn)程,其中一個(gè)為當(dāng)前監(jiān)控進(jìn)程,其余為備份監(jiān)控進(jìn)程。
在本發(fā)明實(shí)施方式中,云接入控制器為由多個(gè)服務(wù)器以及多個(gè)業(yè)務(wù)模塊組成的分布式系統(tǒng)。
云接入控制器設(shè)置多個(gè)監(jiān)控進(jìn)程,優(yōu)選地,監(jiān)控進(jìn)程的數(shù)量為三個(gè),它們分別部署在三臺(tái)不同的服務(wù)器中。在同一個(gè)時(shí)刻,只有一個(gè)監(jiān)控進(jìn)程作為當(dāng)前監(jiān)控進(jìn)程在運(yùn)行,其它監(jiān)控進(jìn)程作為備份。
步驟S2:在分布式處理框架中創(chuàng)建監(jiān)控當(dāng)前監(jiān)控進(jìn)程的根結(jié)點(diǎn),并在所述根結(jié)點(diǎn)下創(chuàng)建孩子結(jié)點(diǎn)。
在本實(shí)施方式中,分布式處理框架基于ZooKeeper,該ZooKeeper是一個(gè)開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),能夠?yàn)榉植际綉?yīng)用提供一致性服務(wù),主要用來(lái)解決分布式應(yīng)用中數(shù)據(jù)管理的問(wèn)題,例如提供的功能包括:統(tǒng)一命名服務(wù)、狀態(tài)同步服務(wù)、集群管理、分布式應(yīng)用配置項(xiàng)的管理等。此外,ZooKeeper還能夠提供基于類似于文件系統(tǒng)的目錄結(jié)點(diǎn)樹方式的數(shù)據(jù)存儲(chǔ),主要用來(lái)維護(hù)和監(jiān)控存儲(chǔ)的數(shù)據(jù)的狀態(tài)變化。通過(guò)監(jiān)控這些數(shù)據(jù)狀態(tài)的變化,從而可以達(dá)到基于數(shù)據(jù)的集群管理。
在ZooKeeper中創(chuàng)建一個(gè)永久結(jié)點(diǎn)monitors,該永久結(jié)點(diǎn)monitors作為監(jiān)控當(dāng)前監(jiān)控進(jìn)程的根結(jié)點(diǎn)。
監(jiān)控進(jìn)程啟動(dòng)后,在該永久結(jié)點(diǎn)monitors下創(chuàng)建臨時(shí)結(jié)點(diǎn)/monitors/monitor-監(jiān)控進(jìn)程ID-,即所述根結(jié)點(diǎn)的孩子結(jié)點(diǎn),同時(shí)設(shè)置孩子結(jié)點(diǎn)為序列值自增結(jié)點(diǎn),ZooKeeper將在孩子結(jié)點(diǎn)名稱的最后自動(dòng)加上序列值,例如根結(jié)點(diǎn)中孩子結(jié)點(diǎn)的序列值為前一個(gè)孩子結(jié)點(diǎn)的序列值加1。
步驟S3:根據(jù)預(yù)設(shè)規(guī)則,所述分布式處理框架為根結(jié)點(diǎn)下的孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限,擁有所述監(jiān)控權(quán)限的孩子結(jié)點(diǎn)監(jiān)控當(dāng)前監(jiān)控進(jìn)程。
在本發(fā)明實(shí)施方式中,分配監(jiān)控權(quán)限的預(yù)設(shè)規(guī)則為:
獲取根結(jié)點(diǎn)下的所有孩子結(jié)點(diǎn)的序列值,判斷當(dāng)前孩子結(jié)點(diǎn)的序列值在所有孩子結(jié)點(diǎn)的序列值中是否最?。?/p>
如果是,則分布式處理框架為序列值最小的當(dāng)前孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限,當(dāng)前孩子結(jié)點(diǎn)獲取監(jiān)控權(quán)限后,啟動(dòng)監(jiān)控當(dāng)前監(jiān)控進(jìn)程;
如果否,則當(dāng)前孩子結(jié)點(diǎn)在前一個(gè)孩子結(jié)點(diǎn)中設(shè)置狀態(tài)監(jiān)聽(tīng)回調(diào),例如如果當(dāng)前孩子結(jié)點(diǎn)的序列值為2,那么在序列值為1的孩子結(jié)點(diǎn)上設(shè)置狀態(tài)監(jiān)聽(tīng)回調(diào);判斷該前一個(gè)孩子結(jié)點(diǎn)的序列值在所有孩子結(jié)點(diǎn)的序列值值中是否是最小的;直到在根結(jié)點(diǎn)下確定出序列值最小的孩子結(jié)點(diǎn)作為當(dāng)前孩子結(jié)點(diǎn);分布式處理框架為序列值中最小的孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限,該孩子結(jié)點(diǎn)獲取監(jiān)控權(quán)限后,啟動(dòng)監(jiān)控當(dāng)前監(jiān)控進(jìn)程。
步驟S4:當(dāng)前監(jiān)控進(jìn)程監(jiān)控云接入控制器中多個(gè)服務(wù)器的服務(wù)器性能數(shù)據(jù)和/或多個(gè)業(yè)務(wù)模塊的業(yè)務(wù)處理信息。
在本發(fā)明實(shí)施方式中,在所述根結(jié)點(diǎn)下創(chuàng)建服務(wù)(Server)結(jié)點(diǎn),并在服務(wù)結(jié)點(diǎn)下創(chuàng)建子結(jié)點(diǎn),該子結(jié)點(diǎn)包括第一子結(jié)點(diǎn)和第二子結(jié)點(diǎn)。
具體地,服務(wù)器性能采集程序啟動(dòng)后,在服務(wù)結(jié)點(diǎn)下創(chuàng)建臨時(shí)結(jié)點(diǎn),即服務(wù)結(jié)點(diǎn)的第一子結(jié)點(diǎn),云接入控制器將服務(wù)器信息寫入第一子結(jié)點(diǎn)中已使第一子結(jié)點(diǎn)監(jiān)控服務(wù)器的服務(wù)器性能數(shù)據(jù),所述服務(wù)器信息可以包括但不限于:主機(jī)名稱,CPU、內(nèi)存、磁盤等性能指標(biāo)等。業(yè)務(wù)模塊啟動(dòng)后,在服務(wù)結(jié)點(diǎn)下創(chuàng)建臨時(shí)結(jié)點(diǎn),即服務(wù)結(jié)點(diǎn)的第二子結(jié)點(diǎn),云接入控制器將業(yè)務(wù)模塊信息寫入第二子結(jié)點(diǎn)中已使第二子結(jié)點(diǎn)監(jiān)控業(yè)務(wù)模塊的業(yè)務(wù)處理信息,所述業(yè)務(wù)模塊信息可以包括但不限于:主機(jī)名稱,模塊名稱,時(shí)間段內(nèi)業(yè)務(wù)處理量等。
當(dāng)前監(jiān)控進(jìn)程獲取服務(wù)器信息和業(yè)務(wù)模塊信息進(jìn)行監(jiān)控處理。
具體地,監(jiān)控進(jìn)程啟動(dòng)后,將服務(wù)結(jié)點(diǎn)下的所有子結(jié)點(diǎn)加入到緩存中并監(jiān)聽(tīng)所有子結(jié)點(diǎn)的狀態(tài)。如果有子結(jié)點(diǎn)的狀態(tài)發(fā)生改變,則獲取服務(wù)結(jié)點(diǎn)下的所有子結(jié)點(diǎn)。將獲取的服務(wù)結(jié)點(diǎn)下的所有子結(jié)點(diǎn)與緩存中的所有子結(jié)點(diǎn)進(jìn)行比較,如果緩存中的子結(jié)點(diǎn)在獲取的子結(jié)點(diǎn)中不存在,則監(jiān)控進(jìn)程認(rèn)為這些不存在的子結(jié)點(diǎn)發(fā)生了異常,監(jiān)控進(jìn)程向云接入控制器發(fā)送異常消息;如果緩存中的子結(jié)點(diǎn)在獲取的子結(jié)點(diǎn)存在,則監(jiān)控進(jìn)程獲取子結(jié)點(diǎn)中的服務(wù)器性能數(shù)據(jù)和/或業(yè)務(wù)處理信息發(fā)送給云接入控制器進(jìn)行處理。
步驟S5:如果當(dāng)前監(jiān)控進(jìn)程發(fā)生異常,分布式處理框架刪除監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的孩子結(jié)點(diǎn),從所述備份監(jiān)控進(jìn)程中確定新的當(dāng)前監(jiān)控進(jìn)程,并從所述根結(jié)點(diǎn)下的所有孩子結(jié)點(diǎn)中確定新的孩子結(jié)點(diǎn)監(jiān)控新的當(dāng)前監(jiān)控進(jìn)程。
在本發(fā)明實(shí)施方式中,通過(guò)監(jiān)控當(dāng)前監(jiān)控進(jìn)程的孩子結(jié)點(diǎn),當(dāng)前監(jiān)控進(jìn)程與根結(jié)點(diǎn)進(jìn)行信息交互,例如服務(wù)器性能數(shù)據(jù)和/或業(yè)務(wù)處理信息。此外,分布式處理框架預(yù)先設(shè)置時(shí)間間隔,例如5分鐘,當(dāng)前監(jiān)控進(jìn)程根據(jù)時(shí)間間隔周期性地向根結(jié)點(diǎn)發(fā)送服務(wù)器性能數(shù)據(jù)和/或業(yè)務(wù)處理信息。
如果根結(jié)點(diǎn)在時(shí)間間隔內(nèi)沒(méi)有收到當(dāng)前監(jiān)控進(jìn)程發(fā)送的信息,即監(jiān)控進(jìn)程終止與根結(jié)點(diǎn)的信息交互,分布式處理框架刪除監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的孩子結(jié)點(diǎn),并將該結(jié)點(diǎn)刪除信息發(fā)送給下一個(gè)序列值的孩子結(jié)點(diǎn)。
因?yàn)楹⒆咏Y(jié)點(diǎn)在前一個(gè)孩子結(jié)點(diǎn)中設(shè)置狀態(tài)監(jiān)聽(tīng)回調(diào),當(dāng)下一個(gè)序列值的孩子結(jié)點(diǎn)收到前一個(gè)孩子結(jié)點(diǎn)的結(jié)點(diǎn)刪除信息時(shí),則認(rèn)為當(dāng)前監(jiān)控進(jìn)程發(fā)生異常,通過(guò)算法從其它備份的監(jiān)控進(jìn)程中挑選出一個(gè)新的監(jiān)控進(jìn)程接管運(yùn)行。其中從備份監(jiān)控進(jìn)程中挑選一個(gè)新的監(jiān)控進(jìn)程接管運(yùn)行的具體算法在本發(fā)明實(shí)施方式中并不作限制。
此外,分布式處理框架再次獲取根結(jié)點(diǎn)下的所有孩子結(jié)點(diǎn)的序列值,并根據(jù)前述的預(yù)設(shè)規(guī)則確定序列值最小的孩子結(jié)點(diǎn)作為新的孩子結(jié)點(diǎn)監(jiān)控新的當(dāng)前監(jiān)控進(jìn)程。
如圖2所示,本發(fā)明實(shí)施方式提供一種云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的系統(tǒng),包括:
云接入控制器,為由多個(gè)服務(wù)器以及多個(gè)業(yè)務(wù)模塊組成的分布式系統(tǒng),用于設(shè)置多個(gè)監(jiān)控進(jìn)程,其中一個(gè)為當(dāng)前監(jiān)控進(jìn)程,其余為備份監(jiān)控進(jìn)程;
分布式處理框架,用于創(chuàng)建永久結(jié)點(diǎn)以及在所述永久結(jié)點(diǎn)下創(chuàng)建臨時(shí)結(jié)點(diǎn),所述永久結(jié)點(diǎn)為監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的根結(jié)點(diǎn),所述臨時(shí)結(jié)點(diǎn)為所述根結(jié)點(diǎn)的孩子結(jié)點(diǎn);根據(jù)預(yù)設(shè)規(guī)則,為根結(jié)點(diǎn)下的孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限,擁有所述監(jiān)控權(quán)限的孩子結(jié)點(diǎn)監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程;所述當(dāng)前監(jiān)控進(jìn)程監(jiān)控云接入控制器中多個(gè)服務(wù)器的服務(wù)器性能數(shù)據(jù)和/或多個(gè)業(yè)務(wù)模塊的業(yè)務(wù)處理信息,如果當(dāng)前監(jiān)控進(jìn)程發(fā)生異常,則刪除監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的孩子結(jié)點(diǎn),從所述備份監(jiān)控進(jìn)程中確定新的當(dāng)前監(jiān)控進(jìn)程,并從所述根結(jié)點(diǎn)下的所有孩子結(jié)點(diǎn)中確定新的孩子結(jié)點(diǎn)監(jiān)控新的當(dāng)前監(jiān)控進(jìn)程。
其中,
所述分布式處理框架為根結(jié)點(diǎn)下的孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限,具體為:
獲取所述根結(jié)點(diǎn)下的所有孩子結(jié)點(diǎn)的序列值,判斷當(dāng)前孩子結(jié)點(diǎn)的序列值在所有孩子結(jié)點(diǎn)的序列值中是否最小;如果是,則為序列值最小的當(dāng)前孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限;如果否,則當(dāng)前孩子結(jié)點(diǎn)在其前一個(gè)孩子結(jié)點(diǎn)中設(shè)置狀態(tài)監(jiān)聽(tīng)回調(diào),并判斷所述前一個(gè)孩子結(jié)點(diǎn)的序列值在所有孩子結(jié)點(diǎn)的序列值中是否最?。恢钡皆谒龈Y(jié)點(diǎn)下確定出序列值最小的孩子結(jié)點(diǎn)為序列值最小的孩子結(jié)點(diǎn)分配監(jiān)控權(quán)限。
所述分布式處理框架,還具體用于:
在所述根結(jié)點(diǎn)下創(chuàng)建服務(wù)結(jié)點(diǎn)以及在所述服務(wù)結(jié)點(diǎn)下創(chuàng)建子結(jié)點(diǎn),所述子結(jié)點(diǎn)包括第一子結(jié)點(diǎn)和第二子結(jié)點(diǎn),其中,所述第一子結(jié)點(diǎn)用于監(jiān)控服務(wù)器的服務(wù)器性能數(shù)據(jù),所述第二子結(jié)點(diǎn)用于監(jiān)控業(yè)務(wù)模塊的業(yè)務(wù)處理信息;當(dāng)前監(jiān)控進(jìn)程啟動(dòng)后,將所述服務(wù)結(jié)點(diǎn)下的所有子結(jié)點(diǎn)加入到緩存中并監(jiān)聽(tīng)所有子結(jié)點(diǎn)的狀態(tài),當(dāng)存在子結(jié)點(diǎn)的狀態(tài)發(fā)生改變時(shí),獲取所述服務(wù)結(jié)點(diǎn)下的所有子結(jié)點(diǎn),并將獲取的所有子結(jié)點(diǎn)和緩存中的所有子結(jié)點(diǎn)進(jìn)行比較;如果緩存中的子結(jié)點(diǎn)在獲取的子結(jié)點(diǎn)中不存在,則當(dāng)前監(jiān)控進(jìn)程判斷出所述不存在的子結(jié)點(diǎn)發(fā)生異常并將異常信息發(fā)送給云接入控制器;如果緩存中的子結(jié)點(diǎn)在獲取的子結(jié)點(diǎn)存在,則當(dāng)前監(jiān)控進(jìn)程獲取所述存在的子結(jié)點(diǎn)監(jiān)控的服務(wù)器性能數(shù)據(jù)和/或業(yè)務(wù)處理信息并發(fā)送給云接入控制器進(jìn)行處理。
所述當(dāng)前監(jiān)控進(jìn)程發(fā)生異常,具體為:
當(dāng)前監(jiān)控進(jìn)程根據(jù)預(yù)先設(shè)置的時(shí)間間隔周期性地發(fā)送服務(wù)器性能數(shù)據(jù)和/或業(yè)務(wù)處理信息;如果在所述時(shí)間間隔內(nèi)沒(méi)有收到所述當(dāng)前監(jiān)控進(jìn)程發(fā)送的服務(wù)器性能數(shù)據(jù)和/或業(yè)務(wù)處理信息,則所述當(dāng)前監(jiān)控進(jìn)程發(fā)生異常。
所述分布式處理框架,還具體用于:
如果當(dāng)前監(jiān)控進(jìn)程發(fā)生異常,分布式處理框架刪除監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的孩子結(jié)點(diǎn),并將結(jié)點(diǎn)刪除信息發(fā)送給下一個(gè)序列值的孩子結(jié)點(diǎn);當(dāng)所述下一個(gè)序列值的孩子結(jié)點(diǎn)收到所述結(jié)點(diǎn)刪除信息時(shí),向所述根結(jié)點(diǎn)發(fā)送所述當(dāng)前監(jiān)控進(jìn)程和監(jiān)控所述當(dāng)前監(jiān)控進(jìn)程的孩子結(jié)點(diǎn)的異常信息,則分布式處理框架從所述備份監(jiān)控進(jìn)程中確定新的當(dāng)前監(jiān)控進(jìn)程,并根據(jù)所述預(yù)設(shè)規(guī)則從所述根結(jié)點(diǎn)下的所有孩子結(jié)點(diǎn)中確定新的孩子結(jié)點(diǎn)監(jiān)控新的當(dāng)前監(jiān)控進(jìn)程。
上述的涉及到的云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的系統(tǒng)的具體技術(shù)細(xì)節(jié)和云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的方法中的類似,故不再具體贅述。
由上可見(jiàn),本發(fā)明實(shí)施方式提供的一種云接入控制器運(yùn)行狀態(tài)分布式監(jiān)控的方法和系統(tǒng),通過(guò)使用分布式監(jiān)控方式,把監(jiān)控置于分布式環(huán)境下,保證在發(fā)生故障時(shí),監(jiān)控系統(tǒng)能實(shí)時(shí)的發(fā)現(xiàn)系統(tǒng)的運(yùn)行故障,即使單臺(tái)或多臺(tái)監(jiān)控進(jìn)程發(fā)生故障,也能保證監(jiān)控機(jī)制的正確運(yùn)行。
本說(shuō)明書中的各個(gè)實(shí)施方式均采用遞進(jìn)的方式描述,各個(gè)實(shí)施方式之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施方式重點(diǎn)說(shuō)明的都是與其他實(shí)施方式的不同之處。
最后應(yīng)說(shuō)明的是:上面對(duì)本發(fā)明的各種實(shí)施方式的描述以描述的目的提供給本領(lǐng)域技術(shù)人員。其不旨在是窮舉的、或者不旨在將本發(fā)明限制于單個(gè)公開的實(shí)施方式。如上所述,本發(fā)明的各種替代和變化對(duì)于上述技術(shù)所屬領(lǐng)域技術(shù)人員而言將是顯而易見(jiàn)的。因此,雖然已經(jīng)具體討論了一些另選的實(shí)施方式,但是其它實(shí)施方式將是顯而易見(jiàn)的,或者本領(lǐng)域技術(shù)人員相對(duì)容易得出。本發(fā)明旨在包括在此已經(jīng)討論過(guò)的本發(fā)明的所有替代、修改、和變化,以及落在上述申請(qǐng)的精神和范圍內(nèi)的其它實(shí)施方式。