分布式集群狀態(tài)管理的方法及其系統(tǒng)的制作方法
【專利摘要】本發(fā)明適用于計(jì)算機(jī)技術(shù)領(lǐng)域,提供了一種分布式集群狀態(tài)管理的方法及其系統(tǒng),所述方法包括如下步驟:A、設(shè)置內(nèi)存式數(shù)據(jù)庫(kù)和所述分布式集群的管理者;B、通過(guò)所述內(nèi)存式數(shù)據(jù)庫(kù)存儲(chǔ)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息,以及通過(guò)所述分布式集群的管理者維護(hù)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。由此,提高了分布式集群的管理效率。
【專利說(shuō)明】
分布式集群狀態(tài)管理的方法及其系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種分布式集群狀態(tài)管理的方法及其系統(tǒng)。
【背景技術(shù)】
[0002]當(dāng)前,大部分集群管理系統(tǒng)在ZooKeeper的基礎(chǔ)上構(gòu)建。如圖1A所示:NodeA集群,Node B集群,Node C集群都連接到zookeeper集群,通過(guò)Zookeeper來(lái)管理整個(gè)分布式系統(tǒng),使整個(gè)系統(tǒng)處于一個(gè)可用的狀態(tài)。
[0003]在Zookeeper的內(nèi)部,Zookeeper為集群各個(gè)節(jié)點(diǎn)維持了一個(gè)虛擬文件結(jié)構(gòu),節(jié)點(diǎn)在各自的目錄下面添加節(jié)點(diǎn)并watch父目錄。節(jié)點(diǎn)宕機(jī)之后,Zookeeper從目錄中刪除對(duì)應(yīng)節(jié)點(diǎn)。當(dāng)前目錄下有變化時(shí),Zookeeper通知該目錄下面的節(jié)點(diǎn)已有變化。如在圖1B中,節(jié)點(diǎn)上線時(shí),在屬于自己的目錄下面添加數(shù)據(jù)(/APP3/SERVER2)并watch/APP3這個(gè)目錄,若該節(jié)點(diǎn)宕機(jī),Zookeeper則刪除/APP3/SERVER2,添加和刪除數(shù)據(jù)都會(huì)引起/APP3這個(gè)目錄變化,Zookeeper則會(huì)通知Watch/APP3目錄的節(jié)點(diǎn),告之變化(有節(jié)點(diǎn)上線或者宕機(jī))。
[0004]現(xiàn)有的分布式集群狀態(tài)管理的技術(shù)的缺陷包括:1.耦合度高,靈活度低。并且,由于Zookeeper集群需要一個(gè)leader,當(dāng)leader節(jié)點(diǎn)宕機(jī)時(shí),不僅leader節(jié)點(diǎn)數(shù)據(jù)丟失,還需要重選Zookeeper leader節(jié)點(diǎn)來(lái)通知節(jié)點(diǎn)變化,數(shù)據(jù)的變化只能從Zookeeper leader節(jié)點(diǎn)開始同步給Zookeeper集群其余節(jié)點(diǎn)。
[0005]2.樹形結(jié)構(gòu)繁瑣復(fù)雜,性能低下。為了保證這種結(jié)構(gòu),Zookeeper需要維持一套虛擬文件結(jié)構(gòu)的開銷,對(duì)于目錄結(jié)構(gòu)深的樹節(jié)點(diǎn),造成性能影響。然后,集群信息的維護(hù)不一定需要樹結(jié)構(gòu)。
[000?] 3.“觀察”(watch)機(jī)制的僵化設(shè)計(jì):Zookeeper沒(méi)有獲取最新版本信息的方法支持,它只能粗暴地在每次寫入更新的等方法時(shí)注冊(cè)一個(gè)watch,當(dāng)這些方法被調(diào)用后就回調(diào),它不考慮從信息內(nèi)容是否變化,對(duì)于沒(méi)有信息內(nèi)容發(fā)生改變的更新,Zookeeper仍然會(huì)回調(diào),并且Zookeeper的回調(diào)比較呆板,它只能調(diào)用一次,如果信息持續(xù)變化,必須又重新注冊(cè)watchο
[0007]綜上可知,現(xiàn)有的分布式集群狀態(tài)管理技術(shù)在實(shí)際使用上,顯然存在不便與缺陷,所以有必要加以改進(jìn)。
【發(fā)明內(nèi)容】
[0008]針對(duì)上述的缺陷,本發(fā)明的目的在于提供一種分布式集群狀態(tài)管理的方法及其系統(tǒng),以提高分布式集群的管理效率。
[0009]為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種分布式集群狀態(tài)管理的方法,所述方法包括如下步驟:
[0010]A、設(shè)置內(nèi)存式數(shù)據(jù)庫(kù)和所述分布式集群的管理者;
[0011]B、通過(guò)所述內(nèi)存式數(shù)據(jù)庫(kù)存儲(chǔ)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息,以及通過(guò)所述分布式集群的管理者維護(hù)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。
[0012]根據(jù)所述的方法,所述內(nèi)存式數(shù)據(jù)庫(kù)包括Redis;所述分布式集群的管理者為ICTMaster0
[0013]根據(jù)所述的方法,所述步驟B包括:
[OOM] B1、至少一個(gè)所述集群的任一節(jié)點(diǎn)上線時(shí),向所述Redis中的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的信息,并訂閱所述集群的信息;
[0015]B2、所述ICTMaster從所述Redis中的所述集群中讀取并刪除所述節(jié)點(diǎn)的信息,并廣播到所述集群中有新的節(jié)點(diǎn)上線。
[0016]根據(jù)所述的方法,所述步驟B包括:
[0017]B3、至少一個(gè)所述集群的任一節(jié)點(diǎn)上線之后,定時(shí)向所述Redis中對(duì)應(yīng)的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的心跳信息;
[0018]B4、所述ICTMaster讀取所述節(jié)點(diǎn)的心跳信息,但不廣播所述集群的變化。
[0019]根據(jù)所述的方法,所述步驟B包括:
[°02°] B5、至少一個(gè)所述集群的任一節(jié)點(diǎn)宕機(jī)時(shí),不在所述Redis中添加所述節(jié)點(diǎn)的心跳信息;
[0021 ] B6、所述ICTMaster檢測(cè)到所述節(jié)點(diǎn)的心跳信息超時(shí),則判斷所述節(jié)點(diǎn)宕機(jī),并廣播到當(dāng)前key為所述集群中各個(gè)節(jié)點(diǎn)變化。
[0022]為了實(shí)現(xiàn)本發(fā)明的另一發(fā)明目的,本發(fā)明還提供了一種分布式集群狀態(tài)管理的系統(tǒng),所述系統(tǒng)包括:
[0023]設(shè)置模塊,用于設(shè)置內(nèi)存式數(shù)據(jù)庫(kù)和所述分布式集群的管理者;
[0024]管理模塊,用于通過(guò)所述內(nèi)存式數(shù)據(jù)庫(kù)存儲(chǔ)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息,以及通過(guò)所述分布式集群的管理者維護(hù)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。
[0025]根據(jù)所述的系統(tǒng),所述內(nèi)存式數(shù)據(jù)庫(kù)包括Redis,所述分布式集群的管理者為ICTMaster0
[0026]根據(jù)所述的系統(tǒng),所述管理模塊在至少一個(gè)所述集群的任一節(jié)點(diǎn)上線時(shí),向所述Redis中的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的信息,并訂閱所述集群的信息;
?0027] 所述ICTMaster從所述Redis中的所述集群中讀取并刪除所述節(jié)點(diǎn)的信息,并廣播到所述集群中有新的節(jié)點(diǎn)上線。
[0028]根據(jù)所述的系統(tǒng),所述管理模塊在至少一個(gè)所述集群的任一節(jié)點(diǎn)上線之后,定時(shí)向所述Redi s中對(duì)應(yīng)的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的心跳信息;
[0029]所述ICTMaster讀取所述節(jié)點(diǎn)的心跳信息,但不廣播所述集群的變化。
[0030]根據(jù)所述的系統(tǒng),在至少一個(gè)所述集群的任一節(jié)點(diǎn)宕機(jī)時(shí),所述管理模塊不在所述Redi s中添加所述節(jié)點(diǎn)的心跳信息;
[0031 ]所述ICTMaster檢測(cè)到有所述節(jié)點(diǎn)的心跳信息超時(shí),則判斷所述節(jié)點(diǎn)宕機(jī),并廣播到當(dāng)前key為所述集群中各個(gè)節(jié)點(diǎn)變化。
[0032]本發(fā)明通過(guò)設(shè)置內(nèi)存式數(shù)據(jù)庫(kù);并通過(guò)所述內(nèi)存式數(shù)據(jù)庫(kù)存儲(chǔ)和維護(hù)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。由此,將集群管理系統(tǒng)中的兩部分解耦開,解決了Zookeeper耦合度高,靈活度低的問(wèn)題。此外,內(nèi)存式數(shù)據(jù)庫(kù)包括了Redis和ICTMaster,由于Redis等內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)非虛擬文件結(jié)構(gòu),非樹形結(jié)構(gòu),使得集群管理系統(tǒng)更為高效。對(duì)數(shù)據(jù)庫(kù)表項(xiàng)可以自主設(shè)計(jì),可以獲取變化內(nèi)容的最新版本,解決現(xiàn)有技術(shù)中Zookeeper watch機(jī)制的僵化問(wèn)題。
【附圖說(shuō)明】
[0033]圖1A是現(xiàn)有技術(shù)中的分布式集群的結(jié)構(gòu)示意圖;
[0034]圖1B是現(xiàn)有技術(shù)中的分布式集群的虛擬文件的結(jié)構(gòu)示意圖;
[0035]圖2是本發(fā)明實(shí)施例提供的分布式集群狀態(tài)管理的系統(tǒng)的結(jié)構(gòu)示意圖;
[0036]圖3是本發(fā)明實(shí)施例提供的分布式集群狀態(tài)管理的系統(tǒng)的結(jié)構(gòu)示意圖;
[0037]圖4是本發(fā)明實(shí)施例提供的分布式集群狀態(tài)管理的方法的流程圖;
[0038]圖5是本發(fā)明實(shí)施例提供的分布式集群的結(jié)構(gòu)示意圖;
[0039]圖6是本發(fā)明根據(jù)圖1A改進(jìn)后的系統(tǒng)結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0040]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0041]參見(jiàn)圖2和圖3,在本發(fā)明的第一實(shí)施例中,提供了一種分布式集群狀態(tài)管理的系統(tǒng)100,系統(tǒng)100包括:
[0042]設(shè)置模塊10,用于設(shè)置內(nèi)存式數(shù)據(jù)庫(kù)30和所述分布式集群的管理者;
[0043]管理模塊20,用于通過(guò)所述內(nèi)存式數(shù)據(jù)庫(kù)30存儲(chǔ)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息,以及通過(guò)所述分布式集群的管理者維護(hù)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。
[0044]在該實(shí)施例中,首先通過(guò)設(shè)置模塊10設(shè)置內(nèi)存式數(shù)據(jù)庫(kù)30所述分布式集群的管理者;優(yōu)選的,內(nèi)存式數(shù)據(jù)庫(kù)30包括Redis,以及所述分布式集群的管理者為ICTMaster。設(shè)置模塊10對(duì)內(nèi)存式數(shù)據(jù)庫(kù)30的具體設(shè)置內(nèi)容包括添加數(shù)據(jù),刪除數(shù)據(jù),廣播數(shù)據(jù)。管理模塊20通過(guò)所述內(nèi)存式數(shù)據(jù)庫(kù)30存儲(chǔ)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。而所述分布式集群中可以包括多個(gè)集群,而管理模塊20可以通過(guò)內(nèi)存式數(shù)據(jù)庫(kù)30存儲(chǔ)所述分布式集群中多個(gè)集群的各節(jié)點(diǎn)的信息。管理模塊20通過(guò)所述分布式集群的管理者一一ICTMaster維護(hù)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。即ICTMaster實(shí)質(zhì)上屬于管理模塊20。ICTMas ter將對(duì)集群的管理,轉(zhuǎn)換為對(duì)數(shù)據(jù)庫(kù)的操作。也是由于這樣,把傳統(tǒng)的Zookeeper方案解耦開,變得更加靈活。由此,提高分布式集群的管理效率。由于將集群管理系統(tǒng)分成兩部分,使得集群管理系統(tǒng)更為靈活;內(nèi)存式數(shù)據(jù)庫(kù)30不在局限于性能低下的虛擬的文件結(jié)構(gòu),樹形結(jié)構(gòu),可對(duì)數(shù)據(jù)庫(kù)表項(xiàng)自主設(shè)計(jì),達(dá)到變化內(nèi)容及時(shí)更新的目的。
[0045]參見(jiàn)圖3,在本發(fā)明的第二實(shí)施例中,管理模塊20在至少一個(gè)所述集群的任一節(jié)點(diǎn)上線時(shí),向所述Redi s中的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的信息,并訂閱所述集群的信息;
[0046]所述ICTMaster從所述Redis中的所述集群中讀取并刪除所述節(jié)點(diǎn)的信息,并廣播到所述集群中有新的節(jié)點(diǎn)上線?;蛘?br>[0047]管理模塊20在至少一個(gè)所述集群的任一節(jié)點(diǎn)上線之后,定時(shí)向所述Redis中對(duì)應(yīng)的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的心跳信息;
[0048]所述ICTMaster讀取所述節(jié)點(diǎn)的心跳信息,但不廣播所述集群的變化?;蛘?br>[0049]在至少一個(gè)所述集群的任一節(jié)點(diǎn)宕機(jī)時(shí),管理模塊20不在Redis中添加所述節(jié)點(diǎn)的心跳信息;
[0050]所述ICTMaster檢測(cè)到有所述節(jié)點(diǎn)的心跳信息超時(shí),則判斷所述節(jié)點(diǎn)宕機(jī),并廣播到當(dāng)前key為所述集群中的對(duì)應(yīng)的集群各個(gè)節(jié)點(diǎn)變化。
[0051]在該實(shí)施例中,為了管理如圖1A中的多類集群,需要有一個(gè)集群狀態(tài)管理系統(tǒng)??梢杂肦edis集群和ICTMasteH集群管理系統(tǒng)的另外一部分,這部分根據(jù)系統(tǒng)實(shí)際需求定制)。具體的通過(guò)研究Zookeeper的在現(xiàn)有技術(shù)中存在的問(wèn)題中,發(fā)現(xiàn)集群管理系統(tǒng)由兩部分組成:信息的存儲(chǔ),即存儲(chǔ)各節(jié)點(diǎn)的狀態(tài)信息。信息的傳遞,即當(dāng)有信息更新時(shí),將信息傳遞出去。針對(duì)這個(gè)發(fā)現(xiàn),采用Redis等內(nèi)存數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)和維護(hù)集群各節(jié)點(diǎn)信息,系統(tǒng)各節(jié)點(diǎn)跟集群管理者的通信變成對(duì)數(shù)據(jù)庫(kù)的插入操作。集群管理者跟系統(tǒng)各節(jié)點(diǎn)的通信變成對(duì)數(shù)據(jù)庫(kù)的插入,刪除,廣播操作。并且在上述多個(gè)實(shí)施例中,系統(tǒng)100可以是軟件單元,硬件單元或軟硬件結(jié)合單元。
[0052]參見(jiàn)圖4,在本發(fā)明的第三實(shí)施例中,提供了一種分布式集群狀態(tài)管理的方法,所述方法包括如下步驟:
[0053]步驟S401,設(shè)置內(nèi)存式數(shù)據(jù)庫(kù)和所述分布式集群的管理者;該步驟由設(shè)置模塊10實(shí)現(xiàn);
[0054]步驟S402,通過(guò)所述內(nèi)存式數(shù)據(jù)庫(kù)30存儲(chǔ)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息,以及通過(guò)所述分布式集群的管理者。該步驟由管理模塊20實(shí)現(xiàn)。
[0055]在該實(shí)施例中,首先通過(guò)設(shè)置模塊10設(shè)置內(nèi)存式數(shù)據(jù)庫(kù)30和所述分布式集群的管理者;優(yōu)選的,內(nèi)存式數(shù)據(jù)庫(kù)30包括Redis,分布式集群的管理者為ICTMaster。管理模塊20通過(guò)所述內(nèi)存式數(shù)據(jù)庫(kù)30存儲(chǔ)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。通過(guò)ICTMaster維護(hù)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。而所述分布式集群中可以包括多個(gè)集群,而管理模塊20可以通過(guò)內(nèi)存式數(shù)據(jù)庫(kù)30存儲(chǔ)和維護(hù)所述分布式集群中多個(gè)集群的各節(jié)點(diǎn)的信息。
[0056]在本發(fā)明的一個(gè)實(shí)施方式中,ICTMaster是根據(jù)實(shí)際項(xiàng)目需求實(shí)現(xiàn)的一個(gè)管理系統(tǒng)。
[0057]在本發(fā)明的第四實(shí)施例中,所述步驟S402包括:
[0058]至少一個(gè)所述集群的任一節(jié)點(diǎn)上線時(shí),向所述Redis中的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的信息,并訂閱所述集群的信息;該步驟由管理模塊20實(shí)現(xiàn)。
[0059]所述ICTMaster從所述Redis中的所述集群中讀取并刪除所述節(jié)點(diǎn)的信息,并廣播到所述集群中有新的節(jié)點(diǎn)上線。
[0060]所述步驟S402包括:
[0061]至少一個(gè)所述集群的任一節(jié)點(diǎn)上線之后,定時(shí)向所述Redis中對(duì)應(yīng)的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的心跳信息;該步驟由管理模塊20實(shí)現(xiàn)。
[0062]所述ICTMaster讀取所述節(jié)點(diǎn)的心跳信息,但不廣播所述集群的變化。
[0063]所述步驟S402包括:
[0064]至少一個(gè)所述集群的任一節(jié)點(diǎn)宕機(jī)時(shí),不在Redis中添加所述節(jié)點(diǎn)的心跳信息;該步驟由管理模塊20實(shí)現(xiàn)。
[0065]所述ICTMaster檢測(cè)到有所述節(jié)點(diǎn)的心跳信息超時(shí),則判斷所述節(jié)點(diǎn)宕機(jī),并廣播到當(dāng)前key為所述集群中的對(duì)應(yīng)的集群各個(gè)節(jié)點(diǎn)變化。
[0066]在該實(shí)施例中,根據(jù)系統(tǒng)具體需求設(shè)計(jì)Redis數(shù)據(jù)庫(kù)表項(xiàng),節(jié)點(diǎn)啟動(dòng)時(shí),向?qū)?yīng)的Redis表項(xiàng)中添加數(shù)據(jù)。狀態(tài)信息有更新時(shí),更新Redis表項(xiàng)數(shù)據(jù)。ICTMaster獲取表項(xiàng)變化并廣播給相關(guān)節(jié)點(diǎn)。解決現(xiàn)有技術(shù)中分布式集群狀態(tài)管理耦合度高、靈活度差,樹形結(jié)構(gòu)繁瑣、性能低下,watch機(jī)制僵化的問(wèn)題。其中,Redi s這個(gè)內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)是以Key來(lái)標(biāo)識(shí)的,Key可以理解成為一個(gè)類別,標(biāo)識(shí)某一類數(shù)據(jù)。這個(gè)數(shù)據(jù)庫(kù)可能有很多數(shù)據(jù),A集群的信息,B集群的信息,C集群的信息,1(^_4可以存儲(chǔ)A集群的信息,1(^_8可以存儲(chǔ)B類集群的信息,Key_C^以存儲(chǔ)C類集群的信息,Key可以理解成傳統(tǒng)數(shù)據(jù)庫(kù)的表名。此外,在本發(fā)明的一個(gè)實(shí)施方式中,Redi s內(nèi)存數(shù)據(jù)庫(kù)可以換成Memcached內(nèi)存數(shù)據(jù)庫(kù)。
[0067]參見(jiàn)圖5,在本發(fā)明的一個(gè)實(shí)施例中,以Redis為例來(lái)說(shuō)明:
[0068]當(dāng)分布式集群中的某個(gè)集群的某節(jié)點(diǎn)上線時(shí),向redis對(duì)應(yīng)的key里面添加自己的信息(例如Node A的SERVER3上線時(shí),向key:NodeA中插入自己的信息SERVER3)并訂閱當(dāng)前key。當(dāng)節(jié)點(diǎn)宕機(jī)時(shí),則從redis中刪除對(duì)應(yīng)的信息。集群管理者,只需要從redis的數(shù)據(jù)庫(kù)里面讀取對(duì)應(yīng)的key,就能得到當(dāng)前集群狀態(tài)信息,若集群有變動(dòng),管理者可以廣播對(duì)應(yīng)的變化信息。
[0069]采用本方法,圖1A的系統(tǒng)結(jié)構(gòu)變?yōu)槿鐖D6所示。在整個(gè)系統(tǒng)中,有三類集群,分別為NodeA集群,NodeB集群,NodeC集群。集群中的節(jié)點(diǎn)行為有三種種:上線,?;?正常狀態(tài))和宕機(jī)。
[0070]上線:
[0071]NodeA集群的節(jié)點(diǎn)上線時(shí),向Redis中Key為NodeA的表項(xiàng)里面添加自己的信息(這個(gè)信息可以是附帶有自己資源狀態(tài)的心跳信息)并訂閱N0deA(N0deB、N0deC集群同理)。
[0072]ICTMaster從Redis中的NodeA(NodeB,NodeC)中讀取并刪除節(jié)點(diǎn)信息(刪除表示已經(jīng)處理不再有效)并廣播給NodeA集群有新的節(jié)點(diǎn)上線。
[0073]?;?
[0074]節(jié)點(diǎn)上線之后定時(shí)向Redis中對(duì)應(yīng)的key中添加自己的心跳信息(類似于心跳,定時(shí)添加,表示節(jié)點(diǎn)還存活著)
[0075]ICTMaster讀取心跳,但由于集群節(jié)點(diǎn)狀態(tài)不變,不在廣播集群變化。
[0076]宕機(jī):
[0077]有節(jié)點(diǎn)宕機(jī)時(shí),節(jié)點(diǎn)不再向Redis中添加自己的心跳信息。
[0078]ICTMaster檢測(cè)到有節(jié)點(diǎn)的心跳信息超時(shí)(心跳信息的發(fā)送間隔),于是認(rèn)為該節(jié)點(diǎn)宕機(jī),廣播給當(dāng)前Key對(duì)應(yīng)的集群各個(gè)節(jié)點(diǎn)變化。這樣,就完成了分布式系統(tǒng)中各個(gè)集群的狀態(tài)管理。
[0079]綜上所述,本發(fā)明通過(guò)設(shè)置內(nèi)存式數(shù)據(jù)庫(kù)和所述分布式集群的管理者;并通過(guò)所述內(nèi)存式數(shù)據(jù)庫(kù)存儲(chǔ)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息,以及通過(guò)所述分布式集群的管理者維護(hù)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。由此,將集群管理系統(tǒng)中的兩部分解耦開,解決了Zookeeper耦合度高,靈活度低的問(wèn)題。此外,內(nèi)存式數(shù)據(jù)庫(kù)包括了Redis,所述分布式集群的管理者為ICTMaster,由于Redis等內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)非虛擬文件結(jié)構(gòu),非樹形結(jié)構(gòu),使得集群管理系統(tǒng)更為高效。對(duì)數(shù)據(jù)庫(kù)表項(xiàng)可以自主設(shè)計(jì),可以獲取變化內(nèi)容的最新版本,解決現(xiàn)有技術(shù)中Zookeeper watch機(jī)制的僵化問(wèn)題。
[0080]當(dāng)然,本發(fā)明還可有其它多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種分布式集群狀態(tài)管理的方法,其特征在于,所述方法包括如下步驟: A、設(shè)置內(nèi)存式數(shù)據(jù)庫(kù)和所述分布式集群的管理者; B、通過(guò)所述內(nèi)存式數(shù)據(jù)庫(kù)存儲(chǔ)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息,以及通過(guò)所述分布式集群的管理者維護(hù)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述內(nèi)存式數(shù)據(jù)庫(kù)包括Redis;所述分布式集群的管理者為ICTMaster。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟B包括: B1、至少一個(gè)所述集群的任一節(jié)點(diǎn)上線時(shí),向所述Redis中的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的信息,并訂閱所述集群的信息; B2、所述ICTMaster從所述Redi s中的所述集群中讀取并刪除所述節(jié)點(diǎn)的信息,并廣播到所述集群中有新的節(jié)點(diǎn)上線。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟B包括: B3、至少一個(gè)所述集群的任一節(jié)點(diǎn)上線之后,定時(shí)向所述Redi s中對(duì)應(yīng)的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的心跳信息; B4、所述ICTMaster讀取所述節(jié)點(diǎn)的心跳信息,但不廣播所述集群的變化。5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟B包括: B5、至少一個(gè)所述集群的任一節(jié)點(diǎn)宕機(jī)時(shí),不在所述Redis中添加所述節(jié)點(diǎn)的心跳信息; B6、所述ICTMaster檢測(cè)到所述節(jié)點(diǎn)的心跳信息超時(shí),則判斷所述節(jié)點(diǎn)宕機(jī),并廣播到當(dāng)前key為所述集群中各個(gè)節(jié)點(diǎn)變化。6.一種分布式集群狀態(tài)管理的系統(tǒng),其特征在于,所述系統(tǒng)包括: 設(shè)置模塊,用于設(shè)置內(nèi)存式數(shù)據(jù)庫(kù)和所述分布式集群的管理者; 管理模塊,用于通過(guò)所述內(nèi)存式數(shù)據(jù)庫(kù)存儲(chǔ)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息,以及通過(guò)所述分布式集群的管理者維護(hù)所述分布式集群中至少一個(gè)集群的各節(jié)點(diǎn)的信息。7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述內(nèi)存式數(shù)據(jù)庫(kù)包括Redis,所述分布式集群的管理者為ICTMaster。8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述管理模塊在至少一個(gè)所述集群的任一節(jié)點(diǎn)上線時(shí),向所述Redi s中的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的信息,并訂閱所述集群的信息; 所述ICTMaster從所述Redis中的所述集群中讀取并刪除所述節(jié)點(diǎn)的信息,并廣播到所述集群中有新的節(jié)點(diǎn)上線。9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述管理模塊在至少一個(gè)所述集群的任一節(jié)點(diǎn)上線之后,定時(shí)向所述Redis中對(duì)應(yīng)的key為所述集群的表項(xiàng)里添加所述節(jié)點(diǎn)的心跳信息; 所述ICTMaster讀取所述節(jié)點(diǎn)的心跳信息,但不廣播所述集群的變化。10.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,在至少一個(gè)所述集群的任一節(jié)點(diǎn)宕機(jī)時(shí),所述管理模塊不在所述Redis中添加所述節(jié)點(diǎn)的心跳信息; 所述ICTMaster檢測(cè)到有所述節(jié)點(diǎn)的心跳信息超時(shí),則判斷所述節(jié)點(diǎn)宕機(jī),并廣播到當(dāng)前key為所述集群中各個(gè)節(jié)點(diǎn)變化。
【文檔編號(hào)】H04L29/08GK106027623SQ201610311718
【公開日】2016年10月12日
【申請(qǐng)日】2016年5月11日
【發(fā)明人】成強(qiáng), 劉欣然, 姬曉光, 王勇, 張志斌, 郭三川, 張敬亮, 余智華, 程學(xué)旗
【申請(qǐng)人】中國(guó)科學(xué)院計(jì)算技術(shù)研究所, 國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心