兩節(jié)點系統(tǒng)分區(qū)的處理方法和節(jié)點的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分布式系統(tǒng)領(lǐng)域,并且更具體地,涉及兩節(jié)點系統(tǒng)分區(qū)的處理方法和節(jié)點。
【背景技術(shù)】
[0002]分布式系統(tǒng)是多個計算機通過通信線路互連而構(gòu)成的耦合系統(tǒng)。一個分布式系統(tǒng)是若干個獨立的計算機的集合,但是對該系統(tǒng)的用戶來說,整個系統(tǒng)就像一臺計算機一樣。在分布式系統(tǒng)的支持下,互連的計算機可以互相協(xié)調(diào)工作,共同完成一項任務(wù)。在多節(jié)點的高可用集群中,使用仲裁策略來決定集群的工作狀態(tài)。通常使用的仲裁策略是計算集群中活躍的節(jié)點個數(shù)是否超過整個集群節(jié)點總數(shù)的一半。節(jié)點之間可以通過心跳網(wǎng)絡(luò)連接來決定各節(jié)點是否活躍。
[0003]對于一個N節(jié)點的分布式系統(tǒng),系統(tǒng)的法定人數(shù)是N/2+1。一般地,分布式系統(tǒng)中節(jié)點數(shù)目為奇數(shù)。而且,分布式系統(tǒng)中節(jié)點數(shù)目超過法定人數(shù)時,整個系統(tǒng)可以正常工作。所以,基于法定人數(shù)的分布式系統(tǒng),通常需要配置至少三個節(jié)點,才能使得節(jié)點數(shù)目大于法定人數(shù)。這樣的分布式系統(tǒng)還可以容忍部分節(jié)點失效,使得有效的節(jié)點數(shù)目大于或等于法定人數(shù)。
[0004]基于法定人數(shù)的分布式系統(tǒng)一般不用于兩個節(jié)點的情況。而且,如果分布式系統(tǒng)中只有兩個節(jié)點,那么兩個節(jié)點中只要有一個節(jié)點失效,整個系統(tǒng)由于無法達(dá)到法定人數(shù)而無法正常工作,導(dǎo)致兩節(jié)點系統(tǒng)分區(qū)或腦裂。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供一種兩節(jié)點系統(tǒng)分區(qū)的處理方法和節(jié)點,能夠使得基于法定人數(shù)的分布式系統(tǒng)用于兩節(jié)點系統(tǒng)并正常工作。
[0006]第一方面,提供了一種兩節(jié)點系統(tǒng)分區(qū)的處理方法,所述方法用于基于法定人數(shù)的兩節(jié)點系統(tǒng),所述兩節(jié)點系統(tǒng)中的節(jié)點包括通訊代理和分布式應(yīng)用,其特征在于,所述方法包括:當(dāng)所述兩節(jié)點系統(tǒng)發(fā)生故障時,所述通訊代理確定所述通訊代理所在的節(jié)點是否有效;當(dāng)所述通訊代理所在的節(jié)點有效時,所述通訊代理向所述通訊代理所在的節(jié)點的分布式應(yīng)用發(fā)送指示所述分布式應(yīng)用達(dá)到法定人數(shù)的正確應(yīng)答消息。
[0007]結(jié)合第一方面,在第一方面的一種實現(xiàn)方式中,所述方法還包括:當(dāng)所述通訊代理所在的節(jié)點失效時,所述通訊代理向所述分布式應(yīng)用發(fā)送指示所述分布式應(yīng)用未達(dá)到法定人數(shù)的錯誤應(yīng)答消息,或者,不再向所述分布式應(yīng)用發(fā)送消息。
[0008]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述方法還包括:所述通訊代理向所述兩節(jié)點系統(tǒng)中的另一節(jié)點的通訊代理發(fā)送協(xié)調(diào)消息;所述通訊代理向所述另一節(jié)點的通訊代理發(fā)送協(xié)調(diào)消息的時刻起第一時長內(nèi)未收到所述另一節(jié)點的通訊代理針對所述協(xié)調(diào)消息發(fā)送的回復(fù)消息時,確定所述兩節(jié)點系統(tǒng)發(fā)生故障。
[0009]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述兩節(jié)點系統(tǒng)還包括網(wǎng)絡(luò)設(shè)備,所述通訊代理確定所述通訊代理所在的節(jié)點是否有效包括:所述通訊代理向所述網(wǎng)絡(luò)設(shè)備發(fā)送測試數(shù)據(jù)包;所述通訊代理從向所述網(wǎng)絡(luò)設(shè)備發(fā)送所述測試數(shù)據(jù)包的時刻起第二時長內(nèi)未收到所述網(wǎng)絡(luò)設(shè)備針對所述測試數(shù)據(jù)包發(fā)送的響應(yīng)消息時,確定所述節(jié)點失效;所述通訊代理從向所述網(wǎng)絡(luò)設(shè)備發(fā)送所述測試數(shù)據(jù)包的時刻起第二時長內(nèi)收到所述網(wǎng)絡(luò)設(shè)備針對所述測試數(shù)據(jù)包發(fā)送的響應(yīng)消息時,確定所述節(jié)點有效。
[0010]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述兩節(jié)點系統(tǒng)還包括連接所述節(jié)點與所述兩節(jié)點系統(tǒng)中的另一節(jié)點的串口,所述通訊代理確定所述通訊代理所在的節(jié)點是否有效包括:所述通訊代理通過所述串口向所述兩節(jié)點系統(tǒng)中的另一節(jié)點發(fā)送檢測消息;所述通訊代理從向所述另一節(jié)點發(fā)送所述檢測消息的時刻起第三時長內(nèi)未收到所述另一節(jié)點針對所述檢測消息發(fā)送的反饋消息時,確定所述節(jié)點有效;所述通訊代理從向所述另一節(jié)點發(fā)送所述檢測消息的時刻起第三時長內(nèi)收到所述另一節(jié)點針對所述檢測消息發(fā)送的反饋消息時,根據(jù)節(jié)點有效的優(yōu)先權(quán)信息,確定所述節(jié)點是否有效。
[0011]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述兩節(jié)點系統(tǒng)還包括共享磁盤,所述通訊代理確定所述通訊代理所在的節(jié)點是否有效包括:所述通訊代理向所述兩節(jié)點系統(tǒng)中的另一節(jié)點的通訊代理發(fā)送檢驗數(shù)據(jù)包;所述通訊代理從向所述另一節(jié)點的通訊代理發(fā)送所述檢驗數(shù)據(jù)包的時刻起第四時長內(nèi)未收到針對所述另一節(jié)點的通訊代理發(fā)送的回復(fù)數(shù)據(jù)包時時,確定所述節(jié)點有效;所述通訊代理從向所述另一節(jié)點的通訊代理發(fā)送所述檢驗數(shù)據(jù)包的時刻起第四時長內(nèi)收到針對所述另一節(jié)點的通訊代理發(fā)送的回復(fù)數(shù)據(jù)包時,根據(jù)節(jié)點有效的優(yōu)先權(quán)信息確定所述節(jié)點是否有效。
[0012]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述節(jié)點還包括所述兩節(jié)點系統(tǒng)中的另一節(jié)點的分布式應(yīng)用的影子進程,所述方法還包括:所述通訊代理在所述節(jié)點有效時,啟動所述另一節(jié)點的分布式應(yīng)用的影子進程;所述分布式應(yīng)用接收客戶端發(fā)送的用于請求對數(shù)據(jù)進行處理的請求消息,并通過所述通訊代理向所述另一節(jié)點的分布式應(yīng)用的影子進程發(fā)送所述請求消息;所述另一節(jié)點的分布式應(yīng)用的影子進程接收所述請求消息,并根據(jù)所述請求消息對所述數(shù)據(jù)進行處理。
[0013]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述方法還包括:當(dāng)所述兩節(jié)點系統(tǒng)未發(fā)生故障時,所述通訊代理接收所述分布式應(yīng)用發(fā)送的第一數(shù)據(jù)包,并向所述兩節(jié)點系統(tǒng)中另一節(jié)點的通訊代理轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包;或者,當(dāng)所述兩節(jié)點系統(tǒng)未發(fā)生故障時,所述通訊代理接收所述兩節(jié)點系統(tǒng)中另一節(jié)點的通訊代理發(fā)送的第二數(shù)據(jù)包,并向所述分布式應(yīng)用轉(zhuǎn)發(fā)所述第二數(shù)據(jù)包。
[0014]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述節(jié)點為物理服務(wù)器或虛擬服務(wù)器。
[0015]第二方面,提供了一種節(jié)點,所述節(jié)點屬于基于法定人數(shù)的兩節(jié)點系統(tǒng),其特征在于,所述節(jié)點包括分布式應(yīng)用和通訊代理;所述通訊代理,用于當(dāng)所述兩節(jié)點系統(tǒng)發(fā)生故障時確定所述節(jié)點是否有效;所述通訊代理,還用于當(dāng)所述節(jié)點有效時向所述分布式應(yīng)用發(fā)送指示所述分布式應(yīng)用達(dá)到法定人數(shù)的正確應(yīng)答消息。
[0016]結(jié)合第二方面,在第二方面的一種實現(xiàn)方式中,所述通訊代理,還用于當(dāng)所述通訊代理所在的節(jié)點失效時向所述分布式應(yīng)用發(fā)送指示所述分布式應(yīng)用未達(dá)到法定人數(shù)的錯誤應(yīng)答消息,或者,不再向所述分布式應(yīng)用發(fā)送消息。
[0017]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的另一種實現(xiàn)方式中,所述通訊代理,還用于從向所述兩節(jié)點系統(tǒng)中的另一節(jié)點的通訊代理發(fā)送協(xié)調(diào)消息的時刻起第一時長內(nèi)未收到所述另一節(jié)點的通訊代理針對所述協(xié)調(diào)消息發(fā)送的回復(fù)消息時,確定所述兩節(jié)點系統(tǒng)發(fā)生故障。
[0018]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的另一種實現(xiàn)方式中,所述兩節(jié)點系統(tǒng)還包括網(wǎng)絡(luò)設(shè)備;所述通訊代理,用于從向所述網(wǎng)絡(luò)設(shè)備發(fā)送測試數(shù)據(jù)包的時刻起第二時長內(nèi)未收到所述網(wǎng)絡(luò)設(shè)備針對所述測試數(shù)據(jù)包發(fā)送的響應(yīng)消息時,確定所述節(jié)點失效;所述通訊代理,用于從向所述網(wǎng)絡(luò)設(shè)備發(fā)送測試數(shù)據(jù)包的時刻起第二時長內(nèi)收到所述網(wǎng)絡(luò)設(shè)備針對所述測試數(shù)據(jù)包發(fā)送的響應(yīng)消息時,確定所述節(jié)點有效。
[0019]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的另一種實現(xiàn)方式中,所述兩節(jié)點系統(tǒng)還包括連接所述節(jié)點與所述兩節(jié)點系統(tǒng)中的另一節(jié)點的串口 ;所述通訊代理,用于通過所述串口向所述兩節(jié)點系統(tǒng)中的另一節(jié)點發(fā)送檢測消息;所述通訊代理,用于從向所述另一節(jié)點發(fā)送所述檢測消息的時刻起第三時長內(nèi)未收到所述另一節(jié)點針對所述檢測消息發(fā)送的反饋消息時,確定所述節(jié)點有效;所述通訊代理,用于從向所述另一節(jié)點發(fā)送所述檢測消息的時刻起第三時長內(nèi)收到所述另一節(jié)點針對所述檢測消息發(fā)送的反饋消息時,根據(jù)節(jié)點有效的優(yōu)先權(quán)信息,確定所述節(jié)點是否有效。
[0020]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的另一種實現(xiàn)方式中,所述兩節(jié)點系統(tǒng)還包括共享磁盤;所述通訊代理,用于向所述兩節(jié)點系統(tǒng)中的另一節(jié)點的通訊代理發(fā)送檢驗數(shù)據(jù)包;所述通訊代理,用于從向所述另一節(jié)點的通訊代理發(fā)送所述檢驗數(shù)據(jù)包的時刻起第四時長內(nèi)未收到針對所述另一節(jié)點的通訊代理發(fā)送的回復(fù)數(shù)據(jù)包時,確定所述節(jié)點有效;所述通訊代理,用于從向所述另一節(jié)點的通訊代理發(fā)送所述檢驗數(shù)據(jù)包的時刻起第四時長內(nèi)收到所述另一節(jié)點的通訊代理發(fā)送的回復(fù)數(shù)據(jù)包時,根據(jù)節(jié)點有效的優(yōu)先權(quán)信息確定所述節(jié)點是否有效。
[0021]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的另一種實現(xiàn)方式中,所述節(jié)點還包括所述兩節(jié)點系統(tǒng)中的另一節(jié)點的分布式應(yīng)用的影子進程;所述通訊代理,用于在所述節(jié)點有效時,啟動所述另一節(jié)點的分布式應(yīng)用的影子進程;所述分布式應(yīng)用,用于接收客戶端發(fā)送的用于請求對數(shù)據(jù)進行處理的請求消息,并通過所述通訊代理向所述另一節(jié)點的分布式應(yīng)用的影子進程發(fā)送所述請求消息;所述另一節(jié)點的分布式應(yīng)用的影子進程,用于接收所述請求消息,并根據(jù)所述請求消息對所述數(shù)據(jù)進行處理。
[0022]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的另一種實現(xiàn)方式中,所述通訊代理,用于當(dāng)所述兩節(jié)點系統(tǒng)未發(fā)生故障時,接收所述分布式應(yīng)用發(fā)送的第一數(shù)據(jù)包,并向所述兩節(jié)點系統(tǒng)中另一節(jié)點的通訊代理轉(zhuǎn)發(fā)所述第一數(shù)據(jù)包;或者,所述通訊代理,用于當(dāng)所述兩節(jié)點系統(tǒng)未發(fā)生故障時,接收所述兩節(jié)點系統(tǒng)中另一節(jié)點的通訊代理發(fā)送的第二數(shù)據(jù)包,并向所述分布式應(yīng)用轉(zhuǎn)發(fā)所述第二數(shù)據(jù)包。
[0023]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的另一種實現(xiàn)方式中,所述節(jié)點為物理服務(wù)器或虛擬服務(wù)器。
[0024]本發(fā)明實施例通過在兩節(jié)點系統(tǒng)中的節(jié)點上增加通訊代理,以在兩節(jié)點系統(tǒng)故障時通過通訊代理可以使得一個節(jié)點的分布式應(yīng)用達(dá)到法定人數(shù),從而使得基于法定人數(shù)的分布式系統(tǒng)能夠用于兩節(jié)點系統(tǒng),并且可以正常工作。
【附圖說明】
[0025]為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對本發(fā)明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0026]圖1是可應(yīng)用本發(fā)明實施例的通信系統(tǒng)場景的示意圖。
[0027]圖2是本發(fā)明一個實施例的兩節(jié)點系統(tǒng)分區(qū)的處理方法的示意性流程圖。
[0028]圖3是本發(fā)明一個實施例的兩節(jié)點系統(tǒng)分區(qū)的處理方法的示意圖。
[0029]圖4是本發(fā)明另一實施例的兩節(jié)點系統(tǒng)分區(qū)的處理方法的示意圖。
[0030]圖5是本發(fā)明一個實施例的節(jié)點的框圖。
[0031]圖6是本發(fā)明另一實施例的節(jié)點的框圖。
【具體實施方式】
[0032]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都應(yīng)屬于本發(fā)明保護的范圍。
[0033]圖1是可應(yīng)用本發(fā)明實施例的通信系統(tǒng)場景的示意圖。如圖1所示,本發(fā)明實施例的兩節(jié)點系統(tǒng)包括節(jié)點一 101、節(jié)點二 102和網(wǎng)絡(luò)設(shè)備103。
[0034]兩節(jié)點系統(tǒng)中包括兩個節(jié)點。節(jié)點為服務(wù)器時,服務(wù)器中可以運行操作系統(tǒng),例如,可以運行Windows、Iinux等操作系統(tǒng),并且服務(wù)器中包括網(wǎng)卡設(shè)備,能夠和其它服務(wù)器聯(lián)網(wǎng)。應(yīng)理解,本發(fā)明實施例