本申請涉及通信技術(shù)領(lǐng)域,尤其涉及一種集群節(jié)點(diǎn)統(tǒng)計(jì)方法及裝置。
背景技術(shù):
corosync是一種集群管理工具,集群中的每個節(jié)點(diǎn)上均配置有corosync,以用于感知網(wǎng)絡(luò)拓?fù)涞淖兓?例如,節(jié)點(diǎn)的加入、離線等)。然而對于大規(guī)模集群,corosync支持的節(jié)點(diǎn)數(shù)量是有限的。對于一個集群,corosync通常允許最多只能接入32個節(jié)點(diǎn),并且,此時corosync在節(jié)點(diǎn)上感知網(wǎng)絡(luò)拓?fù)渥兓汛嬖趬毫?。因此,現(xiàn)有的corosync并不適用于大規(guī)模業(yè)務(wù)場景。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請?zhí)峁┮环N集群節(jié)點(diǎn)統(tǒng)計(jì)方法及裝置,以解決現(xiàn)有方式不適用于大規(guī)模的集群場景的問題。
根據(jù)本申請實(shí)施例的第一方面,提供一種集群節(jié)點(diǎn)統(tǒng)計(jì)方法,所述方法應(yīng)用于集群中的中心節(jié)點(diǎn),所述集群包括至少一個環(huán),且所述中心節(jié)點(diǎn)位于每個環(huán)中,所述方法包括:
在接收到來自普通節(jié)點(diǎn)的加入消息時,根據(jù)所述加入消息確定所述普通節(jié)點(diǎn)加入的環(huán),并查詢所述環(huán)對應(yīng)的成員列表中是否存在所述普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識;
若否,則將所述普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識添加到所述環(huán)對應(yīng)的成員列表;
在確定所述環(huán)達(dá)到穩(wěn)定狀態(tài)時,獲取每個環(huán)對應(yīng)的成員列表中的節(jié)點(diǎn)標(biāo)識,并將獲取到的節(jié)點(diǎn)標(biāo)識添加到集群狀態(tài)消息,并將所述集群狀態(tài)消息發(fā)送至管理設(shè)備。
根據(jù)本申請實(shí)施例的第二方面,提供一種集群節(jié)點(diǎn)統(tǒng)計(jì)裝置,所述裝置應(yīng)用于集群中的中心節(jié)點(diǎn),所述集群包括至少一個環(huán),且所述中心節(jié)點(diǎn)位于每個環(huán)中,所述裝置包括:
確定單元,用于在接收到來自普通節(jié)點(diǎn)的加入消息時,根據(jù)所述加入消息確定所述普通節(jié)點(diǎn)加入的環(huán);
查詢單元,用于查詢所述環(huán)對應(yīng)的成員列表中是否存在所述普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識;
添加單元,用于當(dāng)查詢結(jié)果為否時,將所述普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識添加到所述環(huán)對應(yīng)的成員列表;
發(fā)送單元,用于在確定所述環(huán)達(dá)到穩(wěn)定狀態(tài)時,獲取每個環(huán)對應(yīng)的成員列表中的節(jié)點(diǎn)標(biāo)識,并將獲取到的節(jié)點(diǎn)標(biāo)識添加到集群狀態(tài)消息,并將所述集群狀態(tài)消息發(fā)送至管理設(shè)備。
應(yīng)用本申請實(shí)施例,本申請中的集群包括至少一個環(huán),且集群中設(shè)置有位于每個環(huán)的中心節(jié)點(diǎn),該中心節(jié)點(diǎn)在接收到來自普通節(jié)點(diǎn)的加入消息時,可以根據(jù)該加入消息確定普通節(jié)點(diǎn)加入的環(huán),并查詢該環(huán)對應(yīng)的成員列表中是否存在該普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識;若否,則將該普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識添加到該環(huán)對應(yīng)的成員列表;在確定所述環(huán)達(dá)到穩(wěn)定狀態(tài)時,獲取每個環(huán)對應(yīng)的成員列表中的節(jié)點(diǎn)標(biāo)識,并將獲取到的節(jié)點(diǎn)標(biāo)識添加到集群狀態(tài)消息,并將該集群狀態(tài)消息發(fā)送至管理設(shè)備?;谏鲜鰧?shí)現(xiàn)方式,通過在環(huán)中增加普通節(jié)點(diǎn)的方式可以實(shí)現(xiàn)對集群的擴(kuò)展,從而滿足大規(guī)模業(yè)務(wù)場景的應(yīng)用需求。此外,由于集群中設(shè)置的中心節(jié)點(diǎn)位于每個環(huán)中,因此針對每個環(huán),在有新的普通節(jié)點(diǎn)加入時,通過中心節(jié)點(diǎn)可以感知到新加入的普通節(jié)點(diǎn),從而可以實(shí)現(xiàn)對整個集群中存在普通節(jié)點(diǎn)的統(tǒng)計(jì)。
附圖說明
圖1為本申請根據(jù)一示例性實(shí)施例示出的一種集群結(jié)構(gòu)圖;
圖2為本申請根據(jù)一示例性實(shí)施例示出的一種集群節(jié)點(diǎn)統(tǒng)計(jì)方法的實(shí)施例流程圖;
圖3為本申請根據(jù)一示例性實(shí)施例示出的一種中心節(jié)點(diǎn)的硬件結(jié)構(gòu)圖;
圖4為本申請根據(jù)一示例性實(shí)施例示出的一種集群節(jié)點(diǎn)統(tǒng)計(jì)裝置的實(shí)施例結(jié)構(gòu)圖。
具體實(shí)施方式
這里將詳細(xì)地對示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本申請相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術(shù)語是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本申請。在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個或多個相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。
應(yīng)當(dāng)理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當(dāng)……時”或“響應(yīng)于確定”。
圖1為本申請根據(jù)一示例性實(shí)施例示出的一種集群結(jié)構(gòu)圖,圖1所示的集群包括中心節(jié)點(diǎn)(設(shè)備1、設(shè)備2以及設(shè)備3)、2個環(huán)(環(huán)0和環(huán)1)以及交換機(jī),且中心節(jié)點(diǎn)位于每個環(huán)中,其中,環(huán)0包括中心節(jié)點(diǎn)、普通節(jié)點(diǎn)1、普通節(jié)點(diǎn)2以及普通節(jié)點(diǎn)3,且環(huán)0中普通節(jié)點(diǎn)1、普通節(jié)點(diǎn)2以及普通節(jié)點(diǎn)3的ip地址均屬于同一網(wǎng)段,每個普通節(jié)點(diǎn)之間可以通過交換機(jī)進(jìn)行相互通信;環(huán)1包括中心節(jié)點(diǎn)、普通節(jié)點(diǎn)4、普通節(jié)點(diǎn)5以及普通節(jié)點(diǎn)6,且環(huán)1中普通節(jié)點(diǎn)4、普通節(jié)點(diǎn)5以及普通節(jié)點(diǎn)6的ip地址均屬于同一網(wǎng)段,每個普通節(jié)點(diǎn)之間可以通過交換機(jī)進(jìn)行相互通信,中心節(jié)點(diǎn)上配置有兩個ip地址,一個ip地址屬于環(huán)0所在的網(wǎng)段,以用于與環(huán)0中的每個普通節(jié)點(diǎn)通過交換機(jī)相互通信,另一個ip地址屬于環(huán)1所在的網(wǎng)段,以用于與環(huán)1中的每個普通節(jié)點(diǎn)通過交換機(jī)相互通信。本領(lǐng)域技術(shù)人員可以理解的是,圖1所示的中心節(jié)點(diǎn)由三臺設(shè)備組成僅為示例性說明而非限制,其中,每臺設(shè)備可以是一個環(huán)的中心節(jié)點(diǎn),并且每臺設(shè)備可以互為備份;一臺設(shè)備也可以是多個環(huán)的中心節(jié)點(diǎn),其它兩臺設(shè)備作為備份設(shè)備。由多臺設(shè)備組成的中心節(jié)點(diǎn),在其中一臺設(shè)備出現(xiàn)故障時,另一臺設(shè)備可以接管出故障設(shè)備的工作,從而保證了集群的正常的運(yùn)行。此外,集群中的每個節(jié)點(diǎn)(包括普通節(jié)點(diǎn)和中心節(jié)點(diǎn))上可以配置corosync,以用于感知網(wǎng)絡(luò)拓?fù)涞淖兓?,由于corosync具有多環(huán)特性,因此通過中心節(jié)點(diǎn)上配置的corosync可以感知環(huán)0和環(huán)1中普通節(jié)點(diǎn)的加入和離線。
需要說明的是,環(huán)0與環(huán)1所在的網(wǎng)段可以屬于同一網(wǎng)段,也可以屬于不同的網(wǎng)段,并且環(huán)0中的每個節(jié)點(diǎn)與環(huán)1中的每個節(jié)點(diǎn)可以位于不同的vlan(virtuallocalareanetwork,虛擬局域網(wǎng))中,以確保屬于一個環(huán)的報文只在本環(huán)中轉(zhuǎn)發(fā),從而可以達(dá)到報文隔離的目的。
本領(lǐng)域技術(shù)人員可以理解的是,圖1所示集群包括的環(huán)0和環(huán)1僅為示例性說明而非限制,本申請對集群中環(huán)的數(shù)量不做限制,且圖1所示環(huán)0和環(huán)1包括的3個普通節(jié)點(diǎn)僅為示例性說明而非限制,每個環(huán)中包括的普通節(jié)點(diǎn)數(shù)量可以根據(jù)實(shí)際經(jīng)驗(yàn)進(jìn)行設(shè)置,例如,可以設(shè)置每個環(huán)包括的普通節(jié)點(diǎn)數(shù)量不超過30。此外,本申請中提及的普通節(jié)點(diǎn)和中心節(jié)點(diǎn)均屬于節(jié)點(diǎn),且節(jié)點(diǎn)可以是服務(wù)器、主機(jī)等設(shè)備?;谏鲜雒枋隹芍ㄟ^在環(huán)中增加普通節(jié)點(diǎn)的方式均可以實(shí)現(xiàn)對集群的擴(kuò)展,以滿足大規(guī)模業(yè)務(wù)場景的應(yīng)用需求。
圖2為本申請根據(jù)一示例性實(shí)施例示出的一種集群節(jié)點(diǎn)統(tǒng)計(jì)方法的實(shí)施例流程圖,該集群統(tǒng)計(jì)方法可以應(yīng)用在集群中的中心節(jié)點(diǎn)上,本實(shí)施例結(jié)合圖1所示的集群結(jié)構(gòu)進(jìn)行詳細(xì)闡述,如圖1所示的中心節(jié)點(diǎn)上可以配置corosync,并使中心節(jié)點(diǎn)適應(yīng)于多環(huán)的集群通信網(wǎng)絡(luò),從而中心節(jié)點(diǎn)可以與各個環(huán)中的普通節(jié)點(diǎn)進(jìn)行通信。如圖2所示,該集群節(jié)點(diǎn)統(tǒng)計(jì)方法包括如下步驟:
步驟201:在接收到來自普通節(jié)點(diǎn)的加入消息時,根據(jù)該加入消息確定該普通節(jié)點(diǎn)加入的環(huán)。
在一實(shí)施例中,在業(yè)務(wù)需求增加時,可以對集群進(jìn)行擴(kuò)展,即通過在環(huán)中加入新的普通節(jié)點(diǎn)的方式擴(kuò)展集群,以分擔(dān)集群中增加的業(yè)務(wù)需求。首先可以為該普通節(jié)點(diǎn)配置ip地址,然后該普通節(jié)點(diǎn)再發(fā)送加入消息。例如,可以先確定該普通節(jié)點(diǎn)要加入的環(huán),然后確定該環(huán)對應(yīng)的網(wǎng)段地址,并從網(wǎng)段地址中選擇一個未被環(huán)中其他普通節(jié)點(diǎn)使用的ip地址,并將該ip地址配置到該普通節(jié)點(diǎn)上。
在另一實(shí)施例中,在有新的普通節(jié)點(diǎn)加入集群時,新的普通節(jié)點(diǎn)會先向要加入的環(huán)以廣播方式發(fā)送加入消息,環(huán)中的其他普通節(jié)點(diǎn)在接收到該加入消息時,觸發(fā)本普通節(jié)點(diǎn)以廣播方式發(fā)送加入消息,此時該環(huán)進(jìn)入不穩(wěn)定狀態(tài)。從而,中心節(jié)點(diǎn)除了會接收到新的普通節(jié)點(diǎn)發(fā)送的加入消息,后續(xù)還會接收到環(huán)中已有普通節(jié)點(diǎn)發(fā)送的加入消息,并且中心節(jié)點(diǎn)在首次接收到加入消息時,也會觸發(fā)本節(jié)點(diǎn)以廣播方式發(fā)送加入消息。
在又一實(shí)施例中,普通節(jié)點(diǎn)在發(fā)送加入消息時,可以將要加入的環(huán)對應(yīng)的環(huán)標(biāo)識添加到加入消息中,從而,中心節(jié)點(diǎn)可以獲取加入消息攜帶的環(huán)標(biāo)識,根據(jù)該環(huán)標(biāo)識確定該普通節(jié)點(diǎn)加入的環(huán)。其中,環(huán)標(biāo)識可以是數(shù)字或者字符,也可以是數(shù)字與字符的組合,本申請?jiān)诖瞬蛔鱿拗啤H鐖D1中的環(huán)0,對應(yīng)的環(huán)標(biāo)識可以是ring0,環(huán)1對應(yīng)的環(huán)標(biāo)識可以是ring1,以此類推。
步驟202:查詢該環(huán)對應(yīng)的成員列表中是否存在該普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識,若否,則執(zhí)行步驟203后,再執(zhí)行步驟204,否則,直接執(zhí)行步驟204。
在一實(shí)施例中,中心節(jié)點(diǎn)中可以預(yù)先為集群中的每個環(huán)配置一個成員列表,以用于記錄當(dāng)前包括的所有節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(既有普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識,也有中心節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識)。因此,中心節(jié)點(diǎn)可以查詢該環(huán)對應(yīng)的成員列表中是否存在該普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識,若存在,則表示該環(huán)當(dāng)前包括有該普通節(jié)點(diǎn),若不存在,則表示該普通節(jié)點(diǎn)為新加入的普通節(jié)點(diǎn)。其中,節(jié)點(diǎn)標(biāo)識可以是數(shù)字或者字符,也可以是數(shù)字與字符的組合,本申請對此不做限制,只要可以唯一區(qū)別每個節(jié)點(diǎn)即可,例如,可以利用每個節(jié)點(diǎn)的ip地址表示節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識。
步驟203:將該普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識添加到該環(huán)對應(yīng)的成員列表。
在一實(shí)施例中,中心節(jié)點(diǎn)在將該普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識添加到該環(huán)對應(yīng)的成員列表之后,可以在該環(huán)對應(yīng)的成員列表中,為該普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識設(shè)置預(yù)設(shè)標(biāo)記,以表示已接收到新加入的普通節(jié)點(diǎn)的加入消息,并將之前加入該環(huán)的普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識對應(yīng)的預(yù)設(shè)標(biāo)記清除,以用于后面在接收到這些普通節(jié)點(diǎn)的加入消息時,再為對應(yīng)的節(jié)點(diǎn)標(biāo)識設(shè)置預(yù)設(shè)標(biāo)記。因此,若該環(huán)對應(yīng)的成員列表中存在普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識,則查詢普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識是否設(shè)置有預(yù)設(shè)標(biāo)記;若否,則為普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識設(shè)置預(yù)設(shè)標(biāo)記。其中,該預(yù)設(shè)標(biāo)記可以是數(shù)字或者字符,也可以是數(shù)字與字符的組合,本申請?jiān)诖瞬蛔鱿拗啤?/p>
步驟204:在確定該環(huán)達(dá)到穩(wěn)定狀態(tài)時,獲取每個環(huán)對應(yīng)的成員列表中的節(jié)點(diǎn)標(biāo)識,并將獲取到的節(jié)點(diǎn)標(biāo)識添加到狀態(tài)消息,并將該狀態(tài)消息發(fā)送至管理設(shè)備。
在一實(shí)施例中,針對確定該環(huán)達(dá)到穩(wěn)定狀態(tài)的過程,中心節(jié)點(diǎn)可以從接收到普通節(jié)點(diǎn)的加入消息開始計(jì)時,在第一預(yù)設(shè)時間間隔之后,向該環(huán)中的每個普通節(jié)點(diǎn)發(fā)送攜帶有該環(huán)對應(yīng)的成員列表的提交令牌環(huán)消息,并開始計(jì)時;其中,每個普通節(jié)點(diǎn)在接收到提交令牌環(huán)消息時,判斷提交令牌環(huán)消息攜帶的成員列表中的節(jié)點(diǎn)標(biāo)識與本節(jié)點(diǎn)上的成員列表中的節(jié)點(diǎn)標(biāo)識是否一致,若一致,則向中心節(jié)點(diǎn)返回提交令牌環(huán)響應(yīng)消息;在第二預(yù)設(shè)時間間隔之后,中心節(jié)點(diǎn)若接收到來自該環(huán)中的每個普通節(jié)點(diǎn)的提交令牌環(huán)響應(yīng)消息,則確定該環(huán)達(dá)到穩(wěn)定狀態(tài);若未接收到某普通節(jié)點(diǎn)的提交令牌環(huán)響應(yīng)消息,則將該環(huán)對應(yīng)的成員列表中除本節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識之外的節(jié)點(diǎn)標(biāo)識刪除,并以廣播方式向該環(huán)發(fā)送加入消息,以觸發(fā)該環(huán)中的每個普通節(jié)點(diǎn)發(fā)送加入消息,并繼續(xù)執(zhí)行步驟201的過程。
其中,第一預(yù)設(shè)時間間隔可以根據(jù)實(shí)際經(jīng)驗(yàn)設(shè)置,只要確保在該段時間間隔內(nèi)能夠接收到環(huán)中每個普通節(jié)點(diǎn)的加入消息即可。第二預(yù)設(shè)時間間隔也可以根據(jù)實(shí)際經(jīng)驗(yàn)設(shè)置,只要確保在向環(huán)中的每個普通節(jié)點(diǎn)發(fā)送提交令牌環(huán)消息之后,在該段時間間隔內(nèi)能夠接收到環(huán)中每個普通節(jié)點(diǎn)返回的提交令牌環(huán)響應(yīng)消息即可。在第二預(yù)設(shè)時間間隔之后,中心節(jié)點(diǎn)如果接收到來自該環(huán)中的每個普通節(jié)點(diǎn)的提交令牌環(huán)響應(yīng)消息,則表示每個普通節(jié)點(diǎn)均在線,且提交令牌環(huán)消息攜帶的成員列表中的節(jié)點(diǎn)標(biāo)識與每個普通節(jié)點(diǎn)上的成員列表中的節(jié)點(diǎn)標(biāo)識一致,該環(huán)達(dá)到穩(wěn)定狀態(tài),中心節(jié)點(diǎn)可以針對每個環(huán)包括的節(jié)點(diǎn)進(jìn)行統(tǒng)計(jì)。而如果未接收到某普通節(jié)點(diǎn)的提交令牌環(huán)響應(yīng)消息,則表示某普通節(jié)點(diǎn)可能離線,或者某普通節(jié)點(diǎn)可能仍在線,但提交令牌環(huán)消息攜帶的成員列表中的節(jié)點(diǎn)標(biāo)識與該某普通節(jié)點(diǎn)上的成員列表中的節(jié)點(diǎn)標(biāo)識不一致,該環(huán)還未達(dá)到穩(wěn)定狀態(tài),從而,中心節(jié)點(diǎn)可以將該環(huán)對應(yīng)的成員列表中除本節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識之外的節(jié)點(diǎn)標(biāo)識刪除,并重新發(fā)送加入消息,以觸發(fā)該環(huán)中每個普通節(jié)點(diǎn)再次發(fā)送加入消息,重新維護(hù)該成員列表。
在一示例性場景中,如圖1所示,假設(shè)普通節(jié)點(diǎn)3為新加入的普通節(jié)點(diǎn),普通節(jié)點(diǎn)3的節(jié)點(diǎn)標(biāo)識為node3,普通節(jié)點(diǎn)1和普通節(jié)點(diǎn)2的節(jié)點(diǎn)標(biāo)識分別為node1和node2,環(huán)0對應(yīng)的環(huán)標(biāo)識為ring0,普通節(jié)點(diǎn)3首先以廣播方式向環(huán)0發(fā)送加入消息,中心節(jié)點(diǎn)在接收到來自普通節(jié)點(diǎn)3的加入消息時,開始計(jì)時,并根據(jù)加入消息中攜帶的環(huán)標(biāo)識ring0確定普通節(jié)點(diǎn)3加入環(huán)0,然后查詢到ring0對應(yīng)的成員列表中不存在node3,將node3添加到ring0對應(yīng)的成員列表中,在此期間,中心節(jié)點(diǎn)還會接收到環(huán)0中node1和node2的加入消息,并執(zhí)行查詢ring0對應(yīng)的成員列表中是否存在node1和node2的過程。在第一預(yù)設(shè)時間間隔之后,向環(huán)0中的每個普通節(jié)點(diǎn)發(fā)送攜帶有ring0對應(yīng)的成員列表的提交令牌環(huán)消息,并開始計(jì)時;其中,每個普通節(jié)點(diǎn)在接收到提交令牌環(huán)消息時,判斷提交令牌環(huán)消息攜帶的成員列表中的節(jié)點(diǎn)標(biāo)識與本節(jié)點(diǎn)上的成員列表中的節(jié)點(diǎn)標(biāo)識是否一致,若一致,則向中心節(jié)點(diǎn)返回提交令牌環(huán)響應(yīng)消息;在第二預(yù)設(shè)時間間隔之后,中心節(jié)點(diǎn)若接收到來自環(huán)0中的每個普通節(jié)點(diǎn)(node1、node2、node3)的提交令牌環(huán)響應(yīng)消息,則確定環(huán)0達(dá)到穩(wěn)定狀態(tài);若未接收到某普通節(jié)點(diǎn)的提交令牌環(huán)響應(yīng)消息,則將ring0對應(yīng)的成員列表中的node1、node2、node3刪除,并以廣播方式向環(huán)0發(fā)送加入消息,以觸發(fā)環(huán)0中的每個普通節(jié)點(diǎn)發(fā)送加入消息,并繼續(xù)執(zhí)行步驟201的過程。
針對上述步驟203所示的實(shí)施例,若在第二預(yù)設(shè)時間間隔之后,中心節(jié)點(diǎn)仍未接收到某普通節(jié)點(diǎn)的提交令牌環(huán)響應(yīng)消息,則將該環(huán)對應(yīng)的成員列表中除本節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識的預(yù)設(shè)標(biāo)記之外的節(jié)點(diǎn)標(biāo)識的預(yù)設(shè)標(biāo)記清除,并以廣播方式向該環(huán)發(fā)送加入消息,以觸發(fā)該環(huán)中的每個普通節(jié)點(diǎn)發(fā)送加入消息,并開始計(jì)時;當(dāng)接收到該環(huán)中的普通節(jié)點(diǎn)發(fā)送的加入消息時,在該環(huán)對應(yīng)的成員列表中,為該普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識設(shè)置預(yù)設(shè)標(biāo)記;在第一預(yù)設(shè)時間間隔之后,查詢該環(huán)對應(yīng)的成員列表中是否存在未設(shè)置有預(yù)設(shè)標(biāo)記的節(jié)點(diǎn)標(biāo)識,若不存在,則繼續(xù)執(zhí)行向該環(huán)中的每個普通節(jié)點(diǎn)發(fā)送攜帶有該環(huán)對應(yīng)的成員列表的提交令牌環(huán)消息的過程;若存在,則刪除未設(shè)置有預(yù)設(shè)標(biāo)記的節(jié)點(diǎn)標(biāo)識,并將攜帶有該未設(shè)置有預(yù)設(shè)標(biāo)記的節(jié)點(diǎn)標(biāo)識的提示消息發(fā)送至管理設(shè)備,以使管理設(shè)備顯示該提示消息,以提示該節(jié)點(diǎn)標(biāo)識對應(yīng)的節(jié)點(diǎn)已離線。并繼續(xù)執(zhí)行向該環(huán)中的每個普通節(jié)點(diǎn)發(fā)送攜帶有該環(huán)對應(yīng)的成員列表的提交令牌環(huán)消息的過程。從而,技術(shù)人員可以查看到集群中已經(jīng)離線的節(jié)點(diǎn),并可以進(jìn)一步確定該節(jié)點(diǎn)的離線原因。
在另一實(shí)施例中,中心節(jié)點(diǎn)也可以在接收到來自管理設(shè)備的集群狀態(tài)查詢請求時,獲取每個環(huán)對應(yīng)的成員列表中的節(jié)點(diǎn)標(biāo)識,并將獲取到的節(jié)點(diǎn)標(biāo)識添加到集群狀態(tài)消息,并將所述集群狀態(tài)消息發(fā)送至管理設(shè)備。從而,管理設(shè)備除了被動的接收狀態(tài)消息之外,也可以通過發(fā)送集群狀態(tài)查詢請求主動獲取狀態(tài)消息,獲得集群中存在的節(jié)點(diǎn)。
在又一實(shí)施例中,由于中心節(jié)點(diǎn)位于集群包括的每個環(huán)中,因此中心節(jié)點(diǎn)可以獲取到每個環(huán)對應(yīng)的成員列表中的節(jié)點(diǎn)標(biāo)識,并可以將獲取到的節(jié)點(diǎn)標(biāo)識添加到狀態(tài)消息中,并將該狀態(tài)消息發(fā)送至管理設(shè)備,以使管理設(shè)備顯示該狀態(tài)消息,從而技術(shù)人員可以清晰的查看到集群中存在的節(jié)點(diǎn),并對集群中每個節(jié)點(diǎn)的任務(wù)和資源進(jìn)行調(diào)度。
需要說明的是,中心節(jié)點(diǎn)可以針對每個環(huán),統(tǒng)計(jì)該環(huán)對應(yīng)的成員列表中的節(jié)點(diǎn)標(biāo)識的數(shù)量,若該數(shù)量超過預(yù)設(shè)數(shù)值,則生成用于提示該環(huán)已飽和的提示消息,并將該提示消息發(fā)送至管理設(shè)備。從而,中心節(jié)點(diǎn)可以實(shí)時的監(jiān)測每個環(huán)中普通節(jié)點(diǎn)的數(shù)量是否已飽和。
其中,預(yù)設(shè)數(shù)值可以根據(jù)實(shí)踐經(jīng)驗(yàn)進(jìn)行設(shè)置,例如,中心節(jié)點(diǎn)上配置有corosync,corosync對于每個環(huán)可以支持的節(jié)點(diǎn)數(shù)量通常最大為32個,因此,可以將預(yù)設(shè)數(shù)值設(shè)置為30個。
由上述實(shí)施例可知,本申請中的集群包括至少一個環(huán),且集群中設(shè)置有位于每個環(huán)的中心節(jié)點(diǎn),該中心節(jié)點(diǎn)在接收到來自普通節(jié)點(diǎn)的加入消息時,可以根據(jù)該加入消息確定普通節(jié)點(diǎn)加入的環(huán),并查詢該環(huán)對應(yīng)的成員列表中是否存在該普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識;若否,則將該普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識添加到該環(huán)對應(yīng)的成員列表;在確定所述環(huán)達(dá)到穩(wěn)定狀態(tài)時,獲取每個環(huán)對應(yīng)的成員列表中的節(jié)點(diǎn)標(biāo)識,并將獲取到的節(jié)點(diǎn)標(biāo)識添加到集群狀態(tài)消息,并將該集群狀態(tài)消息發(fā)送至管理設(shè)備?;谏鲜鰧?shí)現(xiàn)方式,通過在環(huán)中增加普通節(jié)點(diǎn)的方式可以實(shí)現(xiàn)對集群的擴(kuò)展,從而滿足大規(guī)模業(yè)務(wù)場景的應(yīng)用需求。此外,由于集群中設(shè)置的中心節(jié)點(diǎn)位于每個環(huán)中,因此針對每個環(huán),在有新的普通節(jié)點(diǎn)加入時,通過中心節(jié)點(diǎn)可以感知到新加入的普通節(jié)點(diǎn),從而可以實(shí)現(xiàn)對整個集群中存在普通節(jié)點(diǎn)的統(tǒng)計(jì)。
與前述集群節(jié)點(diǎn)統(tǒng)計(jì)方法的實(shí)施例相對應(yīng),本申請還提供了集群節(jié)點(diǎn)統(tǒng)計(jì)裝置的實(shí)施例。
本申請集群節(jié)點(diǎn)統(tǒng)計(jì)裝置的實(shí)施例可以應(yīng)用在中心節(jié)點(diǎn)上。裝置實(shí)施例可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在設(shè)備的處理器將非易失性存儲器中對應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,如圖3所示,為本申請根據(jù)一示例性實(shí)施例示出的一種中心節(jié)點(diǎn)的硬件結(jié)構(gòu)圖,除了圖3所示的處理器、內(nèi)存、網(wǎng)絡(luò)接口、以及非易失性存儲器之外,實(shí)施例中裝置所在的設(shè)備通常根據(jù)該設(shè)備的實(shí)際功能,還可以包括其他硬件,對此不再贅述。
圖4為本申請根據(jù)一示例性實(shí)施例示出的一種集群節(jié)點(diǎn)統(tǒng)計(jì)裝置的實(shí)施例結(jié)構(gòu)圖,該集群統(tǒng)計(jì)裝置可以應(yīng)用在集群中的中心節(jié)點(diǎn)上,如圖4所示,該裝置包括:確定單元410、查詢單元420、添加單元430以及發(fā)送單元440。
其中,確定單元410,用于在接收到來自普通節(jié)點(diǎn)的加入消息時,根據(jù)所述加入消息確定所述普通節(jié)點(diǎn)加入的環(huán);
查詢單元420,用于查詢所述環(huán)對應(yīng)的成員列表中是否存在所述普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識;
添加單元430,用于當(dāng)查詢結(jié)果為否時,將所述普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識添加到所述環(huán)對應(yīng)的成員列表;
發(fā)送單元440,用于在確定所述環(huán)達(dá)到穩(wěn)定狀態(tài)時,獲取每個環(huán)對應(yīng)的成員列表中的節(jié)點(diǎn)標(biāo)識,并將獲取到的節(jié)點(diǎn)標(biāo)識添加到集群狀態(tài)消息,并將所述集群狀態(tài)消息發(fā)送至管理設(shè)備。
在一實(shí)施例中,所述裝置還包括(圖4中未示出):
設(shè)置及清除單元,用于在所述添加單元430將所述普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識添加到所述環(huán)對應(yīng)的成員列表之后,在所述環(huán)對應(yīng)的成員列表中,為所述普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識設(shè)置預(yù)設(shè)標(biāo)記,并將之前加入所述環(huán)的普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識對應(yīng)的預(yù)設(shè)標(biāo)記清除;
所述裝置還包括(圖4中未示出):
查詢及設(shè)置單元,用于在查詢結(jié)果為是時,查詢所述普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識是否設(shè)置有預(yù)設(shè)標(biāo)記;若否,則為所述普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識設(shè)置預(yù)設(shè)標(biāo)記。
在一實(shí)施例中,所述發(fā)送單元,具體用于在確定所述環(huán)達(dá)到穩(wěn)定狀態(tài)的過程中,從接收到來自普通節(jié)點(diǎn)的加入消息開始計(jì)時,在第一預(yù)設(shè)時間間隔之后,向所述環(huán)中的每個普通節(jié)點(diǎn)發(fā)送攜帶有所述環(huán)對應(yīng)的成員列表的提交令牌環(huán)消息,并開始計(jì)時;其中,每個普通節(jié)點(diǎn)在接收到提交令牌環(huán)消息時,判斷所述提交令牌環(huán)消息攜帶的成員列表中的節(jié)點(diǎn)標(biāo)識與本節(jié)點(diǎn)上的成員列表中的節(jié)點(diǎn)標(biāo)識是否一致,若一致,則向所述中心節(jié)點(diǎn)返回提交令牌環(huán)響應(yīng)消息;在第二預(yù)設(shè)時間間隔之后,若接收到來自所述環(huán)中的每個普通節(jié)點(diǎn)的提交令牌環(huán)響應(yīng)消息,則確定所述環(huán)達(dá)到穩(wěn)定狀態(tài)。
在一實(shí)施例中,所述裝置還包括(圖4中未示出):
重新維護(hù)單元,用于若未接收到某普通節(jié)點(diǎn)的提交令牌環(huán)響應(yīng)消息,則將所述環(huán)對應(yīng)的成員列表中除本節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識之外的節(jié)點(diǎn)標(biāo)識刪除,并以廣播方式向所述環(huán)發(fā)送加入消息,以觸發(fā)所述環(huán)中的每個普通節(jié)點(diǎn)發(fā)送加入消息,并繼續(xù)執(zhí)行在接收到來自普通節(jié)點(diǎn)的加入消息時根據(jù)所述加入消息確定所述普通節(jié)點(diǎn)加入的環(huán),并查詢所述環(huán)對應(yīng)的成員列表中是否存在所述普通節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識的過程。
在一實(shí)施例中,所述確定單元410,具體用于在根據(jù)所述加入消息確定所述普通節(jié)點(diǎn)加入的環(huán)的過程中,獲取所述加入消息攜帶的環(huán)標(biāo)識;根據(jù)所述環(huán)標(biāo)識確定所述普通節(jié)點(diǎn)加入的環(huán)。
上述裝置中各個單元的功能和作用的實(shí)現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實(shí)現(xiàn)過程,在此不再贅述。
對于裝置實(shí)施例而言,由于其基本對應(yīng)于方法實(shí)施例,所以相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實(shí)施。
以上所述僅為本申請的較佳實(shí)施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請保護(hù)的范圍之內(nèi)。