專利名稱:一種分布式系統(tǒng)中心節(jié)點(diǎn)構(gòu)建、提交、監(jiān)控方法及裝置的制作方法
技術(shù)領(lǐng)域:
本申請涉及分布式系統(tǒng)技術(shù)領(lǐng)域,特別是涉及一種分布式系統(tǒng)中心節(jié)點(diǎn)構(gòu)建方法、基于分布式系統(tǒng)中心節(jié)點(diǎn)的數(shù)據(jù)提交方法和監(jiān)控方法,及其各自對應(yīng)的裝置。
背景技術(shù):
分布式系統(tǒng)(Distributed Systems)是支持分布式處理的軟件系統(tǒng),其主要應(yīng)用是在由通信網(wǎng)絡(luò)互連的多處理機(jī)體系結(jié)構(gòu)上執(zhí)行任務(wù)。分布式系統(tǒng)根據(jù)具有使用場景的不同,通常包括分布式操作系統(tǒng)、分布式程序設(shè)計(jì)語言及其編譯(解釋)系統(tǒng)、分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)等類別。分布式系統(tǒng)與集中式系統(tǒng)相比,其穩(wěn)定性較高,具有數(shù)據(jù)自動(dòng)恢復(fù)能力和良好的抗單點(diǎn)崩潰的能力。但是,分布式系統(tǒng)的這些能力很大程度上取決于其中心節(jié)點(diǎn)的性能,尤其在網(wǎng)絡(luò)和硬件環(huán)境不穩(wěn)定的情況下,中心節(jié)點(diǎn)關(guān)乎整個(gè)分布式系 統(tǒng)的正常運(yùn)行。沒有中心節(jié)點(diǎn)或中心節(jié)點(diǎn)的能力較弱,均不能滿足現(xiàn)實(shí)中對分布式系統(tǒng)的要求。
發(fā)明內(nèi)容
為解決上述技術(shù)問題,本申請實(shí)施例提供一種構(gòu)建分布式中心節(jié)點(diǎn)的方法、基于該分布式系統(tǒng)中心節(jié)點(diǎn)的監(jiān)控方法及其對應(yīng)裝置,以增強(qiáng)分布式系統(tǒng)中心節(jié)點(diǎn)的穩(wěn)定性,進(jìn)而提高整個(gè)分布式系統(tǒng)的性能。本申請實(shí)施例提供的分布式系統(tǒng)中心節(jié)點(diǎn)的構(gòu)建方法包括節(jié)點(diǎn)向分布式系統(tǒng)發(fā)送選舉消息,所述選舉消息包含選舉輪次和消息請求號;判斷接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息中的選舉輪次之間的大小關(guān)系,如果選舉消息的選舉輪次大,則使用選舉消息的選舉輪次更新接收到選舉消息的節(jié)點(diǎn)的選舉輪次;如果接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息的選舉輪次相等,則判斷接收到選舉消息的節(jié)點(diǎn)的消息請求號與選舉消息中的消息請求號之間的大小關(guān)系,如果選舉消息的消息請求號大,則使用選舉消息的消息請求號更新接收到選舉消息的節(jié)點(diǎn)的消息請求號;根據(jù)更新后的選舉輪次和消息請求號形成對中心節(jié)點(diǎn)的推薦消息,并向分布式系統(tǒng)發(fā)送推薦消息;節(jié)點(diǎn)統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦,并將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定為中心節(jié)點(diǎn)。優(yōu)選地,所述節(jié)點(diǎn)統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦,并將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定為中心節(jié)點(diǎn)包括將發(fā)送推薦消息的節(jié)點(diǎn)的地址和發(fā)送推薦消息的節(jié)點(diǎn)推薦的中心節(jié)點(diǎn)的地址放入統(tǒng)計(jì)表,統(tǒng)計(jì)各被推薦作為中心節(jié)點(diǎn)的節(jié)點(diǎn)的被推薦數(shù),將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定中心節(jié)點(diǎn)。優(yōu)選地,選舉消息通過節(jié)點(diǎn)的選舉線程發(fā)送;接收選舉消息的節(jié)點(diǎn)通過接收線程接收選舉消息,發(fā)送推薦消息的節(jié)點(diǎn)通過發(fā)送線程發(fā)送推薦消息。
本申請實(shí)施例還提供了一種基于分布式系統(tǒng)中心節(jié)點(diǎn)的數(shù)據(jù)請求提交方法。該方法包括將非中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息轉(zhuǎn)發(fā)給中心節(jié)點(diǎn),按照前述構(gòu)建中心節(jié)點(diǎn)的方法構(gòu)建得到;將中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息發(fā)送給分布式系統(tǒng)中的非中心節(jié)點(diǎn);比較非中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息的ID號與非中心節(jié)點(diǎn)自身的ID號之間的大小,如果數(shù)據(jù)請求消息的ID號大,則向中心節(jié)點(diǎn)返回確認(rèn)消息;如果中心節(jié)點(diǎn)接收到的確認(rèn)消息達(dá)到預(yù)設(shè)閾值,則將數(shù)據(jù)請求消息的數(shù)據(jù)同步到分布式系統(tǒng)的所有非中心節(jié)點(diǎn)。本申請實(shí)施例還提供了一種基于分布式系統(tǒng)中心節(jié)點(diǎn)的監(jiān)控方法。該方法包括
在分布式系統(tǒng)中注冊監(jiān)控節(jié)點(diǎn),所述監(jiān)控節(jié)點(diǎn)包含配置目錄和狀態(tài)目錄;在分布式系統(tǒng)中心節(jié)點(diǎn)接收到分布式系統(tǒng)中的節(jié)點(diǎn)發(fā)生變化的消息后,比較監(jiān)控節(jié)點(diǎn)的配置目錄和狀態(tài)目錄下的節(jié)點(diǎn),如果節(jié)點(diǎn)存在于配置目錄且不存在于狀態(tài)目錄,則發(fā)送監(jiān)控報(bào)警,按照前述構(gòu)建中心節(jié)點(diǎn)的方法構(gòu)建得到。優(yōu)選地,所述方法還包括在分布式系統(tǒng)中注冊上報(bào)數(shù)據(jù)目錄,以便節(jié)點(diǎn)發(fā)生變化后在該上報(bào)數(shù)據(jù)目錄下建立新的報(bào)警節(jié)點(diǎn);在分布式系統(tǒng)中心節(jié)點(diǎn)接收到分布式系統(tǒng)中的節(jié)點(diǎn)發(fā)生變化的消息后,獲取上報(bào)數(shù)據(jù)目錄下的節(jié)點(diǎn),根據(jù)獲取的上報(bào)目錄下的節(jié)點(diǎn)發(fā)送監(jiān)控報(bào)警。優(yōu)選地,所述方法還包括在分布式系統(tǒng)中注冊分布式鎖節(jié)點(diǎn)目錄;獲取分布式鎖節(jié)點(diǎn)目錄下的節(jié)點(diǎn);判斷分布式節(jié)點(diǎn)目錄下的節(jié)點(diǎn)中節(jié)點(diǎn)號最小的節(jié)點(diǎn),向節(jié)點(diǎn)號最小的節(jié)點(diǎn)分配分布式鎖。本申請實(shí)施例提供了一種分布式系統(tǒng)中心節(jié)點(diǎn)的構(gòu)建裝置。該裝置包括發(fā)送單元、第一判斷單元、第二判斷單元、更新單元、形成單元、統(tǒng)計(jì)單元和設(shè)置單元,其中所述發(fā)送單元,用于向分布式系統(tǒng)發(fā)送選舉消息,所述選舉消息包含選舉輪次和消息請求號;所述第一判斷單元,用于判斷接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息中的選舉輪次之間的大小關(guān)系,如果選舉消息的選舉輪次大,則觸發(fā)更新單元,如果接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息的選舉輪次相等,則觸發(fā)第二判斷單元;所述第二判斷單元,用于判斷接收到選舉消息的節(jié)點(diǎn)的消息請求號與選舉消息中的消息請求號之間的大小關(guān)系,如果選舉消息的消息請求號大,則觸發(fā)更新單元;所述更新單元,用于在選舉消息的選舉輪次大時(shí),使用選舉消息的選舉輪次更新接收到選舉消息的節(jié)點(diǎn)的選舉輪次,在選舉消息的消息請求號大時(shí),使用選舉消息的消息請求號更新接收到選舉消息的節(jié)點(diǎn)的消息請求號;所述形成單元,用于根據(jù)更新后的選舉輪次和消息請求號形成對中心節(jié)點(diǎn)的推薦消息,并向分布式系統(tǒng)發(fā)送推薦消息;所述推薦單元,用于統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦;
所述確定單元,用于將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定為中心節(jié)點(diǎn)。本申請實(shí)施例還提供了一種基于分布式系統(tǒng)中心節(jié)點(diǎn)的數(shù)據(jù)請求提交裝置。該裝置包括轉(zhuǎn)發(fā)單元、群發(fā)單元、第一比較單元、返回單元和同步單元,其中所述轉(zhuǎn)發(fā)單元,用于將非中心節(jié)點(diǎn)接收到數(shù)據(jù)請求消息轉(zhuǎn)發(fā)給中心節(jié)點(diǎn),所述中心節(jié)點(diǎn)按照前述構(gòu)建中心節(jié)點(diǎn)的方法構(gòu)建得到;所述群發(fā)單元,用于將中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息發(fā)送給分布式系統(tǒng)中的非中心節(jié)點(diǎn);所述第一比較單元,用于比較非中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息的ID號與非中心節(jié)點(diǎn)自身的ID號之間的大小,如果數(shù)據(jù)請求消息的ID號大,則觸發(fā)返回單元;所述返回單元,用于向中心節(jié)點(diǎn)返回確認(rèn)消息;
所述同步單元,用于在中心節(jié)點(diǎn)接收到的確認(rèn)消息達(dá)到預(yù)設(shè)閾值時(shí),將數(shù)據(jù)請求消息的數(shù)據(jù)同步到分布式系統(tǒng)的所有非中心節(jié)點(diǎn)。本申請實(shí)施例還提供了一種基于分布式系統(tǒng)中心節(jié)點(diǎn)的監(jiān)控裝置。該裝置包括注冊單元、第二比較單元和監(jiān)控報(bào)警單元,其中所述注冊單元,用于在分布式系統(tǒng)中注冊監(jiān)控節(jié)點(diǎn),所述監(jiān)控節(jié)點(diǎn)包含配置目錄和狀態(tài)目錄;所述第二比較單元,用于在分布式系統(tǒng)中心節(jié)點(diǎn)接收到分布式系統(tǒng)中的節(jié)點(diǎn)發(fā)生變化的消息后比較監(jiān)控節(jié)點(diǎn)的配置目錄和狀態(tài)目錄下的節(jié)點(diǎn),如果節(jié)點(diǎn)存在于配置目錄且不存在于狀態(tài)目錄,則觸發(fā)監(jiān)控報(bào)警單元,所述中心節(jié)點(diǎn)按照前述構(gòu)建中心節(jié)點(diǎn)的方法構(gòu)建得到;所述監(jiān)控報(bào)警單元,用于發(fā)送監(jiān)控報(bào)警。本申請實(shí)施例將發(fā)送選舉消息的節(jié)點(diǎn)與接收選舉消息的節(jié)點(diǎn)的選舉輪次和消息請求號大小進(jìn)行比較,根據(jù)比較后的結(jié)果更新節(jié)點(diǎn)的選舉輪次和消息請求號,更新后生成推薦消息,接收推薦消息的其他節(jié)點(diǎn)根據(jù)該推薦消息對被推薦作為中心節(jié)點(diǎn)的節(jié)點(diǎn)進(jìn)行統(tǒng)計(jì),并依據(jù)統(tǒng)計(jì)結(jié)果設(shè)置中心節(jié)點(diǎn)。與現(xiàn)有技術(shù)相比,本申請實(shí)施例構(gòu)建的中心節(jié)點(diǎn)不會出現(xiàn)單點(diǎn)崩潰,在網(wǎng)絡(luò)和硬件不穩(wěn)定的情況下,更安全、更易用、更易管理。按照上述方式建立的中心節(jié)點(diǎn)可實(shí)現(xiàn)一系列的應(yīng)用通過本申請實(shí)施例構(gòu)建的中心節(jié)點(diǎn)來接收數(shù)據(jù)請求時(shí),由于每次數(shù)據(jù)提交均要經(jīng)過預(yù)設(shè)數(shù)量的Zooke印er服務(wù)確認(rèn),較好地保證了多臺Zookeeper之間的數(shù)據(jù)一致性;通過本申請實(shí)施例構(gòu)建的中心節(jié)點(diǎn)來管理監(jiān)控分布式系統(tǒng),由于監(jiān)控節(jié)點(diǎn)、監(jiān)控節(jié)點(diǎn)以外的節(jié)點(diǎn)均可與Zookeeper服務(wù)進(jìn)行交互,在節(jié)點(diǎn)狀態(tài)發(fā)生變化時(shí)可發(fā)出監(jiān)控提示,從而及時(shí)監(jiān)控到分布式系統(tǒng)各節(jié)點(diǎn)的運(yùn)行狀態(tài)。
為了更清楚地說明本申請實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本申請實(shí)施例一的分布式系統(tǒng)中心節(jié)點(diǎn)構(gòu)建方法的流程圖;圖2為本申請實(shí)施例二的基于分布式系統(tǒng)中心節(jié)點(diǎn)的數(shù)據(jù)請求提交方法流程圖3為本申請實(shí)施例三的基于分布式系統(tǒng)中心節(jié)點(diǎn)的監(jiān)控方法的流程圖;圖4為本申請實(shí)施例三的注冊節(jié)點(diǎn)的類型的示意圖;圖5為本申請實(shí)施例四的分布式系統(tǒng)中心節(jié)點(diǎn)的構(gòu)建裝置的組成框圖;圖6為本申請實(shí)施例五的基于分布式系統(tǒng)中心節(jié)點(diǎn)的監(jiān)控裝置組成框圖。
具體實(shí)施例方式為了使本技術(shù)領(lǐng)域的人員更好地理解本申請中的技術(shù)方案,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請保護(hù) 的范圍。實(shí)施例一參見圖1,該圖示出了本申請實(shí)施例的分布式系統(tǒng)中心節(jié)點(diǎn)構(gòu)建方法的流程。該實(shí)施例包括步驟SlOl :節(jié)點(diǎn)向分布式系統(tǒng)發(fā)送選舉消息,所述選舉消息包含選舉輪次和消息請求號;通過發(fā)送選舉消息啟動(dòng)分布式系統(tǒng)的選舉過程,以選擇出中心節(jié)點(diǎn)(Leader)管理分布式系統(tǒng)。節(jié)點(diǎn)在受到某些觸發(fā)后將向分布式系統(tǒng)發(fā)送選舉消息啟動(dòng)選舉過程,這里的觸發(fā)包括但不限于分布式系統(tǒng)的全部節(jié)點(diǎn)(比如Zookeeper server)剛啟動(dòng),沒有中心節(jié)點(diǎn);分布式系統(tǒng)中出現(xiàn)新節(jié)點(diǎn)加入,該新節(jié)點(diǎn)處于初始化狀態(tài)(Looking狀態(tài));分布式系統(tǒng)中現(xiàn)有的中心節(jié)點(diǎn)由于各種原因出現(xiàn)(Leader)失效等等。節(jié)點(diǎn)受到觸發(fā)后,將通過節(jié)點(diǎn)的選舉線程向分布式系統(tǒng)內(nèi)的所有節(jié)點(diǎn)發(fā)送選舉消息,以發(fā)起選舉過程。各節(jié)點(diǎn)通常具有至少三個(gè)類別的線程一是選舉線程,用于在分布式系統(tǒng)內(nèi)的發(fā)起選舉,并完成本節(jié)點(diǎn)的選舉工作;二是發(fā)送線程,用于發(fā)送需要向其他節(jié)點(diǎn)推送的各類消息,比如通知消息、推薦消息等;三是接收線程,用于接收分布式系統(tǒng)內(nèi)其他節(jié)點(diǎn)發(fā)送的各類消息。發(fā)送線程和接收線程在沒有發(fā)起選舉時(shí)處于阻塞狀態(tài),直到有消息到來時(shí)才解決阻塞狀態(tài)并處理消息。需要說明的是在實(shí)際應(yīng)用過程中,根據(jù)分布式系統(tǒng)中的節(jié)點(diǎn)數(shù)量和消息交互量的不同,各個(gè)節(jié)點(diǎn)還可能設(shè)置發(fā)送隊(duì)列和接收隊(duì)列,發(fā)送線程發(fā)送的消息可能先送往發(fā)送隊(duì)列,接收線程接收的消息也可能先進(jìn)入到接收隊(duì)列中,然后由節(jié)點(diǎn)從發(fā)送隊(duì)列中讀出消息完成發(fā)送操作或從接收隊(duì)列中讀出消息完成相關(guān)處理操作。節(jié)點(diǎn)在受到觸發(fā)由選舉線程啟動(dòng)選舉過程后,通過發(fā)送線程向分布式系統(tǒng)內(nèi)的節(jié)點(diǎn)發(fā)送選舉消息,該選舉消息中包含有選舉輪次和消息請求號。選舉輪次(epoch)是每個(gè)節(jié)點(diǎn)記錄的自身發(fā)起選舉過程的次數(shù),通常在選舉過程發(fā)起之初自動(dòng)增加1,在完成選舉后又自動(dòng)增加I ;消息請求號(Zookeeper transtion id, Zookeeper事務(wù)ID)是選舉過程中能否成為Leader的關(guān)鍵因素,它決定當(dāng)前Server將自己的一票(推薦票)投給分布式系統(tǒng)中的哪一個(gè)節(jié)點(diǎn)。步驟S102 :判斷接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息中的選舉輪次之間的大小關(guān)系,如果選舉消息的選舉輪次大,則執(zhí)行步驟S105 ;如果接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息的選舉輪次相等,則執(zhí)行步驟S103 ;
發(fā)起選舉流程的節(jié)點(diǎn)將向分布式系統(tǒng)內(nèi)的節(jié)點(diǎn)發(fā)送選舉消息,該選舉消息中包含有選舉輪次和消息請求號。節(jié)點(diǎn)的選舉輪次是上次選舉后保留的選舉次數(shù)(如果節(jié)點(diǎn)剛啟動(dòng)處于初始化狀態(tài)時(shí),選舉輪次為1,以后每發(fā)起一次選舉自身的選舉輪次增加1),也就是說,每個(gè)節(jié)點(diǎn)維護(hù)有一個(gè)選舉輪次值。接收到選舉消息的節(jié)點(diǎn)將把自身的選舉輪次與選舉消息中攜帶的選舉輪次進(jìn)行比較,以判斷哪個(gè)選舉輪次是最新的選舉輪次,從而對自身的選舉輪次進(jìn)行不同的處理。將接收到選舉消息的節(jié)點(diǎn)與選舉消息的選舉輪次進(jìn)行比較可能產(chǎn)生三種結(jié)果一是前者大于后者,說明接收到選舉消息的節(jié)點(diǎn)的選舉輪次是最新的選舉輪次,勿需進(jìn)行任何操作處理;二是后者大于前者,說明接收到選舉消息的節(jié)點(diǎn)維護(hù)的選舉輪次是舊的選舉輪次值,需要進(jìn)行更新處理;三是兩者相等,這種情況下還需要進(jìn)行消息請求號的比較,以判斷是否應(yīng)當(dāng)進(jìn)行進(jìn)一步的處理。步驟S103 :判斷接收到選舉消息的節(jié)點(diǎn)的消息請求號與選舉消息中的消息請求號之間的大小關(guān)系,如果選舉消息的消息請求號大,則進(jìn)入步驟S104 ;如果否,則不進(jìn)行任何處理,執(zhí)行步驟S106 ;在接收到選舉消息的節(jié)點(diǎn)的選舉輪次和選舉消息中的選舉輪次相等的情況下,還 需要比較兩者的消息請求號的大小。選舉輪次相等,說明發(fā)送選舉消息的節(jié)點(diǎn)和接收選舉消息的節(jié)點(diǎn)處于同一輪選舉過程中,進(jìn)一步比較消息請求號才能確定誰將最有可能推薦為中心節(jié)點(diǎn)。將接收到選舉消息的節(jié)點(diǎn)與選舉消息的消息請求號進(jìn)行比較可能產(chǎn)生兩種結(jié)果一是前者大于后者,這時(shí)不需要任何處理;一是前者小于后者,這時(shí)需要進(jìn)行消息請求號的更新。步驟S104 :使用選舉消息的消息請求號更新接收到選舉消息的節(jié)點(diǎn)的消息請求號,進(jìn)入步驟S106 ;步驟S105 :使用選舉消息的選舉輪次更新接收到選舉消息的節(jié)點(diǎn)的選舉輪次;步驟S106 :根據(jù)更新后的選舉輪次和消息請求號形成對中心節(jié)點(diǎn)的推薦消息,并向分布式系統(tǒng)發(fā)送推薦消息;接收選舉消息的節(jié)點(diǎn)完成前述的更新操作后,即可根據(jù)更新結(jié)果形成推薦消息,該推薦消息是接收選舉消息的節(jié)點(diǎn)對中心節(jié)點(diǎn)的推薦。按照分布式系統(tǒng)的規(guī)則,通常將選舉輪次最大、消息請求號最大的節(jié)點(diǎn)推薦為中心節(jié)點(diǎn)。步驟S107 :節(jié)點(diǎn)統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦,并將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定為中心節(jié)點(diǎn);分布式系統(tǒng)內(nèi)的節(jié)點(diǎn)將收到其他節(jié)點(diǎn)發(fā)送的推薦消息,根據(jù)該推薦消息可知道各節(jié)點(diǎn)對中心節(jié)點(diǎn)的推薦。具體實(shí)現(xiàn)時(shí),接收到推薦消息的節(jié)點(diǎn)將會把發(fā)送推薦消息的節(jié)點(diǎn)的地址和發(fā)送推薦消息的節(jié)點(diǎn)推薦的中心節(jié)點(diǎn)的地址放入統(tǒng)計(jì)表,然后統(tǒng)計(jì)各被推薦作為中心節(jié)點(diǎn)的節(jié)點(diǎn)的被推薦數(shù),將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定中心節(jié)點(diǎn)。這里的預(yù)設(shè)閾值根據(jù)實(shí)際情況不同,可進(jìn)行設(shè)定。通常情況采取“多數(shù)決”的方式完成投票統(tǒng)計(jì),即被推薦為中心節(jié)點(diǎn)的節(jié)點(diǎn)獲得(N/2+1)張票,即將被設(shè)定為中心節(jié)點(diǎn),N為分布式系統(tǒng)包含的節(jié)點(diǎn)總個(gè)數(shù)。獲得統(tǒng)計(jì)結(jié)果后,除確定出中心節(jié)點(diǎn)外,接收推薦消息的節(jié)點(diǎn)還據(jù)此設(shè)定自己的狀態(tài)。在Zookeeper集群系統(tǒng)中,每個(gè)Server包括三種可能的狀態(tài)一是初始化狀態(tài)(Looking狀態(tài)),這是在Server剛啟動(dòng)或者分布式系統(tǒng)中的Leader失效后出現(xiàn)的狀態(tài);二是領(lǐng)導(dǎo)者狀態(tài)(Leading狀態(tài)),這是在選舉完成后選出的中心節(jié)點(diǎn)的狀態(tài);三是跟隨者狀態(tài)(Following狀態(tài)),這是分布式系統(tǒng)中選舉中心節(jié)點(diǎn)后其他節(jié)點(diǎn)設(shè)定的自身的狀態(tài)。本申請實(shí)施例將發(fā)送選舉消息的節(jié)點(diǎn)與接收選舉消息的節(jié)點(diǎn)的選舉輪次和消息請求號大小進(jìn)行比較,根據(jù)比較后的結(jié)果更新節(jié)點(diǎn)的選舉輪次和消息請求號,更新后生成新的通知消息,接收該通話消息的其他節(jié)點(diǎn)根據(jù)該消息和自身的情況來設(shè)置自身狀態(tài)為中心節(jié)點(diǎn)或非中心節(jié)點(diǎn)。與現(xiàn)有技術(shù)相比,本申請實(shí)施例構(gòu)建的中心節(jié)點(diǎn)不會出現(xiàn)單點(diǎn)崩潰,在網(wǎng)絡(luò)和硬件不穩(wěn)定的情況下,更安全、更易用、更易管理。上述內(nèi)容通過流程圖的形式對本實(shí)施例的技術(shù)方案進(jìn)行了說明,為更清楚地理解本申請,下面從不同的節(jié)點(diǎn)之間的數(shù)據(jù)流轉(zhuǎn)關(guān)系角度進(jìn)行說明。在分布式式系統(tǒng)啟動(dòng)選舉過程中,將出現(xiàn)三種類型的節(jié)點(diǎn)被動(dòng)接收消息端、主動(dòng)發(fā)送消息端以及主動(dòng)發(fā)起選舉端,不同類型的節(jié)點(diǎn)在完成中心節(jié)點(diǎn)的選舉工作中發(fā)揮的作用存在差別。對于被動(dòng)接收消息端首先檢測當(dāng)前Server上所被推薦的zxid, epoch是否合法,檢測語句可以是(currentServer. epoch < = currentMsg. epoch&&(currentMsg. zxid > currentServer. zxid |(currentMsg. zxid = = currentServer. zxid&& currentMsg. id >currentServer. id)));如果不合法便用消息中的zxid, epoch, id更新當(dāng)前Server所被推薦的值,此時(shí)將收到的消息轉(zhuǎn)換成Notif ication消息放入接收隊(duì)列中,將向?qū)Ψ桨l(fā)送確認(rèn)消息。將確認(rèn)消息編號放入ack隊(duì)列中,檢測對方的狀態(tài)是否是LOOKING狀態(tài),如果不是,說明此時(shí)已經(jīng)有Leader已經(jīng)被選出來,將接收到的消息轉(zhuǎn)發(fā)成Notification消息放入接收對隊(duì)列。對于主動(dòng)發(fā)送消息端將要發(fā)送的消息由Notification消息轉(zhuǎn)換成ToSend消息,然后發(fā)送對方,并等待對方的回復(fù),如果在等待結(jié)束沒有收到對方法回復(fù),重做三次,如果重做次還是沒有收到對方的回復(fù)時(shí)檢測當(dāng)前的選舉(epoch)是否已經(jīng)改變,如果沒有改變,將消息再次放入發(fā)送隊(duì)列中,一直重復(fù)直到有Leader選出或者收到對方回復(fù)為止,主要將自己相關(guān)信息發(fā)送給對方。對于主動(dòng)發(fā)起選舉端首先自己的epoch加I,然后生成notification消息,并將消息放入發(fā)送隊(duì)列中,系統(tǒng)中配置有幾個(gè)Server就生成幾條消息,保證每個(gè)Server都能收到此消息,如果當(dāng)前Server的狀態(tài)是Looking就一直循環(huán)檢查接收隊(duì)列是否有消息,如果有消息,根據(jù)消息中對方的狀態(tài)進(jìn)行相應(yīng)的處理如果為Looking狀態(tài)首先檢測消息中epoch是否合法,是否比當(dāng)前Server的大,如果比較當(dāng)前Server的epoch大時(shí),更新epoch,檢測是消息中的zxid, id是否比當(dāng)前推薦的Server大,如果是更新相關(guān)值,并新生成notification消息放入發(fā)關(guān)隊(duì)列,清空投票統(tǒng)計(jì)表;如果消息小的epoch則什么也不做;如果相同檢測消息中zxid, id是否合法,如果消息中的zxid, id大,那么更新當(dāng)前Server相關(guān)信息,并新生成notification消息放入發(fā)送隊(duì)列,將收到的消息的IP和投票結(jié)果放入統(tǒng)計(jì)表中,并計(jì)算統(tǒng)計(jì)結(jié)果,根據(jù)結(jié)果設(shè)置自己相應(yīng)的狀態(tài)。如果為Leading狀態(tài)將收到的消息的IP和投票結(jié)果放入統(tǒng)計(jì)表中(這里的統(tǒng)計(jì)表是獨(dú)立的),并計(jì)算統(tǒng)計(jì)結(jié)果,根據(jù)結(jié)果設(shè)置自己相應(yīng)的狀態(tài)。如果為Following狀態(tài)將收到的消息的IP和投票結(jié)果放入統(tǒng)計(jì)表中(這里的統(tǒng)計(jì)表是獨(dú)立的),并計(jì)算統(tǒng)計(jì)結(jié)果,根據(jù)結(jié)果設(shè)置自己相應(yīng)的狀態(tài)。實(shí)施例二
前述實(shí)施例提出了一種分布式系統(tǒng)中心節(jié)點(diǎn)的構(gòu)建方法,通過該方法可構(gòu)建出更為穩(wěn)定的中心節(jié)點(diǎn),基于這種中心節(jié)點(diǎn)可實(shí)現(xiàn)各種具體的應(yīng)用。參見圖2,該圖示出了一種基于分布式系統(tǒng)中心節(jié)點(diǎn)的數(shù)據(jù)請求提交方法的流程。該流程包括步驟S201 :啟動(dòng)計(jì)數(shù)器,計(jì)數(shù)器的初值設(shè)置為O ;步驟S202 :將非中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息轉(zhuǎn)發(fā)給中心節(jié)點(diǎn);非中心節(jié)點(diǎn)處于從者(Following)地位,不能對接收到數(shù)據(jù)請求進(jìn)行決策,因此需要將該請求轉(zhuǎn)發(fā)到中心節(jié)點(diǎn)(Leader)。本實(shí)施例的中心節(jié)點(diǎn)按照前述實(shí)施例的方式進(jìn)行構(gòu)建,即所述中心節(jié)點(diǎn)按照如下方式構(gòu)建各節(jié)點(diǎn)向分布式系統(tǒng)發(fā)送選舉消息,所述選舉消息包含選舉輪次和消息請求號;判斷接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息中的選舉輪次之間的大小關(guān)系,如果選舉消息的選舉輪次大,則使用選舉消息的選舉輪次更新接收到選舉消息的節(jié)點(diǎn)的選舉輪次;如果接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息的選舉輪次相等,則判斷接收到選舉消息的節(jié)點(diǎn)的消息請求號與選舉消息中的消息請求號之間的大小關(guān)系,如果選舉消息的消息請求號大,則使用選舉消息的消息請求號更新接收到選·舉消息的節(jié)點(diǎn)的消息請求號;根據(jù)更新后的選舉輪次和消息請求號形成對中心節(jié)點(diǎn)的推薦消息,并向分布式系統(tǒng)發(fā)送推薦消息;各節(jié)點(diǎn)統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦,并將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)設(shè)置為中心節(jié)點(diǎn)。步驟S203 :將中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息發(fā)送給分布式系統(tǒng)中的非中心節(jié)占.步驟S204 :比較非中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息的ID號與非中心節(jié)點(diǎn)自身的ID號之間的大小,如果數(shù)據(jù)請求消息的ID號大,則進(jìn)入步驟S205 ;步驟S205 :向中心節(jié)點(diǎn)返回確認(rèn)消息;步驟S206 :如果中心節(jié)點(diǎn)接收到的確認(rèn)消息達(dá)到預(yù)設(shè)閾值,則將數(shù)據(jù)請求消息的數(shù)據(jù)同步到分布式系統(tǒng)的所有非中心節(jié)點(diǎn);預(yù)設(shè)閾值的設(shè)置與分布式系統(tǒng)對數(shù)據(jù)同步過程的“一致性”要求程度有關(guān),通常的情況下采用“多數(shù)決”的方式設(shè)置該閥值,即如果中心節(jié)點(diǎn)接收到確認(rèn)消息的數(shù)量為分布式系統(tǒng)中全部節(jié)點(diǎn)的一半以上,則視為該數(shù)據(jù)提交請求被允許。獲得數(shù)據(jù)提交請求允許后,中心節(jié)點(diǎn)將更新本地?cái)?shù)據(jù),并向所有非中心節(jié)點(diǎn)發(fā)送數(shù)據(jù)實(shí)現(xiàn)同步。本實(shí)施例依賴按照前述實(shí)施例構(gòu)建的中心節(jié)點(diǎn)保證了集群中的多個(gè)節(jié)點(diǎn)的數(shù)據(jù)具有強(qiáng)一致性。實(shí)施例三基于實(shí)施例一構(gòu)建的分布式系統(tǒng)中心節(jié)點(diǎn),還可以進(jìn)行分布式節(jié)點(diǎn)的節(jié)點(diǎn)監(jiān)控操作。參見圖3、圖4,其中圖3該圖示出了基于分布式系統(tǒng)中心節(jié)點(diǎn)的監(jiān)控方法的流程,圖4示出了注冊節(jié)點(diǎn)的類型的示意圖。本實(shí)施例的流程包括步驟S301 :在分布式系統(tǒng)中注冊監(jiān)控節(jié)點(diǎn),所述監(jiān)控節(jié)點(diǎn)配置目錄和狀態(tài)目錄;注冊監(jiān)控節(jié)點(diǎn)包括的配置目錄和狀態(tài)目錄下的節(jié)點(diǎn)可以是域名服務(wù)節(jié)點(diǎn)(NameService)和數(shù)據(jù)服務(wù)節(jié)點(diǎn)(DataService),具體注冊過程可以按照如下方式實(shí)現(xiàn)對于注冊NameService :(I)在分布式系統(tǒng)中建立配置目錄/Conf/NameService/(NameServiceID)目錄,將該目錄的類型設(shè)置為Persistent類型,該類型目錄為持久化目錄節(jié)點(diǎn),它上面存儲的數(shù)據(jù)不會丟失;(2)建立狀態(tài)目錄/Stat/NameService/(NameServiceID)目錄,將該目錄的類型設(shè)置為Ephemeral_Sequential類型,該類型目錄為順序自動(dòng)編號的目錄節(jié)點(diǎn),屬于臨時(shí)目錄節(jié)點(diǎn),該類型的目錄一旦創(chuàng)建,在客戶端與服務(wù)器端口的會話(session)超時(shí)時(shí),該目錄節(jié)點(diǎn)將會被自動(dòng)刪除。對于注冊DataService :(I)如果該DataService所在的Group是新建的Group,則建立配置目錄/Conf/DataService/ (GroupID)目錄,將其類型設(shè)置為Persistent類型;(2)如果該DataService所在的Group是新建的Group,則建立狀態(tài)目錄/Stat/DataService/ (GroupID)目錄,將其類型設(shè)置為Persistent類型;
(3)建立配置目錄 /Conf/DataService/ (GroupID) / (DataServiceID),將其類型設(shè)置為Persistent類型;(4)建立狀態(tài)目錄 /Stat/DataService/ (GroupID) / (DataServiceID),將其類型設(shè)置為 Ephemeral_Sequential 類型。步驟S302 :分布式系統(tǒng)中心節(jié)點(diǎn)接收分布式系統(tǒng)中的節(jié)點(diǎn)發(fā)生變化的消息,所述中心節(jié)點(diǎn)按照前述實(shí)施例的方法構(gòu)建得到;步驟S303 :比較監(jiān)控節(jié)點(diǎn)的配置目錄和狀態(tài)目錄下的節(jié)點(diǎn)步驟S304 :在節(jié)點(diǎn)存在于配置目錄且不存在于狀態(tài)目錄時(shí)發(fā)送監(jiān)控報(bào)警注冊監(jiān)控節(jié)點(diǎn)。通過本實(shí)施例構(gòu)建的中心節(jié)點(diǎn)來管理監(jiān)控分布式系統(tǒng),由于監(jiān)控節(jié)點(diǎn)、監(jiān)控節(jié)點(diǎn)以外的節(jié)點(diǎn)均可與Zooke印er服務(wù)進(jìn)行交互,在節(jié)點(diǎn)狀態(tài)發(fā)生變化時(shí)可發(fā)出監(jiān)控提示,從而及時(shí)監(jiān)控到分布式系統(tǒng)各節(jié)點(diǎn)的運(yùn)行狀態(tài)。需要說明的是在本實(shí)施例基礎(chǔ)上還可以增加分布式鎖功能,具體過程可按照如下方式實(shí)現(xiàn)在分布式系統(tǒng)中注冊分布式鎖節(jié)點(diǎn)目錄,比如建立/locknode/lock目錄,將該目錄的類型設(shè)置為Ephemeral_Sequential類型;然后獲取分布式鎖節(jié)點(diǎn)目錄下的節(jié)點(diǎn);再判斷分布式節(jié)點(diǎn)目錄下的節(jié)點(diǎn)中節(jié)點(diǎn)號最小的節(jié)點(diǎn),向節(jié)點(diǎn)號最小的節(jié)點(diǎn)分配分布式鎖。實(shí)施例四以上內(nèi)容詳細(xì)描述了本申請的方法實(shí)施例,相應(yīng)地,本申請實(shí)施例還提供與前述方式實(shí)施例對應(yīng)的裝置實(shí)施例。參見圖5,該圖示出了分布式系統(tǒng)中心節(jié)點(diǎn)的構(gòu)建裝置的組成框圖。該裝置500包括發(fā)送單元501、第一判斷單元502、第二判斷單元503、更新單元504、形成單元505、統(tǒng)計(jì)單元506和確定單元507,其中發(fā)送單元501,用于向分布式系統(tǒng)發(fā)送選舉消息,所述選舉消息包含選舉輪次和消息請求號;第一判斷單元502,用于判斷接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息中的選舉輪次之間的大小關(guān)系,如果選舉消息的選舉輪次大,則觸發(fā)更新單元,如果接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息的選舉輪次相等,則觸發(fā)第二判斷單元;第二判斷單元503,用于判斷接收到選舉消息的節(jié)點(diǎn)的消息請求號與選舉消息中的消息請求號之間的大小關(guān)系,如果選舉消息的消息請求號大,則觸發(fā)更新單元;
更新單元504,用于在選舉消息的選舉輪次大時(shí),使用選舉消息的選舉輪次更新接收到選舉消息的節(jié)點(diǎn)的選舉輪次,在選舉消息的消息請求號大時(shí),使用選舉消息的消息請求號更新接收到選舉消息的節(jié)點(diǎn)的消息請求號;形成單元505,用于根據(jù)更新的選舉輪次和消息請求號形成對中心節(jié)點(diǎn)的推薦消息,并向分布式系統(tǒng)發(fā)送推薦消息;推薦單元506,用于統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦;確定單元507,用于將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定為中心節(jié)點(diǎn)。上述裝置實(shí)施例的工作過程是第一發(fā)送單元向分布式系統(tǒng)發(fā)送包含選舉輪次和消息請求號的選舉消,由第一判斷單元判斷接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息 中的選舉輪次之間的大小關(guān)系,如果選舉消息的選舉輪次大,則觸發(fā)更新單元使用選舉消息的選舉輪次更新接收到選舉消息的節(jié)點(diǎn)的選舉輪次,如果接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息的選舉輪次相等,則觸發(fā)第二判斷單元,由第二判斷單元判斷接收到選舉消息的節(jié)點(diǎn)的消息請求號與選舉消息中的消息請求號之間的大小關(guān)系,如果選舉消息的消息請求號大,則觸發(fā)更新單元使用選舉消息的消息請求號更新接收到選舉消息的節(jié)點(diǎn)的消息請求號;然后形成單元根據(jù)更新的選舉輪次和消息請求號形成對中心節(jié)點(diǎn)的推薦消息,并向分布式系統(tǒng)發(fā)送推薦消息;推薦單元統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦,確定單元將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定為中心節(jié)點(diǎn)。本裝置實(shí)施例將發(fā)送選舉消息的節(jié)點(diǎn)與接收選舉消息的節(jié)點(diǎn)的選舉輪次和消息請求號大小進(jìn)行比較,根據(jù)比較后的結(jié)果更新節(jié)點(diǎn)的選舉輪次和消息請求號,更新后生成新的通知消息,接收該通話消息的其他節(jié)點(diǎn)根據(jù)該消息和自身的情況來設(shè)置自身狀態(tài)為中心節(jié)點(diǎn)或非中心節(jié)點(diǎn)。與現(xiàn)有技術(shù)相比,本申請實(shí)施例構(gòu)建的中心節(jié)點(diǎn)不會出現(xiàn)單點(diǎn)崩潰,在網(wǎng)絡(luò)和硬件不穩(wěn)定的情況下,更安全、更易用、更易管理。需要說明的是在完成一次中心節(jié)點(diǎn)的選舉過程中,上述功能單元可能并不位于一個(gè)節(jié)點(diǎn)之中,而是由多個(gè)節(jié)點(diǎn)的相應(yīng)的單元的共同配合完成中心節(jié)點(diǎn)的選舉?;谏鲜鲅b置實(shí)施例可以進(jìn)行各種應(yīng)用,比如進(jìn)行數(shù)據(jù)提交操作。該基于分布式系統(tǒng)中心節(jié)點(diǎn)的數(shù)據(jù)請求提交裝置可以包括轉(zhuǎn)發(fā)單元、群發(fā)單元、第一比較單元、返回單元和同步單元,其中所述轉(zhuǎn)發(fā)單元,用于將非中心節(jié)點(diǎn)接收到數(shù)據(jù)請求消息轉(zhuǎn)發(fā)給中心節(jié)點(diǎn);所述群發(fā)單元,用于將中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息發(fā)送給分布式系統(tǒng)中的非中心節(jié)點(diǎn);所述第一比較單元,用于比較非中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息的ID號與非中心節(jié)點(diǎn)自身的ID號之間的大小,如果數(shù)據(jù)請求消息的ID號大,則觸發(fā)返回單元;所述返回單元,用于向中心節(jié)點(diǎn)返回確認(rèn)消息;所述同步單元,用于在中心節(jié)點(diǎn)接收到的確認(rèn)消息達(dá)到預(yù)設(shè)閾值時(shí),將數(shù)據(jù)請求消息的數(shù)據(jù)同步到分布式系統(tǒng)的所有非中心節(jié)點(diǎn);該上述應(yīng)用中提及的中心節(jié)點(diǎn)按照如下方式構(gòu)建各節(jié)點(diǎn)向分布式系統(tǒng)發(fā)送選舉消息,所述選舉消息包含選舉輪次和消息請求號;判斷接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息中的選舉輪次之間的大小關(guān)系,如果選舉消息的選舉輪次大,則使用選舉消息的選舉輪次更新接收到選舉消息的節(jié)點(diǎn)的選舉輪次;如果接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息的選舉輪次相等,則判斷接收到選舉消息的節(jié)點(diǎn)的消息請求號與選舉消息中的消息請求號之間的大小關(guān)系,如果選舉消息的消息請求號大,則使用選舉消息的消息請求號更新接收到選舉消息的節(jié)點(diǎn)的消息CN 102929696 A書明說10/11 頁請求號;根據(jù)更新后的選舉輪次和消息請求號形成對中心節(jié)點(diǎn)的推薦消息,并向分布式系統(tǒng)發(fā)送推薦消息;
節(jié)點(diǎn)統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦,并將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定為中心節(jié)點(diǎn)。
上述數(shù)據(jù)提交裝置的工作過程是轉(zhuǎn)發(fā)單元將非中心節(jié)點(diǎn)接收到數(shù)據(jù)請求消息轉(zhuǎn)發(fā)給中心節(jié)點(diǎn)后,由群發(fā)單元將中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息發(fā)送給分布式系統(tǒng)中的非中心節(jié)點(diǎn);然后比較單元比較非中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息的ID號與非中心節(jié)點(diǎn)自身的ID號之間的大小,如果數(shù)據(jù)請求消息的ID號大,則觸發(fā)返回單元向中心節(jié)點(diǎn)返回確認(rèn)消息;同步單元,在中心節(jié)點(diǎn)接收到的確認(rèn)消息達(dá)到預(yù)設(shè)閾值時(shí),將數(shù)據(jù)請求消息的數(shù)據(jù)同步到分布式系統(tǒng)的所有非中心節(jié)點(diǎn)。
通過本申請實(shí)施例構(gòu)建的中心節(jié)點(diǎn)來接收數(shù)據(jù)請求時(shí),由于每次數(shù)據(jù)提交均要經(jīng)過預(yù)設(shè)數(shù)量的Zookeeper服務(wù)確認(rèn),較好地保證了多臺Zookeeper之間的數(shù)據(jù)一致性。
實(shí)施例五
本申請還提供了一種基于分布式系統(tǒng)中心節(jié)點(diǎn)的監(jiān)控裝置。參見圖6,該圖示出了該監(jiān)控裝置的組成框圖。該裝置600包括注冊單元601、第二比較單元602和監(jiān)控報(bào)警單元603,其中
注冊單元601,用于在分布式系統(tǒng)中注冊監(jiān)控節(jié)點(diǎn),所述監(jiān)控節(jié)點(diǎn)包含位于配置目錄和狀態(tài)目錄;
第二比較單元602,用于在分布式系統(tǒng)中心節(jié)點(diǎn)接收到分布式系統(tǒng)中的節(jié)點(diǎn)發(fā)生變化的消息后比較監(jiān)控節(jié)點(diǎn)的配置目錄和狀態(tài)目錄下的節(jié)點(diǎn),如果節(jié)點(diǎn)存在于配置目錄且不存在于狀態(tài)目錄,則觸發(fā)監(jiān)控報(bào)警單元,所述中心節(jié)點(diǎn)按照前述實(shí)施例的方法構(gòu)建得到;
監(jiān)控報(bào)警單元603,用于發(fā)送監(jiān)控報(bào)警。
該裝置的工作過程是注冊單元在分布式系統(tǒng)中注冊包含位于配置目錄和狀態(tài)目錄下的域名服務(wù)節(jié)點(diǎn)和數(shù)據(jù)服務(wù)節(jié)點(diǎn)的監(jiān)控節(jié)點(diǎn),然后由比較單元在接收到節(jié)點(diǎn)的變化消息后比較監(jiān)控節(jié)點(diǎn)的配置目錄和狀態(tài)目錄下的節(jié)點(diǎn),如果節(jié)點(diǎn)存在于配置目錄且不存在于狀態(tài)目錄,則觸發(fā)監(jiān)控報(bào)警單元發(fā)送監(jiān)控報(bào)警。
通過本申請實(shí)施例構(gòu)建的中心節(jié)點(diǎn)來管理監(jiān)控分布式系統(tǒng),由于監(jiān)控節(jié)點(diǎn)、監(jiān)控節(jié)點(diǎn)以外的節(jié)點(diǎn)均可與Zooke印er服務(wù)進(jìn)行交互,在節(jié)點(diǎn)狀態(tài)發(fā)生變化時(shí)可發(fā)出監(jiān)控提示,從而及時(shí)監(jiān)控到分布式系統(tǒng)各節(jié)點(diǎn)的運(yùn)行狀態(tài)。
為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn)。基于這樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備 (可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部13分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
本申請可用于眾多通用或?qū)S玫挠?jì)算系統(tǒng)環(huán)境或配置中。例如個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
本申請可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請,在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲介 質(zhì)中。
以上所述僅是本申請的具體實(shí)施方式
,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請?jiān)淼那疤嵯拢€可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本申請的保護(hù)范圍。
權(quán)利要求
1.一種分布式系統(tǒng)中心節(jié)點(diǎn)的構(gòu)建方法,其特征在于,該方法包括 節(jié)點(diǎn)向分布式系統(tǒng)發(fā)送選舉消息,所述選舉消息包含選舉輪次和消息請求號; 判斷接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息中的選舉輪次之間的大小關(guān)系,如果選舉消息的選舉輪次大,則使用選舉消息的選舉輪次更新接收到選舉消息的節(jié)點(diǎn)的選舉輪次;如果接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息的選舉輪次相等,則判斷接收到選舉消息的節(jié)點(diǎn)的消息請求號與選舉消息中的消息請求號之間的大小關(guān)系,如果選舉消息的消息請求號大,則使用選舉消息的消息請求號更新接收到選舉消息的節(jié)點(diǎn)的消息請求號;根據(jù)更新后的選舉輪次和消息請求號形成對中心節(jié)點(diǎn)的推薦消息,并向分布式系統(tǒng)發(fā)送推薦消息; 節(jié)點(diǎn)統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦,并將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定為中心節(jié)點(diǎn)。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述節(jié)點(diǎn)統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦,并將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定為中心節(jié)點(diǎn)包括 將發(fā)送推薦消息的節(jié)點(diǎn)的地址和發(fā)送推薦消息的節(jié)點(diǎn)推薦的中心節(jié)點(diǎn)的地址放入統(tǒng)計(jì)表,統(tǒng)計(jì)各被推薦作為中心節(jié)點(diǎn)的節(jié)點(diǎn)的被推薦數(shù),將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定中心節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,選舉消息通過節(jié)點(diǎn)的選舉線程發(fā)送;接收選舉消息的節(jié)點(diǎn)通過接收線程接收選舉消息,發(fā)送推薦消息的節(jié)點(diǎn)通過發(fā)送線程發(fā)送推薦消息。
4.一種基于分布式系統(tǒng)中心節(jié)點(diǎn)的數(shù)據(jù)請求提交方法,其特征在于,該方法包括 將非中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息轉(zhuǎn)發(fā)給中心節(jié)點(diǎn),所述中心節(jié)點(diǎn)按照權(quán)利要求I至3中任何一種方法構(gòu)建得到; 將中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息發(fā)送給分布式系統(tǒng)中的非中心節(jié)點(diǎn); 比較非中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息的ID號與非中心節(jié)點(diǎn)自身的ID號之間的大小,如果數(shù)據(jù)請求消息的ID號大,則向中心節(jié)點(diǎn)返回確認(rèn)消息; 如果中心節(jié)點(diǎn)接收到的確認(rèn)消息達(dá)到預(yù)設(shè)閾值,則將數(shù)據(jù)請求消息的數(shù)據(jù)同步到分布式系統(tǒng)的所有非中心節(jié)點(diǎn)。
5.一種基于分布式系統(tǒng)中心節(jié)點(diǎn)的監(jiān)控方法,其特征在于,該方法包括 在分布式系統(tǒng)中注冊監(jiān)控節(jié)點(diǎn),所述監(jiān)控節(jié)點(diǎn)包含配置目錄和狀態(tài)目錄; 在分布式系統(tǒng)中心節(jié)點(diǎn)接收到分布式系統(tǒng)中的節(jié)點(diǎn)發(fā)生變化的消息后,比較監(jiān)控節(jié)點(diǎn)的配置目錄和狀態(tài)目錄下的節(jié)點(diǎn),如果節(jié)點(diǎn)存在于配置目錄且不存在于狀態(tài)目錄,則發(fā)送監(jiān)控報(bào)警,所述中心節(jié)點(diǎn)按照權(quán)利要求I至3中任何一種方法構(gòu)建得到。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括 在分布式系統(tǒng)中注冊上報(bào)數(shù)據(jù)目錄,以便節(jié)點(diǎn)發(fā)生變化后在該上報(bào)數(shù)據(jù)目錄下建立新的報(bào)警節(jié)點(diǎn); 在分布式系統(tǒng)中心節(jié)點(diǎn)接收到分布式系統(tǒng)中的節(jié)點(diǎn)發(fā)生變化的消息后,獲取上報(bào)數(shù)據(jù)目錄下的節(jié)點(diǎn),根據(jù)獲取的上報(bào)目錄下的節(jié)點(diǎn)發(fā)送監(jiān)控報(bào)警。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括 在分布式系統(tǒng)中注冊分布式鎖節(jié)點(diǎn)目錄;獲取分布式鎖節(jié)點(diǎn)目錄下的節(jié)點(diǎn); 判斷分布式節(jié)點(diǎn)目錄下的節(jié)點(diǎn)中節(jié)點(diǎn)號最小的節(jié)點(diǎn),向節(jié)點(diǎn)號最小的節(jié)點(diǎn)分配分布式鎖。
8.一種分布式系統(tǒng)中心節(jié)點(diǎn)的構(gòu)建裝置,其特征在于,該裝置包括發(fā)送單元、第一判斷單元、第二判斷單元、更新單元、形成單元、統(tǒng)計(jì)單元和確定單元,其中 所述發(fā)送單元,用于向分布式系統(tǒng)發(fā)送選舉消息,所述選舉消息包含選舉輪次和消息請求號; 所述第一判斷單元,用于判斷接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息中的選舉輪次之間的大小關(guān)系,如果選舉消息的選舉輪次大,則觸發(fā)更新單元,如果接收到選舉消息的節(jié)點(diǎn)的選舉輪次與選舉消息的選舉輪次相等,則觸發(fā)第二判斷單元; 所述第二判斷單元,用于判斷接收到選舉消息的節(jié)點(diǎn)的消息請求號與選舉消息中的消息請求號之間的大小關(guān)系,如果選舉消息的消息請求號大,則觸發(fā)更新單元; 所述更新單元,用于在選舉消息的選舉輪次大時(shí),使用選舉消息的選舉輪次更新接收到選舉消息的節(jié)點(diǎn)的選舉輪次,在選舉消息的消息請求號大時(shí),使用選舉消息的消息請求號更新接收到選舉消息的節(jié)點(diǎn)的消息請求號; 所述形成單元,用于根據(jù)更新后的選舉輪次和消息請求號形成對中心節(jié)點(diǎn)的推薦消息,并向分布式系統(tǒng)發(fā)送推薦消息; 所述推薦單元,用于統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦; 所述確定單元,用于將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)確定為中心節(jié)點(diǎn)。
9.一種基于分布式系統(tǒng)中心節(jié)點(diǎn)的數(shù)據(jù)請求提交裝置,其特征在于,該裝置包括轉(zhuǎn)發(fā)單元、群發(fā)單元、第一比較單元、返回單元和同步單元,其中 所述轉(zhuǎn)發(fā)單元,用于將非中心節(jié)點(diǎn)接收到數(shù)據(jù)請求消息轉(zhuǎn)發(fā)給中心節(jié)點(diǎn),所述中心節(jié)點(diǎn)按照權(quán)利要求I至3中任何一種方法構(gòu)建得到; 所述群發(fā)單元,用于將中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息發(fā)送給分布式系統(tǒng)中的非中心節(jié)點(diǎn); 所述第一比較單元,用于比較非中心節(jié)點(diǎn)接收到的數(shù)據(jù)請求消息的ID號與非中心節(jié)點(diǎn)自身的ID號之間的大小,如果數(shù)據(jù)請求消息的ID號大,則觸發(fā)返回單元; 所述返回單元,用于向中心節(jié)點(diǎn)返回確認(rèn)消息; 所述同步單元,用于在中心節(jié)點(diǎn)接收到的確認(rèn)消息達(dá)到預(yù)設(shè)閾值時(shí),將數(shù)據(jù)請求消息的數(shù)據(jù)同步到分布式系統(tǒng)的所有非中心節(jié)點(diǎn)。
10.一種基于分布式系統(tǒng)中心節(jié)點(diǎn)的監(jiān)控裝置,其特征在于,該裝置包括注冊單元、第二比較單元和監(jiān)控報(bào)警單元,其中 所述注冊單元,用于在分布式系統(tǒng)中注冊監(jiān)控節(jié)點(diǎn),所述監(jiān)控節(jié)點(diǎn)包含配置目錄和狀態(tài)目錄; 所述第二比較單元,用于在分布式系統(tǒng)中心節(jié)點(diǎn)接收到分布式系統(tǒng)中的節(jié)點(diǎn)發(fā)生變化的消息后比較監(jiān)控節(jié)點(diǎn)的配置目錄和狀態(tài)目錄下的節(jié)點(diǎn),如果節(jié)點(diǎn)存在于配置目錄且不存在于狀態(tài)目錄,則觸發(fā)監(jiān)控報(bào)警單元;所述中心節(jié)點(diǎn)按照權(quán)利要求I至3中任何一種方法構(gòu)建得到; 所述監(jiān)控報(bào)警單元,用于發(fā)送監(jiān)控報(bào)警。
全文摘要
本申請實(shí)施例公開了一種分布式系統(tǒng)中心節(jié)點(diǎn)的構(gòu)建方法。該方法包括通過發(fā)送選舉消息啟動(dòng)選舉過程,接收到選舉消息的節(jié)點(diǎn)進(jìn)行選舉輪次和消息請求號的比較,使用大的選舉輪次和消息請求號進(jìn)行更新;根據(jù)更新后的選舉輪次和消息請求號形成對中心節(jié)點(diǎn)的推薦消息,并向分布式系統(tǒng)發(fā)送推薦消息;節(jié)點(diǎn)統(tǒng)計(jì)推薦消息中對中心節(jié)點(diǎn)的推薦,并將被推薦數(shù)達(dá)到預(yù)設(shè)閾值的節(jié)點(diǎn)設(shè)置為中心節(jié)點(diǎn)。本申請實(shí)施例還公開了一種基于分布式系統(tǒng)中心節(jié)點(diǎn)的數(shù)據(jù)請求提交方法、監(jiān)控方法以及各自對應(yīng)的裝置。本申請實(shí)施例構(gòu)建的中心節(jié)點(diǎn)更加穩(wěn)定。
文檔編號G06F9/46GK102929696SQ20121037106
公開日2013年2月13日 申請日期2012年9月28日 優(yōu)先權(quán)日2012年9月28日
發(fā)明者宋鵬 申請人:北京搜狐新媒體信息技術(shù)有限公司