欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種分布式心跳檢測方法、裝置及系統(tǒng)的制作方法

文檔序號:7551719閱讀:200來源:國知局
專利名稱:一種分布式心跳檢測方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種分布式心跳檢測方法、裝置及系統(tǒng)。
背景技術(shù)
隨著信息的爆炸式增長,對存儲系統(tǒng)的容量和擴展性都提出了更高的要求,因此涌現(xiàn)出了云存儲、大數(shù)據(jù)等一批新興的概念和產(chǎn)品。云存儲系統(tǒng)通常有大量存儲節(jié)點組成,并且能夠進行大規(guī)模的擴展,存儲節(jié)點之間通過相互的數(shù)據(jù)復(fù)制備份來提高系統(tǒng)的可靠性和可用性,存儲節(jié)點在進行數(shù)據(jù)復(fù)制備份時,需要知道對應(yīng)的節(jié)點狀態(tài),因此,節(jié)點故障檢測技術(shù)就成為構(gòu)建大型存儲系統(tǒng)的一項重要技術(shù)。分布式技術(shù)是構(gòu)建規(guī)模云存儲系統(tǒng)的基礎(chǔ),目前分布式系統(tǒng)中的節(jié)點故障檢測主要是基于心跳消息的心跳檢測。現(xiàn)有技術(shù)中,分布式心跳檢測方法中節(jié)點系統(tǒng)結(jié)構(gòu)示意圖如圖1所示,沒有中心節(jié)點,各個數(shù)據(jù)節(jié)點的地位完全相同,它們通過Gossip協(xié)議維護節(jié)點系統(tǒng)的狀態(tài)。通過Gossip協(xié)議,每個數(shù)據(jù)節(jié)點都可知道節(jié)點系統(tǒng)中包含哪些數(shù)據(jù)節(jié)點,以及這些數(shù)據(jù)節(jié)點的狀態(tài)。各數(shù)據(jù)節(jié)點根據(jù)Gossip協(xié)議向節(jié)點系統(tǒng)內(nèi)其他數(shù)據(jù)節(jié)點發(fā)送心跳消息(心跳消息未在圖2中全部標(biāo)出),并接收處理來自其他數(shù)據(jù)節(jié)點的心跳消息。數(shù)據(jù)節(jié)點隨機選擇另一個數(shù)據(jù)節(jié)點作為接收節(jié)點發(fā)送心跳消息,在心跳消息中攜帶記錄的其他數(shù)據(jù)節(jié)點的心跳狀態(tài),該接收節(jié)點接收到心跳消息后,更新其記錄的其他節(jié)點的心跳狀態(tài),當(dāng)節(jié)點系統(tǒng)中一個數(shù)據(jù)節(jié)點記錄的其他數(shù)據(jù)節(jié)點的心跳狀態(tài)超過預(yù)置的時長而沒有進行更新時,則認(rèn)為心跳狀態(tài)超過預(yù)置的時長而沒有進行更新的數(shù)據(jù)節(jié)點發(fā)生了故障。但在上述現(xiàn)有技術(shù)中,數(shù)據(jù)節(jié)點隨機接收其他數(shù)據(jù)節(jié)點的心跳消息,再次接收來自同一個數(shù)據(jù)節(jié)點的心跳消息的時間都不確定,因此難以確定判斷其他數(shù)據(jù)節(jié)點是否發(fā)生故障的心跳檢測時長。如果數(shù)據(jù)節(jié)點再次接收來自同一個數(shù)據(jù)節(jié)點的心跳消息的時間比較長,那么若該心跳檢測時長設(shè)置得比較短,則容易造成故障的誤檢,但是若該心跳檢測時長設(shè)置得比較長,則檢測到故障的時間比較長,可能已不具備實效性,對業(yè)務(wù)的處理影響比較大。

發(fā)明內(nèi)容
本發(fā)明實施例提供了一種分布式心跳檢測方法、裝置及系統(tǒng),用以提高節(jié)點間檢測故障的效率。第一方面,本發(fā)明提供一種分布式心跳檢測方法,可包括:中心節(jié)點根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;將每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息。在第一方面的第一種可能的實現(xiàn)方式中,所述根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖包括:按照每個數(shù)據(jù)節(jié)點所處的機架及服務(wù)器的位置選取數(shù)據(jù)節(jié)點,所述心跳視圖中具有心跳檢測關(guān)系的不同數(shù)據(jù)節(jié)點分布在不同的服務(wù)器或機架中;根據(jù)所選取的數(shù)據(jù)節(jié)點的ID生成所述心跳視圖。結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述方法還包括:若在預(yù)先設(shè)置的心跳檢測時長內(nèi),沒有接收到所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中所指示的發(fā)送節(jié)點所發(fā)送的心跳消息,則判定所述發(fā)送節(jié)點故障,所述第一數(shù)據(jù)節(jié)點為所述節(jié)點系統(tǒng)中任意一個數(shù)據(jù)節(jié)點,所述發(fā)送節(jié)點為所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中標(biāo)識的向所述第一數(shù)據(jù)節(jié)點發(fā)送心跳消息的數(shù)據(jù)節(jié)點。結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述方法還包括:若接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的故障匯報信息,所述故障匯報信息中包含有上報的故障節(jié)點,則根據(jù)除去所述故障匯報信息中匯報的故障節(jié)點之外的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu),為所述節(jié)點系統(tǒng)中除故障節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視圖,將每個所述新的心跳視圖分別發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點;若接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的心跳視圖查詢信息,則查詢該數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖,并將所述最新的心跳視圖發(fā)送給該數(shù)據(jù)節(jié)點。結(jié)合第一方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述將每個所述新的心跳視圖分別發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點,包括:將每個新的心跳視圖與對應(yīng)數(shù)據(jù)節(jié)點最近一次的歷史心跳視圖進行比較獲得至少一個第一數(shù)據(jù)節(jié)點,所述第一數(shù)據(jù)節(jié)點為最近一次歷史心跳視圖和第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖不同的數(shù)據(jù)節(jié)點;將所述第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖發(fā)送給所述第一數(shù)據(jù)節(jié)點。第二方面,本發(fā)明提供一種分布式心跳檢測方法,可包括:第一數(shù)據(jù)節(jié)點接收第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的所述第二心跳視圖是否一致,其中,所述第一心跳視圖標(biāo)識有所述第一數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點組成的心跳檢測關(guān)系;若所述第一心跳視圖與所述第二心跳視圖一致,則根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障;若確定所述第二數(shù)據(jù)節(jié)點發(fā)生故障,則向中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點;若所述第一心跳視圖與所述第二心跳視圖不一致,則向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖。在第二方面的第一種可能的實現(xiàn)方式中,所述對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的所述第二心跳視圖是否一致包括:
對比所述第一心跳視圖與所述第二心跳視圖中包含的共同的數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系是否相同。結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述對比所述第一數(shù)據(jù)節(jié)點的心跳視圖與接收的所述第二心跳視圖是否一致之后還包括:向所述第二數(shù)據(jù)節(jié)點發(fā)送響應(yīng)信息,所述響應(yīng)信息用于通知所述第一數(shù)據(jù)節(jié)點所述第一心跳視圖與所述第二心跳視圖不一致。結(jié)合第二方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障包括:記錄所述第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息的時間;若記錄的所述心跳消息的時間在設(shè)置的心跳檢測時長內(nèi)未更新,則判斷所述第二數(shù)據(jù)節(jié)點發(fā)生故障。結(jié)合第二方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述方法包括:若接收到通知所述第一數(shù)據(jù)節(jié)點的心跳視圖與不同數(shù)據(jù)節(jié)點的心跳視圖不一致的響應(yīng)信息,則向所述中心節(jié)點發(fā)送所述心跳視圖查詢信息。第三方面,本發(fā)明提供一種節(jié)點,可包括:生成單元,用于根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;發(fā)送單元,用于將所述生成單元生成的每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息。在第三方面的第一種可能的實現(xiàn)方式中,所述節(jié)點還包括:選取單元,用于按照每個數(shù)據(jù)節(jié)點所處的機架及服務(wù)器的位置選取數(shù)據(jù)節(jié)點,所述心跳視圖中具有心跳檢測關(guān)系的不同數(shù)據(jù)節(jié)點分布在不同的服務(wù)器或機架中;所述生成單元,還用于根據(jù)所述選取單元所選取的數(shù)據(jù)節(jié)點的ID生成所述心跳視圖。結(jié)合第三方面或第三方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述節(jié)點還包括:判定單元,用于若第一數(shù)據(jù)節(jié)點在預(yù)先設(shè)置的心跳檢測時長內(nèi),沒有接收到所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中所指示的發(fā)送節(jié)點所發(fā)送的心跳消息,則判定所述發(fā)送節(jié)點故障,所述第一數(shù)據(jù)節(jié)點為所述節(jié)點系統(tǒng)中任意一個數(shù)據(jù)節(jié)點,所述發(fā)送節(jié)點為所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中標(biāo)識的向所述第一數(shù)據(jù)節(jié)點發(fā)送心跳消息的數(shù)據(jù)節(jié)點。結(jié)合第三方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述生成單元,還用于若接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的故障匯報信息,所述故障匯報信息中包含有上報的故障節(jié)點,則根據(jù)除去所述故障匯報信息中匯報的故障節(jié)點之外的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu),為所述節(jié)點系統(tǒng)中除故障節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視所述發(fā)送單元,還用于將所述生成單元生成的每個所述新的心跳視圖分別發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點。結(jié)合第三方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述節(jié)點還包括:查詢單元,用于若接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的心跳視圖查詢信息,則查詢該數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖;所述發(fā)送單元,還用于將所述最新的心跳視圖發(fā)送給該數(shù)據(jù)節(jié)點。結(jié)合第三方面的第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,所述節(jié)點還包括:比較單元,用于將每個新的心跳視圖與對應(yīng)數(shù)據(jù)節(jié)點最近一次的歷史心跳視圖進行比較獲得至少一個第一數(shù)據(jù)節(jié)點,所述第一數(shù)據(jù)節(jié)點為最近一次歷史心跳視圖和第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖不同的數(shù)據(jù)節(jié)點;所述發(fā)送單元,還用于將所述第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖發(fā)送給所述第一數(shù)據(jù)節(jié)點。第四方面,本發(fā)明提供一種節(jié)點,可包括:接收消息單元,用于第一數(shù)據(jù)節(jié)點接收第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;對比單元,用于對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與所述接收消息單元接收的所述第二心跳視圖是否一致,其中,所述第一心跳視圖標(biāo)識有所述第一數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點組成的心跳檢測關(guān)系;判斷單元,用于若所述對比單元對比所述第一心跳視圖與所述第二心跳視圖一致,則根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障;發(fā)送信息單元,用于若所述判斷單元確定所述第二數(shù)據(jù)節(jié)點發(fā)生故障,則向中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點;所述發(fā)送信息單元,還用于若所述對比單元對比所述第一心跳視圖與所述第二心跳視圖不一致,則向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖。在第四方面的第一種可能的實現(xiàn)方式中,所述對比單元,具體用于對比所述第一心跳視圖與所述第二心跳視圖中包含的共同的數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系是否相同。結(jié)合第四方面或第四方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述發(fā)送信息單元,還用于向所述第二數(shù)據(jù)節(jié)點發(fā)送響應(yīng)信息,所述響應(yīng)信息用于通知所述第一數(shù)據(jù)節(jié)點所述第一心跳視圖與所述第二心跳視圖不一致。結(jié)合第四方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述節(jié)點還包括:記錄單元,用于記錄所述第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息的時間;所述判斷單元,還用于若記錄的所述心跳消息的時間在設(shè)置的心跳檢測時長內(nèi)未更新,則判斷所述第二數(shù)據(jù)節(jié)點發(fā)生故障。結(jié)合第四方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述發(fā)送信息單元,還用于若接收到通知所述第一數(shù)據(jù)節(jié)點的心跳視圖與不同數(shù)據(jù)節(jié)點的心跳視圖不一致的響應(yīng)信息,則向所述中心節(jié)點發(fā)送所述心跳視圖查詢信息。第五方面,本發(fā)明提供一種分布式心跳檢測系統(tǒng),可包括:中心節(jié)點,數(shù)據(jù)節(jié)點;所述中心節(jié)點,用于根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,將每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息;所述數(shù)據(jù)節(jié)點包括第一數(shù)據(jù)節(jié)點和第二數(shù)據(jù)節(jié)點;其中,所述第一數(shù)據(jù)節(jié)點,用于接收第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的所述第二心跳視圖是否一致,其中,所述第一心跳視圖標(biāo)識有所述第一數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點組成的心跳檢測關(guān)系,若所述第一心跳視圖與所述第二心跳視圖一致,則根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障,若確定所述第二數(shù)據(jù)節(jié)點發(fā)生故障,則向中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點,若所述第一心跳視圖與所述第二心跳視圖不一致,則向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖;所述第二數(shù)據(jù)節(jié)點,用于向所述第一數(shù)據(jù)節(jié)點發(fā)送心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系。從以上技術(shù)方案可以看出,本發(fā)明實施例中,中心節(jié)點根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,中心節(jié)點將各心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得節(jié)點系統(tǒng)中的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系相對穩(wěn)定,每個數(shù)據(jù)節(jié)點能夠知道與自己有心跳檢測關(guān)系的其他數(shù)據(jù)節(jié)點,因此可以根據(jù)心跳檢測關(guān)系來更準(zhǔn)確地設(shè)置自己與其他數(shù)據(jù)節(jié)點之間的心跳檢測時長;與現(xiàn)有技術(shù)中因數(shù)據(jù)節(jié)點之間檢測關(guān)系不確定而使得設(shè)置的心跳檢測時長不準(zhǔn)確相比,本發(fā)明實施例通過心跳檢測來進行故障檢測的方法更準(zhǔn)確。


圖1為現(xiàn)有技術(shù)中分布式心跳檢測方法中節(jié)點系統(tǒng)結(jié)構(gòu)示意圖;圖2為本發(fā)明實施例中分布式心跳檢測方法中節(jié)點系統(tǒng)結(jié)構(gòu)示意圖;圖3為本發(fā)明實施例中分布式心跳檢測方法的中心節(jié)點系統(tǒng)的結(jié)構(gòu)示意圖;圖4為本發(fā)明實施例中分布式心跳檢測方法的一個實施例示意圖;圖5為本發(fā)明實施例中心跳視圖的結(jié)構(gòu)示意圖;圖6為本發(fā)明實施例中分布式心跳檢測方法的另一個實施例示意圖;圖7為本發(fā)明實施例中分布式心跳檢測方法的又一個實施例示意圖;圖8為本發(fā)明實施例中分布式心跳檢測方法的再一個實施例示意圖;圖9為本發(fā)明實施例中節(jié)點的一個實施例示意圖10為本發(fā)明實施例中節(jié)點的另一個實施例示意圖;圖11為本發(fā)明實施例中節(jié)點的又一個實施例示意圖;圖12為本發(fā)明實施例中節(jié)點的再一個實施例示意圖;圖13為本發(fā)明實施例中節(jié)點的硬件裝置實施例示意圖;圖14為本發(fā)明實施例中分布式心跳檢測系統(tǒng)的一個實施例示意圖。
具體實施例方式本發(fā)明實施例提供了一種分布式心跳檢測方法、裝置及系統(tǒng),用于提高檢測節(jié)點故障的效率。本發(fā)明實施例中,在分布式節(jié)點系統(tǒng)中添加一個中心節(jié)點,所述中心節(jié)點控制節(jié)點系統(tǒng)中數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系。本發(fā)明中的中心節(jié)點只處理與心跳視圖有關(guān)的事務(wù),不參與心跳消息的發(fā)送和處理,從而不會限制存儲系統(tǒng)中的數(shù)據(jù)節(jié)點擴展。除中心節(jié)點夕卜,在節(jié)點系統(tǒng)中呈分布式排列有各數(shù)據(jù)節(jié)點,各節(jié)點數(shù)據(jù)之間互相傳遞心跳消息,各數(shù)據(jù)節(jié)點根據(jù)所述心跳消息對其他數(shù)據(jù)節(jié)點進行節(jié)點狀態(tài)檢測。為便于理解,請參閱圖2,本發(fā)明實施例中,在分布式節(jié)點系統(tǒng)中添加一個中心節(jié)點,其余數(shù)據(jù)節(jié)點均可與中心節(jié)點進行數(shù)據(jù)交互。該中心節(jié)點用于處理節(jié)點系統(tǒng)中元數(shù)據(jù)的修改、將系統(tǒng)中產(chǎn)生的新的元數(shù)據(jù)更新到數(shù)據(jù)節(jié)點中以及提供元數(shù)據(jù)的查詢業(yè)務(wù)。元數(shù)據(jù)為數(shù)據(jù)庫中描述數(shù)據(jù)及其環(huán)境的數(shù)據(jù)。主要是描述數(shù)據(jù)屬性的信息,用來支持如指示存儲位置、歷史數(shù)據(jù)、資源查找、文件紀(jì)錄等功能,本實施例中,元數(shù)據(jù)可以為節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)數(shù)據(jù)。本實施例中的中心節(jié)點為元數(shù)據(jù)控制器(MDC, Meta Data Controller)。需要說明的是,中心節(jié)點可以與數(shù)據(jù)節(jié)點部署在同一臺服務(wù)器,也可以單獨部署在一臺服務(wù)器上。中心節(jié)點也可以由兩個或兩個以上的中心節(jié)點組成一個小規(guī)模的中心節(jié)點系統(tǒng),以提供元數(shù)據(jù)管理服務(wù),這樣,即使某個中心節(jié)點發(fā)生了故障,還有其他的中心節(jié)點能夠繼續(xù)提供服務(wù),提高了系統(tǒng)的可靠性和可用性,具體請參閱圖3,三個中心節(jié)點201組成中心節(jié)點系統(tǒng)202。本發(fā)明實施例中,在節(jié)點系統(tǒng)中只存在一個中心節(jié)點時,將該中心節(jié)點之外的節(jié)點統(tǒng)稱為數(shù)據(jù)節(jié)點,在節(jié)點系統(tǒng)中存在一個中心節(jié)集群時,將該中心節(jié)點系統(tǒng)之外的節(jié)點統(tǒng)稱為數(shù)據(jù)節(jié)點。請參閱圖4,本發(fā)明實施例中的分布式心跳檢測方法的一個實施例包括:301、中心節(jié)點根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識所述數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;中心節(jié)點根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,心跳視圖用于標(biāo)識所述數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,心跳檢測關(guān)系是指節(jié)點系統(tǒng)中某個數(shù)據(jù)節(jié)點與其他不同數(shù)據(jù)節(jié)點之間檢測對方是否發(fā)生故障的關(guān)系,即,某個數(shù)據(jù)節(jié)點檢測哪些其他不同數(shù)據(jù)節(jié)點是否發(fā)生故障,以及該某個數(shù)據(jù)節(jié)點被哪些其他不同數(shù)據(jù)節(jié)點檢測是否發(fā)生故障。心跳視圖具體為表示所述心跳檢測關(guān)系的數(shù)據(jù)節(jié)點身份標(biāo)識號碼(ID,IDentity)的序列,本實施例中,將接收中心節(jié)點發(fā)送的心跳視圖的數(shù)據(jù)節(jié)點稱為視圖節(jié)點,接收該視圖節(jié)點發(fā)送的心跳消息的數(shù)據(jù)節(jié)點稱為接收節(jié)點,向該視圖節(jié)點發(fā)送心跳消息的數(shù)據(jù)節(jié)點稱為發(fā)送節(jié)點,則心跳視圖為一個包含視圖節(jié)點ID、接收節(jié)點ID及發(fā)送節(jié)點ID的序列。心跳視圖是由η個數(shù)據(jù)節(jié)點ID組成的序列,η為奇數(shù),且η > 3,在所述數(shù)據(jù)節(jié)點ID組成序列中第(η+1)/2個數(shù)據(jù)節(jié)點ID表示視圖節(jié)點的ID,該視圖節(jié)點向接收節(jié)點發(fā)送心跳消息,該視圖節(jié)點接收來自發(fā)送節(jié)點的心跳消息。例如,以η=5為例,心跳視圖結(jié)構(gòu)示意圖請見圖5,心跳視圖中包含多個數(shù)據(jù)節(jié)點ID,第一接收節(jié)點ID、第二接收節(jié)點ID、視圖節(jié)點ID、第一發(fā)送節(jié)點ID和第二發(fā)送節(jié)點ID??梢岳斫獾模奶晥D中可攜帶更多數(shù)據(jù)節(jié)點ID,以使得所述數(shù)據(jù)節(jié)點根據(jù)該心跳視圖對其他數(shù)據(jù)節(jié)點進行心跳檢測。302、將所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息。數(shù)據(jù)節(jié)點上電后,向中心節(jié)點請求心跳視圖,中心節(jié)點可以根據(jù)數(shù)據(jù)節(jié)點的請求,將為該數(shù)據(jù)節(jié)點生成的對應(yīng)的心跳視圖發(fā)送給該數(shù)據(jù)節(jié)點,使得所述數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息。節(jié)點系統(tǒng)根據(jù)用戶預(yù)先設(shè)置的心跳檢測時長。所述心跳檢測時長,是指數(shù)據(jù)節(jié)點檢測其他不同數(shù)據(jù)節(jié)點是否發(fā)生故障的檢測時長,例如,用戶預(yù)先設(shè)置的心跳檢測時長為10秒,則表示數(shù)據(jù)節(jié)點接到其他不同數(shù)據(jù)節(jié)點發(fā)送心跳消息后,每隔10秒判斷一次該其他不同數(shù)據(jù)節(jié)點是否發(fā)生故障。本實施例中,數(shù)據(jù)節(jié)點根據(jù)接收的心跳視圖可獲知要檢測哪些其他數(shù)據(jù)節(jié)點是否發(fā)生故障,以及哪些其他數(shù)據(jù)節(jié)點可檢測該數(shù)據(jù)節(jié)點自身是否發(fā)生故障。具體地,以數(shù)據(jù)節(jié)點A為例,數(shù)據(jù)節(jié)點A向中心節(jié)點請求心跳視圖,該心跳視圖指示數(shù)據(jù)節(jié)點A向數(shù)據(jù)節(jié)點B發(fā)送心跳消息,數(shù)據(jù)節(jié)點在發(fā)送心跳消息時,心跳視圖隨著心跳消息一起發(fā)送。那么,數(shù)據(jù)節(jié)點A在接收到該心跳視圖后,便可根據(jù)該心跳視圖向數(shù)據(jù)節(jié)點B發(fā)送心跳消息。而數(shù)據(jù)節(jié)點B向中心節(jié)點請求的心跳視圖也會指示數(shù)據(jù)節(jié)點B接收數(shù)據(jù)節(jié)點A發(fā)送的心跳消息,這樣,從數(shù)據(jù)節(jié)點接收到中心節(jié)點發(fā)送的心跳視圖后,便開始計時,以判斷經(jīng)過設(shè)置的心跳檢測時長是否會接收到數(shù)據(jù)節(jié)點A發(fā)送的心跳消息,若經(jīng)過設(shè)置的心跳檢測時長后未收到數(shù)據(jù)節(jié)點A發(fā)送的心跳消息,則數(shù)據(jù)節(jié)點B判斷數(shù)據(jù)節(jié)點A已經(jīng)發(fā)生故障,若在預(yù)置的故障檢查時長內(nèi)收到數(shù)據(jù)節(jié)點A發(fā)送的心跳消息,則數(shù)據(jù)節(jié)點B判斷數(shù)據(jù)節(jié)點A未發(fā)生故障。本發(fā)明實施例中,中心節(jié)點根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,該心跳視圖用于標(biāo)識所述數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,中心節(jié)點將各心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得節(jié)點系統(tǒng)中的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系相對穩(wěn)定,每個數(shù)據(jù)節(jié)點能夠知道與自己有心跳檢測關(guān)系的其他數(shù)據(jù)節(jié)點,因此可以根據(jù)心跳檢測關(guān)系來更準(zhǔn)確地設(shè)置自己與其他數(shù)據(jù)節(jié)點之間的心跳檢測時長,與現(xiàn)有技術(shù)中因數(shù)據(jù)節(jié)點之間檢測關(guān)系不確定而使得設(shè)置的心跳檢測時長不準(zhǔn)確相比,本發(fā)明實施例通過心跳檢測來進行故障檢測的方法更準(zhǔn)確。并且,中心節(jié)點通過心跳視圖統(tǒng)一管理數(shù)據(jù)節(jié)點互相傳遞心跳消息,但不參與心跳消息的傳遞及心跳的檢測,那么,當(dāng)系統(tǒng)中有新的數(shù)據(jù)節(jié)點加入時,該新加入的數(shù)據(jù)節(jié)點通過與中心節(jié)點的交互能夠很快根據(jù)心跳視圖中接收節(jié)點及發(fā)送節(jié)點的ID,獲知與其他數(shù)據(jù)節(jié)點的收發(fā)心跳消息的關(guān)系并據(jù)此進行通信,使得系統(tǒng)具有很好的擴展性,同時,數(shù)據(jù)節(jié)點只需向心跳視圖關(guān)聯(lián)的節(jié)點發(fā)送心跳消息,減少通信消息的數(shù)量,可節(jié)約服務(wù)器能耗。
為便于理解,下面以另一實施例詳細說明本發(fā)明實施例中的分布式心跳檢測方法,請參閱圖6,本發(fā)明實施例中的分布式心跳檢測方法的另一個實施例包括:401、中心節(jié)點根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;中心節(jié)點根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,心跳視圖用于標(biāo)識所述數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,心跳檢測關(guān)系是指節(jié)點系統(tǒng)中某個數(shù)據(jù)節(jié)點與其他不同數(shù)據(jù)節(jié)點之間檢測對方是否發(fā)生故障的關(guān)系,即,某個數(shù)據(jù)節(jié)點檢測哪些其他不同數(shù)據(jù)節(jié)點是否發(fā)生故障,以及該某個數(shù)據(jù)節(jié)點被哪些其他不同數(shù)據(jù)節(jié)點檢測是否發(fā)生故障。心跳視圖具體為表示所述心跳檢測關(guān)系的數(shù)據(jù)節(jié)點ID的序列,心跳視圖的具體格式請參閱前述圖3所示實施例中步驟301的相關(guān)描述,此處不再贅述。本發(fā)明實施例中,按照每個數(shù)據(jù)節(jié)點所處的機架及服務(wù)器的位置選取數(shù)據(jù)節(jié)點,所述心跳視圖中具有心跳檢測關(guān)系的不同數(shù)據(jù)節(jié)點分布在不同的服務(wù)器或機架中,根據(jù)所選取的數(shù)據(jù)節(jié)點的ID生成所述心跳視圖。具體地,中心節(jié)點控制節(jié)點系統(tǒng)中數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系,該中心節(jié)點接收管理員下發(fā)的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)信息,該拓撲結(jié)構(gòu)信息中包含的該節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)標(biāo)識該節(jié)點系統(tǒng)中各節(jié)點的連接關(guān)系,包括各節(jié)點所在的節(jié)點的機架(英文:rack)信息和服務(wù)器(英文:server)信息。中心節(jié)點按照節(jié)點系統(tǒng)中各數(shù)據(jù)節(jié)點在所述節(jié)點系統(tǒng)中所處的機架及服務(wù)器的位置選取數(shù)據(jù)節(jié)點,根據(jù)所選取的數(shù)據(jù)節(jié)點的ID生成所述心跳視圖,優(yōu)選地,為了檢測到更多rack或server的數(shù)據(jù)節(jié)點是否發(fā)生故障,可以選取不同rack,不同server的數(shù)據(jù)節(jié)點生成所述節(jié)點系統(tǒng)中數(shù)據(jù)節(jié)點的心跳視圖,例如:在節(jié)點系統(tǒng)中有2個rack,每個rack中各有2個server,每個server中有10個數(shù)據(jù)節(jié)點,可選取每個rack中每個server中的I個數(shù)據(jù)節(jié)點的ID生成心跳視圖。拓撲結(jié)構(gòu)信息發(fā)生變化會導(dǎo)致各數(shù)據(jù)節(jié)點之間發(fā)送和接收信息的關(guān)系發(fā)生變化,進而導(dǎo)致心跳視圖中的數(shù)據(jù)節(jié)點ID的序列相應(yīng)發(fā)生變化,生成的心跳視圖標(biāo)識與包含的數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系。402、將所述心跳視圖發(fā)送給所述節(jié)點系統(tǒng)中的數(shù)據(jù)節(jié)點,使得所述數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息;中心節(jié)點可以根據(jù)數(shù)據(jù)節(jié)點的請求,將生成的所述心跳視圖發(fā)送給所述節(jié)點系統(tǒng)中的數(shù)據(jù)節(jié)點,使得所述數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息,并且在發(fā)送的心跳消息中攜帶所述心跳視圖。本步驟的具體內(nèi)容請參見圖4所示實施例中步驟302中的具體描述,此處不再贅述。403、若在預(yù)先設(shè)置的心跳檢測時長內(nèi),沒有接收到所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中所指示的發(fā)送節(jié)點所發(fā)送的心跳消息,則判定所述發(fā)送節(jié)點故障;若在預(yù)先設(shè)置的心跳檢測時長內(nèi),所述第一節(jié)點沒有接收到所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中所指示的發(fā)送節(jié)點所發(fā)送的心跳消息,則判定所述發(fā)送節(jié)點故障。其中,所述第一數(shù)據(jù)節(jié)點為所述節(jié)點系統(tǒng)中任意一個數(shù)據(jù)節(jié)點,所述發(fā)送節(jié)點為所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中標(biāo)識的向所述第一數(shù)據(jù)節(jié)點發(fā)送心跳消息的數(shù)據(jù)節(jié)點。404、若接收到任一數(shù)據(jù)節(jié)點發(fā)送的故障匯報信息,則為所述節(jié)點系統(tǒng)中除故障節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視圖并發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點,若接收到任一數(shù)據(jù)節(jié)點發(fā)送的心跳視圖查詢信息,則查詢該數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖,并將所述最新的心跳視圖發(fā)送給該數(shù)據(jù)節(jié)點。本實施例中,若中心節(jié)點接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的故障匯報信息,所述故障匯報信息用于匯報發(fā)生故障的數(shù)據(jù)節(jié)點的信息,所述故障匯報信息中包含有上報的故障節(jié)點,則根據(jù)除去所述故障匯報信息中匯報的故障節(jié)點之外的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu),為所述節(jié)點系統(tǒng)中除故障節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視圖,并將所述新的心跳視圖發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點。若中心節(jié)點接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點最新的心跳視圖,則查詢該數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖,所述最新的心跳視圖是指中心節(jié)點最近一次根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為該數(shù)據(jù)節(jié)點生成的對應(yīng)的心跳視圖,并將所述最新的心跳視圖發(fā)送給該數(shù)據(jù)節(jié)點。中心節(jié)點將所述新的心跳視圖發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點具體為,將每個新的心跳視圖與對應(yīng)數(shù)據(jù)節(jié)點最近一次的歷史心跳視圖進行比較獲得至少一個第一數(shù)據(jù)節(jié)點,所述第一數(shù)據(jù)節(jié)點為最近一次歷史心跳視圖和第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖不同的數(shù)據(jù)節(jié)點,將所述第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖發(fā)送給所述第一數(shù)據(jù)節(jié)點。需要說明的是,本發(fā)明實施例中的中心節(jié)點也可以是兩個或兩個以上的MDC節(jié)點組成的中心節(jié)點集群,若所述數(shù)據(jù)節(jié)點發(fā)生故障或所述節(jié)點系統(tǒng)的配置信息發(fā)生更改,則生成新的心跳視圖,并將所述生成的新的心跳視圖發(fā)送給及其他中心節(jié)點。具體地,在中心節(jié)點集群中通過選舉算法選舉一個MDC節(jié)點作為主MDC節(jié)點,其他的MDC節(jié)點為備MDC節(jié)點。該主MDC節(jié)點可以是通信質(zhì)量最好的一個MDC節(jié)點,該主MDC節(jié)點為集群中的數(shù)據(jù)節(jié)點提供元數(shù)據(jù)的管理和查詢服務(wù)。當(dāng)節(jié)點系統(tǒng)中有數(shù)據(jù)節(jié)點發(fā)生故障時,主MDC節(jié)點負責(zé)處理節(jié)點系統(tǒng)中的交互數(shù)據(jù),根據(jù)發(fā)生故障的節(jié)點ID更新心跳視圖,將新的心跳視圖同步到備MDC節(jié)點,并提供心跳視圖的查詢服務(wù)。若主MDC節(jié)點發(fā)生故障或者由于故障被隔離后,中心節(jié)點集群中的多個備MDC節(jié)點則再次選舉產(chǎn)生一個新的主MDC節(jié)點繼續(xù)為數(shù)據(jù)節(jié)點提供服務(wù)。本發(fā)明實施例中,中心節(jié)點接收到數(shù)據(jù)節(jié)點發(fā)送的故障匯報信息后,根據(jù)除去所述故障匯報信息中匯報的故障節(jié)點之外的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu),為所述節(jié)點系統(tǒng)中除故障節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視圖,并將所述新的心跳視圖發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點,而不需要向其他與該新的心跳視圖不相關(guān)的數(shù)據(jù)節(jié)點發(fā)送該心跳視圖,所以可減少通信消息數(shù)量,節(jié)約帶寬,由于其他中心節(jié)點及時進行心跳視圖的更新,可防止由于中心節(jié)點發(fā)生故障而造成系統(tǒng)無法正常處理數(shù)據(jù),提高系統(tǒng)的可用性和可靠性。以上是從中心節(jié)點側(cè)描述了本發(fā)明實施例中的分布式心跳檢測方法,下面從數(shù)據(jù)節(jié)點側(cè)描述本發(fā)明實施例中的分布式心跳檢測方法,請參閱圖7,本發(fā)明實施例中的分布式心跳檢測方法的又一個實施例包括:501、第一數(shù)據(jù)節(jié)點接收第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;本實施例中,該第一數(shù)據(jù)節(jié)點與該第二數(shù)據(jù)節(jié)點,均為節(jié)點系統(tǒng)中的數(shù)據(jù)節(jié)點,二者處理數(shù)據(jù)的功能相同。第一數(shù)據(jù)節(jié)點接收所述第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖。該第一心跳視圖和該第二心跳視圖均由中心節(jié)點生成,每個數(shù)據(jù)節(jié)點上電啟動后,向中心節(jié)點發(fā)送獲取心跳視圖的請求。所述心跳視圖標(biāo)識與所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,心跳檢測關(guān)系是指節(jié)點系統(tǒng)中第二數(shù)據(jù)節(jié)點與其他不同數(shù)據(jù)節(jié)點之間檢測對方是否發(fā)生故障的關(guān)系,即,第二數(shù)據(jù)節(jié)點檢測哪些其他不同數(shù)據(jù)節(jié)點是否發(fā)生故障,以及該某個數(shù)據(jù)節(jié)點被哪些其他不同數(shù)據(jù)節(jié)點檢測是否發(fā)生故障。所述心跳視圖為與所述心跳消息關(guān)聯(lián)的數(shù)據(jù)節(jié)點ID的序列,將接收中心節(jié)點發(fā)送的心跳視圖的數(shù)據(jù)節(jié)點稱為視圖節(jié)點,接收該視圖節(jié)點發(fā)送的心跳消息的數(shù)據(jù)節(jié)點稱為接收節(jié)點,向該視圖節(jié)點發(fā)送心跳消息的數(shù)據(jù)節(jié)點稱為發(fā)送節(jié)點,則心跳視圖為一個包含視圖節(jié)點ID、接收節(jié)點ID及發(fā)送節(jié)點ID的序列。心跳視圖是由η個數(shù)據(jù)節(jié)點ID組成的序列,η為奇數(shù),且η > 3,在所述數(shù)據(jù)節(jié)點ID組成序列中第(η+1)/2個數(shù)據(jù)節(jié)點ID表示視圖節(jié)點的ID,該視圖節(jié)點向接收節(jié)點發(fā)送心跳消息,該視圖節(jié)點接收來自發(fā)送節(jié)點的心跳消息。例如,以η=5為例,心跳視圖結(jié)構(gòu)示意圖請見圖5,心跳視圖中包含多個數(shù)據(jù)節(jié)點ID,第一接收節(jié)點ID、第二接收節(jié)點ID、視圖節(jié)點ID、第一發(fā)送節(jié)點ID和第二發(fā)送節(jié)點ID??梢岳斫獾?,心跳視圖中可攜帶更多數(shù)據(jù)節(jié)點ID,以使得所述數(shù)據(jù)節(jié)點根據(jù)該心跳視圖對其他數(shù)據(jù)節(jié)點進行心跳檢測。502、對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的該第二數(shù)據(jù)節(jié)點的第二心跳視圖是否一致;其中,所述第一心跳視圖標(biāo)識有所述第一數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點組成的心跳檢測關(guān)系。本實施例中,心跳檢測關(guān)系是指節(jié)點系統(tǒng)中第一數(shù)據(jù)節(jié)點與其他不同數(shù)據(jù)節(jié)點之間檢測對方是否發(fā)生故障的關(guān)系,即,第一數(shù)據(jù)節(jié)點檢測哪些其他不同數(shù)據(jù)節(jié)點是否發(fā)生故障,以及該某個數(shù)據(jù)節(jié)點被哪些其他不同數(shù)據(jù)節(jié)點檢測是否發(fā)生故障。中心節(jié)點對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的該第二數(shù)據(jù)節(jié)點的第二心跳視圖是否一致,是指中心節(jié)點對比所述第一心跳視圖與所述第二心跳視圖中包含的共同的數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系是否相同。例如,第一心跳視圖中各數(shù)據(jù)節(jié)點ID的序列為{4,5,0,1,2},第二心跳視圖中各數(shù)據(jù)節(jié)點ID的序列為{5,0,1,2,3},二者包含的共同的數(shù)據(jù)節(jié)點ID為4個,即5,0,1,2,那么,只要對比出在第一心跳視圖中這4個數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系,與第二心跳視圖中這4個數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系相同,即可確定第一心跳視圖與第二心跳視圖一致。若是,則執(zhí)行步驟503,若否,則執(zhí)行步驟504。503、根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障;第一數(shù)據(jù)節(jié)點接收第二數(shù)據(jù)節(jié)點的心跳消息的時間,即是第一數(shù)據(jù)節(jié)點接收到該心跳消息時的時間。心跳間隔表示該第二數(shù)據(jù)節(jié)點每發(fā)送兩次心跳消息的時間間隔,第一數(shù)據(jù)節(jié)點根據(jù)該心跳消息的時間和心跳間隔,可判斷所述第二數(shù)據(jù)節(jié)點是否按設(shè)置的心跳間隔發(fā)送下一次心跳消息,以此判斷該第二數(shù)據(jù)節(jié)點是否發(fā)生故障。若確定所述第二數(shù)據(jù)節(jié)點發(fā)生故障,則執(zhí)行步驟505。504、向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖;如果所述第一數(shù)據(jù)節(jié)點判斷第一心跳視圖與接收的該第二心跳視圖不一致,表明兩個數(shù)據(jù)節(jié)點中的某一個數(shù)據(jù)節(jié)點保存的是歷史心跳視圖,而不是最新的心跳視圖,所述最新的心跳視圖是指中心節(jié)點最近一次根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為該數(shù)據(jù)節(jié)點生成的對應(yīng)的心跳視圖,根據(jù)歷史心跳視圖進行心跳檢測,不能有效、及時、正確檢測到節(jié)點系統(tǒng)中的數(shù)據(jù)節(jié)點的狀態(tài),進而影響系統(tǒng)內(nèi)數(shù)據(jù)的正常處理。則第一數(shù)據(jù)節(jié)點向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖,第一數(shù)據(jù)節(jié)點進一步根據(jù)查詢到的最新的心跳視圖標(biāo)識的該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,檢測不同數(shù)據(jù)節(jié)點的心跳狀態(tài)。505、若確定所述第二數(shù)據(jù)節(jié)點發(fā)生故障,則向中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點。第一數(shù)據(jù)節(jié)點確定第二數(shù)據(jù)節(jié)點發(fā)生故障后,向所述中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息用于向所述中心節(jié)點匯報發(fā)生故障的所述第二數(shù)據(jù)節(jié)點的信息,所述故障匯報信息中包含有故障節(jié)點,即第二數(shù)據(jù)節(jié)點。根據(jù)除去所述故障匯報信息中匯報的第二數(shù)據(jù)節(jié)點之外的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu),為所述節(jié)點系統(tǒng)中除該第二數(shù)據(jù)節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視圖,并將所述新的心跳視圖發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點。本發(fā)明實施例中,第一數(shù)據(jù)節(jié)點對比第一數(shù)據(jù)節(jié)點的第一心跳視圖和第二數(shù)據(jù)節(jié)點的第二心跳視圖是否一致,若一致,則根據(jù)接收的第二數(shù)據(jù)節(jié)點心跳消息中的時間和心跳間隔判斷第二數(shù)據(jù)節(jié)點是否發(fā)生故障,若不一致,向所述中心節(jié)點查詢中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖。若判斷出第二數(shù)據(jù)節(jié)點發(fā)生了故障,則向中心節(jié)點發(fā)送故障匯報信息,通知該中心節(jié)點所述第二數(shù)據(jù)節(jié)點發(fā)生故障,使得所述中心節(jié)點根據(jù)除去第二數(shù)據(jù)節(jié)點之外的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu),為所述節(jié)點系統(tǒng)中除該第二數(shù)據(jù)節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視圖,因此,節(jié)點系統(tǒng)中的數(shù)據(jù)節(jié)點由中心節(jié)點通過心跳視圖統(tǒng)一管理,數(shù)據(jù)節(jié)點根據(jù)該心跳視圖互相傳遞心跳消息及互相進行心跳狀態(tài)的檢測,提高數(shù)據(jù)節(jié)點檢測其他數(shù)據(jù)節(jié)點故障的效率。而中心節(jié)點并不參與心跳消息的傳遞及心跳的檢測,那么,當(dāng)系統(tǒng)中有新的數(shù)據(jù)節(jié)點加入時,該新加入的數(shù)據(jù)節(jié)點通過與中心節(jié)點的交互能夠很快根據(jù)心跳視圖中接收節(jié)點及發(fā)送節(jié)點的ID,獲知與其他數(shù)據(jù)節(jié)點的收發(fā)心跳消息的關(guān)系并據(jù)此進行通信,使得系統(tǒng)具有很好的擴展性。下面以另一實施例詳細描述本發(fā)明實施例中的分布式心跳檢測方法,請參閱圖8,本發(fā)明實施例中的分布式心跳檢測方法的再一個實施例包括:601、第一數(shù)據(jù)節(jié)點接收所述第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;第一數(shù)據(jù)節(jié)點接收所述第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖。該第一心跳視圖和該第二心跳視圖是向中心節(jié)點獲取的。心跳視圖由中心節(jié)點生成,心跳視圖的具體格式請見前述圖7所示實施例中的相關(guān)描述內(nèi)容,此處不再贅述。所述心跳視圖標(biāo)識與所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,心跳檢測關(guān)系是指節(jié)點系統(tǒng)中第二數(shù)據(jù)節(jié)點與其他不同數(shù)據(jù)節(jié)點之間檢測對方是否發(fā)生故障的關(guān)系,即,第二數(shù)據(jù)節(jié)點檢測哪些其他不同數(shù)據(jù)節(jié)點是否發(fā)生故障,以及該某個數(shù)據(jù)節(jié)點被哪些其他不同數(shù)據(jù)節(jié)點檢測是否發(fā)生故障。602、對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的該第二數(shù)據(jù)節(jié)點的第二心跳視圖是否一致;其中,所述第一心跳視圖標(biāo)識有所述第一數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點組成的心跳檢測關(guān)系。心跳檢測關(guān)系是指節(jié)點系統(tǒng)中第一數(shù)據(jù)節(jié)點與其他不同數(shù)據(jù)節(jié)點之間檢測對方是否發(fā)生故障的關(guān)系,即,第一數(shù)據(jù)節(jié)點檢測哪些其他不同數(shù)據(jù)節(jié)點是否發(fā)生故障,以及該某個數(shù)據(jù)節(jié)點被哪些其他不同數(shù)據(jù)節(jié)點檢測是否發(fā)生故障。中心節(jié)點對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的該第二數(shù)據(jù)節(jié)點的第二心跳視圖是否一致,是指中心節(jié)點對比所述第一心跳視圖與所述第二心跳視圖中包含的共同的數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系是否相同。例如,第一心跳視圖中各數(shù)據(jù)節(jié)點ID的序列為{4,5,0,1,2},第二心跳視圖中各數(shù)據(jù)節(jié)點ID的序列為{5,0,1,2,3},二者包含的共同的數(shù)據(jù)節(jié)點ID為4個,即5,0,1,2,那么,只要對比出在第一心跳視圖中這4個數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系,與第二心跳視圖中這4個數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系相同,即可確定第一心跳視圖與第二心跳視圖一致。具體對比第一心跳視圖與第二心跳視圖是否一致的方式,可以是當(dāng)?shù)诙?shù)據(jù)節(jié)點向第一數(shù)據(jù)節(jié)點發(fā)送心跳消息時,在心跳消息中攜帶第二數(shù)據(jù)節(jié)點的第二心跳視圖,第一數(shù)據(jù)節(jié)點根據(jù)接收到的所述第二心跳視圖,以及第一數(shù)據(jù)節(jié)點的ID和第二數(shù)據(jù)節(jié)點的ID分別在第二心跳視圖中的位置,生成第一對比序列,所述第一對比序列由數(shù)據(jù)節(jié)點ID組成,所述第一對比序列的數(shù)據(jù)節(jié)點ID范圍為[hbviewl [b- (n_l)/2],hbviewl [a+(n-1/2)]],第一數(shù)據(jù)節(jié)點根據(jù)第一數(shù)據(jù)節(jié)點的心跳視圖,以及第一數(shù)據(jù)節(jié)點的ID和第二數(shù)據(jù)節(jié)點的ID分別在第一數(shù)據(jù)節(jié)點的心跳視圖中的位置,生成第二對比序列,所述第二比序列的數(shù)據(jù)節(jié)點 ID 范圍為[hbview2[b- (n-1) /2], hbview2[a+ (n_l)/2]],其中 a、b 分別是第一數(shù)據(jù)節(jié)點的ID和第二數(shù)據(jù)節(jié)點的ID在心跳視圖中的位置,η為心跳視圖中數(shù)據(jù)節(jié)點的個數(shù),η為奇數(shù),且η > 3如果第一對比序列和第二對比序列一致,則第一數(shù)據(jù)節(jié)點及第二數(shù)據(jù)節(jié)點的心跳視圖是一致的。例如,數(shù)據(jù)節(jié)點A的ID為0,數(shù)據(jù)節(jié)點B的ID為1,數(shù)據(jù)節(jié)點A的心跳視圖中各數(shù)據(jù)節(jié)點ID的序列為{4,5,0,1,2},數(shù)據(jù)節(jié)點B的心跳視圖中各數(shù)據(jù)節(jié)點ID的序列為{5,0,1,2,3}。那么,根據(jù)數(shù)據(jù)節(jié)點A的心跳視圖可知,數(shù)據(jù)節(jié)點B要向數(shù)據(jù)節(jié)點A發(fā)送心跳消息,在心跳消息中攜帶節(jié)點B的心跳視圖,當(dāng)節(jié)點A接收到節(jié)點B的心跳消息時,根據(jù)節(jié)點B的心跳視圖生成第一對比序列。具體地,在節(jié)點B的心跳視圖中,以O(shè)作為起始位置,則數(shù)據(jù)節(jié)點A的位置為1,數(shù)據(jù)節(jié)點B的位置為2,那么第一對比序列中數(shù)據(jù)節(jié)點ID的位置范圍是(2-2) (1+2),即O 3,則數(shù)據(jù)節(jié)點B的對比序列為數(shù)據(jù)節(jié)點B的心跳視圖中包括前4個數(shù)據(jù)節(jié)點ID的序列,即數(shù)據(jù)節(jié)點B的對比序列為{5,0,1,2}。同理,數(shù)據(jù)節(jié)點A根據(jù)數(shù)據(jù)節(jié)點A的心跳視圖生成第二對比序列,所述第二對比序列中數(shù)據(jù)節(jié)點ID的位置范圍為(3-2) (2+2),即I 4,則第二對比序列為數(shù)據(jù)節(jié)點A的心跳視圖中包括后4個數(shù)據(jù)節(jié)點ID的序列,即第二對比序列為{5,0,1,2}。節(jié)點A對比生成的兩個對比序列是一致的,則確定數(shù)據(jù)節(jié)點A接收的數(shù)據(jù)節(jié)點B的心跳視圖與數(shù)據(jù)節(jié)點A的心跳視圖是一致的。若是,則執(zhí)行步驟603,若否,則執(zhí)行步驟604。603、記錄所述第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息的時間,若記錄的所述心跳消息的時間在設(shè)置的心跳檢測時長內(nèi)未更新,則判斷所述第二數(shù)據(jù)節(jié)點發(fā)生故障,并向所述中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點;本實施例中設(shè)置的心跳檢測時長可包括至少一個心跳間隔,該心跳檢測時長可根據(jù)系統(tǒng)應(yīng)用情況自定義設(shè)置,如果對檢測數(shù)據(jù)節(jié)點是否發(fā)生故障要求越高,則將該心跳檢測時長設(shè)置越小,包括的心跳間隔越少。第一數(shù)據(jù)節(jié)點記錄所述第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息的時間,當(dāng)檢測到記錄的所述心跳時間的信息在設(shè)置的心跳檢測時長內(nèi)未更新,在該心跳檢測時長內(nèi)未接收到新的心跳時間信息,則判斷所述第二數(shù)據(jù)節(jié)點發(fā)生故障,向所述中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點。例如,該第二節(jié)點的心跳間隔為5秒,設(shè)置的心跳檢測時長為20秒,即包括4個心跳間隔。該第一節(jié)點記錄的該第二節(jié)點的最新心跳時間的信息為14點00分05秒,那么經(jīng)過20秒后,檢測當(dāng)前記錄的最新心跳時間的信息仍為14點00分05秒,則表示在經(jīng)過設(shè)置的心跳檢測時長后,第一節(jié)點未更新心跳時間的信息,未接到來自第二節(jié)點的更新的心跳
消息,可確定該第二節(jié)點已發(fā)生故障。604、向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖,并向所述第二數(shù)據(jù)節(jié)點發(fā)送響應(yīng)信息,所述響應(yīng)信息用于通知所述第一數(shù)據(jù)節(jié)點該第一心跳視圖與該第二心跳視圖
不一致。該第一數(shù)據(jù)節(jié)點發(fā)現(xiàn)所述第一數(shù)據(jù)節(jié)點自身的第一心跳視圖與接收的第二數(shù)據(jù)節(jié)點的第二心跳視圖不一致,若繼續(xù)按照各自的心跳視圖執(zhí)行數(shù)據(jù)節(jié)點故障的檢測和進行各自心跳視圖的轉(zhuǎn)發(fā),將造成系統(tǒng)內(nèi)在處理數(shù)據(jù)時產(chǎn)生錯誤。進一步地,該第一數(shù)據(jù)節(jié)點向所述中心節(jié)點發(fā)送心跳視圖查詢信息,用以查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖,并向所述第二數(shù)據(jù)節(jié)點發(fā)送響應(yīng)信息,用以通知所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的所述第二數(shù)據(jù)節(jié)點的第二心跳視圖不一致,使得第二數(shù)據(jù)節(jié)點獲知該第二數(shù)據(jù)節(jié)點自身保存的心跳視圖可能未及時更新,與該中心節(jié)點所述中心節(jié)點生成的所述第二數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖不一致。在節(jié)點系統(tǒng)中,數(shù)據(jù)節(jié)點之間根據(jù)心跳視圖檢測其他不同數(shù)據(jù)節(jié)點的故障及轉(zhuǎn)發(fā)心跳消息,每個數(shù)據(jù)節(jié)點都可能接到來自其他數(shù)據(jù)節(jié)點的該響應(yīng)信息。該第一數(shù)據(jù)節(jié)點若接收到通知所述第一數(shù)據(jù)節(jié)點的心跳視圖與不同數(shù)據(jù)節(jié)點的心跳視圖不一致的響應(yīng)信息,則該第一數(shù)據(jù)節(jié)點向所述中心節(jié)點發(fā)送所述心跳視圖查詢信息,查詢所述中心節(jié)點最新的心跳視圖,避免因該第一數(shù)據(jù)節(jié)點自身保存的心跳視圖不是最新的心跳視圖,在與節(jié)點系統(tǒng)中不同數(shù)據(jù)節(jié)點數(shù)據(jù)交互時發(fā)生錯誤。本發(fā)明實施例中,第一數(shù)據(jù)節(jié)點對比第一心跳視圖與第二心跳視圖是否一致,若一致,記錄所述第二數(shù)據(jù)節(jié)點的心跳消息中的時間,當(dāng)記錄的所述心跳消息的時間在預(yù)置的心跳檢測時長內(nèi)未更新,則判斷所述第二數(shù)據(jù)節(jié)點發(fā)生故障,并向所述中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點,若不一致,向所述中心節(jié)點查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖,并向所述第二數(shù)據(jù)節(jié)點發(fā)送響應(yīng)信息,通知其所述第一心跳視圖與所述第二心跳視圖不一致,從而在中心節(jié)點的統(tǒng)一管理下,避免在系統(tǒng)中按照各自的心跳視圖執(zhí)行數(shù)據(jù)節(jié)點故障的檢測和進行各自心跳視圖的轉(zhuǎn)發(fā),而造成處理數(shù)據(jù)時產(chǎn)生錯誤。在以上實施例中,第一數(shù)據(jù)節(jié)點和第二數(shù)據(jù)節(jié)點只是表示節(jié)點系統(tǒng)中的任意兩個數(shù)據(jù)節(jié)點之間的交互方式,以及該兩個數(shù)據(jù)節(jié)點與所述中心節(jié)點之間的交互方式,在節(jié)點系統(tǒng)實際應(yīng)用過程中,所有的數(shù)據(jù)節(jié)點均可通過上述方式實現(xiàn)數(shù)據(jù)的互相交互,以及與中心節(jié)點的交互。下面詳細說明本發(fā)明中的節(jié)點,請參閱圖9,本發(fā)明實施例中的節(jié)點包括:生成單元701,用于根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;發(fā)送單元702,用于將所述生成單元生成的每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息。本發(fā)明實施例中的節(jié)點的各單元實現(xiàn)各自功能的具體過程,請參見前述圖4所示實施例中的具體描述,此處不再贅述。本發(fā)明實施例中,生成單元701根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,發(fā)送單元702將所述生成單元701生成的每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息,使得節(jié)點系統(tǒng)中的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系相對穩(wěn)定,每個數(shù)據(jù)節(jié)點能夠知道與自己有心跳檢測關(guān)系的其他數(shù)據(jù)節(jié)點,因此可以根據(jù)心跳檢測關(guān)系來更準(zhǔn)確地設(shè)置自己與其他數(shù)據(jù)節(jié)點之間的心跳檢測時長,與現(xiàn)有技術(shù)中因數(shù)據(jù)節(jié)點之間檢測關(guān)系不確定而使得設(shè)置的心跳檢測時長不準(zhǔn)確相比,本發(fā)明實施例通過心跳檢測來進行故障檢測的方法更準(zhǔn)確。并且通過心跳視圖統(tǒng)一管理數(shù)據(jù)節(jié)點互相傳遞心跳消息,但不參與心跳消息的傳遞及心跳的檢測,從而提高數(shù)據(jù)節(jié)點間檢測故障的速度和時效性,當(dāng)系統(tǒng)中有新的數(shù)據(jù)節(jié)點加入時,能夠很快通過心跳視圖控制該新加入的數(shù)據(jù)節(jié)點與節(jié)點系統(tǒng)中其他的數(shù)據(jù)節(jié)點進行通信,從而系統(tǒng)具有很好的擴展性,同時,數(shù)據(jù)節(jié)點只需向心跳視圖關(guān)聯(lián)的節(jié)點發(fā)送心跳消息,減少通信消息的數(shù)量,可節(jié)約服務(wù)器能耗。下面以另一實施例詳細描述本發(fā)明實施例中的中心節(jié)點,請參閱圖10,本發(fā)明實施例中的中心節(jié)點的另一個實施例包括:生成單元801,用于根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;發(fā)送單元802,用于將所述生成單元801生成的每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息。進一步地,本發(fā)明實施例中的節(jié)點還包括:選取單元803,用于按照每個數(shù)據(jù)節(jié)點所處的機架及服務(wù)器的位置選取數(shù)據(jù)節(jié)點,所述心跳視圖中具有心跳檢測關(guān)系的不同數(shù)據(jù)節(jié)點分布在不同的服務(wù)器或機架中;所述生成單元801,還用于根據(jù)所述選取單元803所選取的數(shù)據(jù)節(jié)點的ID生成所述心跳視圖。本發(fā)明實施例中的節(jié)點還可以進一步包括:判定單元804,用于若第一數(shù)據(jù)節(jié)點在預(yù)先設(shè)置的心跳檢測時長內(nèi),沒有接收到所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中所指示的發(fā)送節(jié)點所發(fā)送的心跳消息,則判定所述發(fā)送節(jié)點故障,所述第一數(shù)據(jù)節(jié)點為所述節(jié)點系統(tǒng)中任意一個數(shù)據(jù)節(jié)點,所述發(fā)送節(jié)點為所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中標(biāo)識的向所述第一數(shù)據(jù)節(jié)點發(fā)送心跳消息的數(shù)據(jù)節(jié)點。所述生成單元801,還用于若接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的故障匯報信息,所述故障匯報信息中包含有上報的故障節(jié)點,則根據(jù)除去所述故障匯報信息中匯報的故障節(jié)點之外的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu),為所述節(jié)點系統(tǒng)中除故障節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視圖;所述發(fā)送單元,還用于將所述生成單元801生成的每個所述新的心跳視圖分別發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點。本發(fā)明實施例中的節(jié)點還可以進一步包括:查詢單元805,用于若接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的心跳視圖查詢信息,則查詢該數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖;所述發(fā)送單元802,還用于將所述最新的心跳視圖發(fā)送給該數(shù)據(jù)節(jié)點。進一步地,本實施例中的節(jié)點還可以進一步包括:比較單元806,用于將每個新的心跳視圖與對應(yīng)數(shù)據(jù)節(jié)點最近一次的歷史心跳視圖進行比較獲得至少一個第一數(shù)據(jù)節(jié)點,所述第一數(shù)據(jù)節(jié)點為最近一次歷史心跳視圖和第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖不同的數(shù)據(jù)節(jié)點;所述發(fā)送單元802,還用于將所述第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖發(fā)送給所述
第一數(shù)據(jù)節(jié)點。本發(fā)明實施例中的節(jié)點的各單元實現(xiàn)各自功能的具體過程,請參見前述圖4及圖6所示實施例中的具體描述,此處不再贅述。本發(fā)明實施例中,生成單元801接收到數(shù)據(jù)節(jié)點發(fā)送的故障匯報信息后,根據(jù)除去所述故障匯報信息中匯報的故障節(jié)點之外的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu),為所述節(jié)點系統(tǒng)中除故障節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視圖,發(fā)送單元802將所述新的心跳視圖發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點,而不需要向其他與該新的心跳視圖不相關(guān)的數(shù)據(jù)節(jié)點發(fā)送該心跳視圖,所以可減少通信消息數(shù)量,節(jié)約帶寬,由于其他中心節(jié)點及時進行心跳視圖的更新,可防止由于中心節(jié)點發(fā)生故障而造成系統(tǒng)無法正常處理數(shù)據(jù),提高系統(tǒng)的可用性和可靠性。下面介紹本發(fā)明實施例中的另一種節(jié)點,請參閱圖11,本發(fā)明實施例中的節(jié)點的又一個實施例包括:接收消息單元901,用于第一數(shù)據(jù)節(jié)點接收第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;對比單元902,用于對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的所述第二心跳視圖是否一致,其中,所述第一心跳視圖標(biāo)識有所述第一數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點組成的心跳檢測關(guān)系;判斷單元903,用于若所述對比單元902對比所述第一心跳視圖與所述第二心跳視圖一致,則根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障;發(fā)送信息單元904,用于若所述判斷單元903確定所述第二數(shù)據(jù)節(jié)點發(fā)生故障,則向中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點;所述發(fā)送信息單元904,還用于若所述對比單元對比所述第一心跳視圖與所述第二心跳視圖不一致,則向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖。需要說明的是,本發(fā)明實施例中的節(jié)點還可以包括定時器,用于控制所述發(fā)送信息單元903定時發(fā)送心跳消息,以及控制所述判斷單元903定時判斷第二數(shù)據(jù)節(jié)點是否發(fā)生故障。本發(fā)明實施例中的節(jié)點的各單元實現(xiàn)各自功能的具體過程,請參見前述圖7所示實施例中的具體描述,此處不再贅述。本發(fā)明實施例中,對比單元902對比第一數(shù)據(jù)節(jié)點的第一心跳視圖和第二數(shù)據(jù)節(jié)點的第二心跳視圖是否一致,若一致,則判斷單元903根據(jù)接收的第二數(shù)據(jù)節(jié)點心跳消息中的時間和心跳間隔判斷第二數(shù)據(jù)節(jié)點是否發(fā)生故障,若不一致,則發(fā)送信息單元904向所述中心節(jié)點發(fā)送心跳視圖查詢信息,以查詢中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖。若判斷單元判斷第二數(shù)據(jù)節(jié)點發(fā)生了故障,則發(fā)送信息單元904向中心節(jié)點發(fā)送故障匯報信息,使得所述中心節(jié)點根據(jù)除去第二數(shù)據(jù)節(jié)點之外的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu),為所述節(jié)點系統(tǒng)中除該第二數(shù)據(jù)節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視圖,因此,節(jié)點系統(tǒng)中的數(shù)據(jù)節(jié)點由中心節(jié)點通過心跳視圖統(tǒng)一管理,數(shù)據(jù)節(jié)點根據(jù)該心跳視圖互相傳遞心跳消息及互相進行心跳狀態(tài)的檢測,提高數(shù)據(jù)節(jié)點檢測其他數(shù)據(jù)節(jié)點故障的效率。而中心節(jié)點并不參與心跳消息的傳遞及心跳的檢測,那么,當(dāng)系統(tǒng)中有新的數(shù)據(jù)節(jié)點加入時,該新加入的數(shù)據(jù)節(jié)點通過與中心節(jié)點的交互能夠很快根據(jù)心跳視圖中接收節(jié)點及發(fā)送節(jié)點的ID,獲知與其他數(shù)據(jù)節(jié)點的收發(fā)心跳消息的關(guān)系并據(jù)此進行通信,使得系統(tǒng)具有很好的擴展性。下請參閱圖12,本發(fā)明實施例中的節(jié)點的再一個實施例包括:接收消息單元1001,用于第一數(shù)據(jù)節(jié)點接收第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;對比單元1002,用于對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與所述接收消息單元1001接收的所述第二心跳視圖是否一致,其中,所述第一心跳視圖標(biāo)識有所述第一數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點組成的心跳檢測關(guān)系;判斷單元1003,用于若所述對比單元1002對比所述第一心跳視圖與所述第二心跳視圖一致,則根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障;發(fā)送信息單元1004,用于若所述判斷單元1003確定所述第二數(shù)據(jù)節(jié)點發(fā)生故障,則向中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點;所述發(fā)送信息單元1004,還用于若所述對比單元1002對比所述第一心跳視圖與所述第二心跳視圖不一致,則向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖。進一步地,所述對比單元1002,具體用于對比所述第一心跳視圖與所述第二心跳視圖中包含的共同的數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系是否相同。所述發(fā)送信息單元1004,還用于向所述第二數(shù)據(jù)節(jié)點發(fā)送響應(yīng)信息,所述響應(yīng)信息用于通知所述第一數(shù)據(jù)節(jié)點所述第一心跳視圖與所述第二心跳視圖不一致。進一步地,本實施例中的節(jié)點還可以包括:記錄單元1005,用于記錄所述第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息的時間;所述判斷單元1003,還用于若記錄的所述心跳消息的時間在設(shè)置的心跳檢測時長內(nèi)未更新,則判斷所述第二數(shù)據(jù)節(jié)點發(fā)生故障。進一步地,所述發(fā)送信息單元1004,還用于若接收到通知所述第一數(shù)據(jù)節(jié)點的心跳視圖與不同數(shù)據(jù)節(jié)點的心跳視圖不一致的響應(yīng)信息,則向所述中心節(jié)點發(fā)送所述心跳視圖查詢信息。本發(fā)明實施例中的節(jié)點的各單元實現(xiàn)各自功能的具體過程,請參見前述圖7及圖8所示實施例中的具體描述,此處不再贅述。本發(fā)明實施例中,對比單元1002對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收消息單元1001接收的第二數(shù)據(jù)節(jié)點發(fā)送的第二心跳視圖是否一致,若一致,記錄單元1005記錄所述第二數(shù)據(jù)節(jié)點的心跳消息中的時間,當(dāng)記錄的所述心跳消息的時間在預(yù)置的心跳檢測時長內(nèi)未更新,則判斷單元1003判斷所述第二數(shù)據(jù)節(jié)點發(fā)生故障,若所述第一心跳視圖與所述第二心跳視圖不一致,則發(fā)送信息單元1004向所述中心節(jié)點發(fā)送心跳視圖查詢信息,用于查詢與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖,發(fā)送信息單元1004向所述第二數(shù)據(jù)節(jié)點發(fā)送響應(yīng)信息,通知所述第二節(jié)點所述第一數(shù)據(jù)節(jié)點所述第一心跳視圖與所述第二心跳視圖不一致,從而在中心節(jié)點的統(tǒng)一管理下,避免在系統(tǒng)中按照各自的心跳視圖執(zhí)行數(shù)據(jù)節(jié)點故障的檢測和進行各自心跳視圖的轉(zhuǎn)發(fā),而造成處理數(shù)據(jù)時產(chǎn)生錯誤。本發(fā)明實施例還提供了一種節(jié)點,請參閱圖13,所述節(jié)點包括:接收裝置1101,發(fā)送裝置1102,存儲器1103,處理器1104 ;節(jié)點中的處理器1104的數(shù)量可以為一個或多個,圖13中以一個處理器為例,在本發(fā)明實施例中,輸入裝置1101、輸出裝置1102、存儲器1103和處理器1104可通過總線或其他方式連接,圖13中以通過總線連接為例。所述處理器1104根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;
所述輸出裝置1102將每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息?;蛘撸緦嵤├墓?jié)點也可執(zhí)行如下步驟:所述輸入裝置1101接收第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系;所述處理器1104對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的所述第二心跳視圖是否一致;若所述第一心跳視圖與所述第二心跳視圖一致,所述處理器1104則根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障;若確定所述第二數(shù)據(jù)節(jié)點發(fā)生故障,所述輸出裝置1102則向所述中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點;若所述第一心跳視圖與所述第二心跳視圖不一致,輸出裝置1102則向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖。本實施例中的節(jié)點的各功能模塊的功能可以根據(jù)上述方法實施例中的方法具體實現(xiàn),其具體實現(xiàn)過程可參照上述方法實施例的相關(guān)描述,此處不再贅述。本發(fā)明實施例還提供了一種分布式心跳檢測系統(tǒng),請參閱圖14,包括:中心節(jié)點1201,數(shù)據(jù)節(jié)點1202 ;所述中心節(jié)點1201,用于根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點1202生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,將每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息;所述數(shù)據(jù)節(jié)點1202包括第一數(shù)據(jù)節(jié)點12021和第二數(shù)據(jù)節(jié)點12022、其中,所述第一數(shù)據(jù)節(jié)點12021,用于接收第二數(shù)據(jù)節(jié)點12022發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點12022的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點12022與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,對比所述第一數(shù)據(jù)節(jié)點12021的第一心跳視圖與接收的所述第二心跳視圖是否一致,其中,所述第一心跳視圖標(biāo)識有所述第一數(shù)據(jù)節(jié)點12021與不同的數(shù)據(jù)節(jié)點組成的心跳檢測關(guān)系,若所述第一心跳視圖與所述第二數(shù)據(jù)節(jié)點12022的心跳視圖一致,則根據(jù)接收所述第二數(shù)據(jù)節(jié)點12022的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點12022是否發(fā)生故障,若確定所述第二數(shù)據(jù)節(jié)點12022發(fā)生故障,則向中心節(jié)點1201發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點,若所述第一心跳視圖與所述第二數(shù)據(jù)節(jié)點12022的心跳視圖不一致,則向所述中心節(jié)點1201發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點1201生成的與所述第一數(shù)據(jù)節(jié)點12021對應(yīng)的最新的心跳視圖;所述第二數(shù)據(jù)節(jié)點12022,用于向所述第一數(shù)據(jù)節(jié)點12021發(fā)送心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點12022的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點12022與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系。本實施例中的中心節(jié)點和數(shù)據(jù)節(jié)點的各功能模塊的功能可以根據(jù)上述方法實施例中的方法具體實現(xiàn),其具體實現(xiàn)過程可參照上述方法實施例的相關(guān)描述,此處不再贅述。本領(lǐng)域技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。以上對本發(fā)明所提供的一種分布式心跳檢測方法、裝置及系統(tǒng)進行了詳細介紹,對于本領(lǐng)域的技術(shù)人員,依據(jù)本發(fā)明實施例的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種分布式心跳檢測方法,應(yīng)用于節(jié)點系統(tǒng),其特征在于,所述節(jié)點系統(tǒng)中包括中心節(jié)點和多個數(shù)據(jù)節(jié)點,所述方法包括: 中心節(jié)點根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系; 將每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖包括: 按照每個數(shù)據(jù)節(jié)點所處的機架及服務(wù)器的位置選取數(shù)據(jù)節(jié)點,所述心跳視圖中具有心跳檢測關(guān)系的不同數(shù)據(jù)節(jié)點分布在不同的服務(wù)器或機架中; 根據(jù)所選取的數(shù)據(jù)節(jié)點的ID生成所述心跳視圖。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述方法還包括: 若在預(yù)先設(shè)置的心跳檢測時長內(nèi),沒有接收到所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中所指示的發(fā)送節(jié)點所發(fā)送的心跳消息,則判定所述發(fā)送節(jié)點故障,所述第一數(shù)據(jù)節(jié)點為所述節(jié)點系統(tǒng)中任意一個數(shù)據(jù)節(jié)點,所述發(fā)送節(jié)點為所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中標(biāo)識的向所述第一數(shù)據(jù)節(jié)點發(fā)送心跳消息的數(shù)據(jù)節(jié)點。
4.根據(jù)權(quán)利要求1至3任一項所述的方法,其特征在于,所述方法還包括: 若接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的故障匯報信息,所述故障匯報信息中包含有上報的故障節(jié)點,則根據(jù)除去所述故障匯報信息中匯報的故障節(jié)點之外的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu),為所述節(jié)點系統(tǒng)中除故障節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視圖,將每個所述新的心跳視圖分 別發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點; 若接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的心跳視圖查詢信息,則查詢該數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖,并將所述最新的心跳視圖發(fā)送給該數(shù)據(jù)節(jié)點。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述將每個所述新的心跳視圖分別發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點,包括: 將每個新的心跳視圖與對應(yīng)數(shù)據(jù)節(jié)點最近一次的歷史心跳視圖進行比較獲得至少一個第一數(shù)據(jù)節(jié)點,所述第一數(shù)據(jù)節(jié)點為最近一次歷史心跳視圖和第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖不同的數(shù)據(jù)節(jié)點; 將所述第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖發(fā)送給所述第一數(shù)據(jù)節(jié)點。
6.一種分布式心跳檢測方法,其特征在于,包括: 第一數(shù)據(jù)節(jié)點接收第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系; 對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的所述第二心跳視圖是否一致,其中,所述第一心跳視圖標(biāo)識有所述第一數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點組成的心跳檢測關(guān)系; 若所述第一心跳視圖與所述第二心跳視圖一致,則根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障; 若確定所述第二數(shù)據(jù)節(jié)點發(fā)生故障,則向中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點;若所述第一心跳視圖與所述第二心跳視圖不一致,則向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的所述第二心跳視圖是否一致包括: 對比所述第一心跳視圖與所述第二心跳視圖中包含的共同的數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系是否相同。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述對比所述第一數(shù)據(jù)節(jié)點的心跳視圖與接收的所述第二心跳視圖是否一致之后還包括: 向所述第二數(shù)據(jù)節(jié)點發(fā)送響應(yīng)信息,所述響應(yīng)信息用于通知所述第一數(shù)據(jù)節(jié)點所述第一心跳視圖與所述第二心跳視圖不一致。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障包括: 記錄所述第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息的時間; 若記錄的所述心跳消息的時間在設(shè)置的心跳檢測時長內(nèi)未更新,則判斷所述第二數(shù)據(jù)節(jié)點發(fā)生故障。
10.根據(jù)權(quán)利要求6至9任一項所述的方法,其特征在于,所述方法包括: 若接收到通知所述第一數(shù)據(jù)節(jié)點的心跳視圖與不同數(shù)據(jù)節(jié)點的心跳視圖不一致的響應(yīng)信息,則向所述中心節(jié)點發(fā)送所述心跳視圖查詢信息。
11.一種節(jié)點,其特征在于,包括: 生成單元,用于根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系; 發(fā)送單元,用于將所述生成單元生成的每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息。
12.根據(jù)權(quán)利要求11所述的節(jié)點,其特征在于,所述節(jié)點還包括: 選取單元,用于按照每個數(shù)據(jù)節(jié)點所處的機架及服務(wù)器的位置選取數(shù)據(jù)節(jié)點,所述心跳視圖中具有心跳檢測關(guān)系的不同數(shù)據(jù)節(jié)點分布在不同的服務(wù)器或機架中; 所述生成單元,還用于根據(jù)所述選取單元所選取的數(shù)據(jù)節(jié)點的ID生成所述心跳視圖。
13.根據(jù)權(quán)利要求11或12所述的節(jié)點,其特征在于,所述節(jié)點還包括: 判定單元,用于若第一數(shù)據(jù)節(jié)點在預(yù)先設(shè)置的心跳檢測時長內(nèi),沒有接收到所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中所指示的發(fā)送節(jié)點所發(fā)送的心跳消息,則判定所述發(fā)送節(jié)點故障,所述第一數(shù)據(jù)節(jié)點為所述節(jié)點系統(tǒng)中任意一個數(shù)據(jù)節(jié)點,所述發(fā)送節(jié)點為所述第一數(shù)據(jù)節(jié)點對應(yīng)的心跳視圖中標(biāo)識的向所述第一數(shù)據(jù)節(jié)點發(fā)送心跳消息的數(shù)據(jù)節(jié)點。
14.根據(jù)權(quán)利要求11或12所述的節(jié)點,其特征在于, 所述生成單元,還用于若接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的故障匯報信息,所述故障匯報信息中包含有上報的故障節(jié)點,則根據(jù)除去所述故障匯報信息中匯報的故障節(jié)點之外的節(jié)點系統(tǒng)的拓撲結(jié)構(gòu), 為所述節(jié)點系統(tǒng)中除故障節(jié)點外的每個數(shù)據(jù)節(jié)點生成對應(yīng)的新的心跳視圖;所述發(fā)送單元,還用于將所述生成單元生成的每個所述新的心跳視圖分別發(fā)送給對應(yīng)的數(shù)據(jù)節(jié)點。
15.根據(jù)權(quán)利要求11至14任一項所述的節(jié)點,其特征在于,所述節(jié)點還包括: 查詢單元,用于若接收到所述節(jié)點系統(tǒng)中任一數(shù)據(jù)節(jié)點發(fā)送的心跳視圖查詢信息,則查詢該數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖; 所述發(fā)送單元,還用于將所述最新的心跳視圖發(fā)送給該數(shù)據(jù)節(jié)點。
16.根據(jù)權(quán)利要求11所述的節(jié)點,其特征在于,所述節(jié)點還包括: 比較單元,用于將每個新的心跳視圖與對應(yīng)數(shù)據(jù)節(jié)點最近一次的歷史心跳視圖進行比較獲得至少一個第一數(shù)據(jù)節(jié)點,所述第一數(shù)據(jù)節(jié)點為最近一次歷史心跳視圖和第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖不同的數(shù)據(jù)節(jié)點; 所述發(fā)送單元,還用于將所述第一數(shù)據(jù)節(jié)點對應(yīng)的新的心跳視圖發(fā)送給所述第一數(shù)據(jù)節(jié)點。
17.—種節(jié)點,其特征在于,包括: 接收消息單元,用于第一數(shù)據(jù)節(jié)點接收第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系; 對比單元,用于對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與所述接收消息單元接收的所述第二心跳視圖是否一致,其中,所述第一心跳視圖標(biāo)識有所述第一數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點組成的心跳檢測關(guān)系; 判斷單元,用于若所述對比單元對比所述第一心跳視圖與所述第二心跳視圖一致,則根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障; 發(fā)送信息單元,用于若所述判斷單元確定所述第二數(shù)據(jù)節(jié)點發(fā)生故障,則向中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點; 所述發(fā)送信息單元,還用于若所述對比單元對比所述第一心跳視圖與所述第二心跳視圖不一致,則向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖。
18.根據(jù)權(quán)利要求17所述的節(jié)點,其特征在于, 所述對比單元,具體用于對比所述第一心跳視圖與所述第二心跳視圖中包含的共同的數(shù)據(jù)節(jié)點ID對應(yīng)的數(shù)據(jù)節(jié)點之間的心跳檢測關(guān)系是否相同。
19.根據(jù)權(quán)利要求17或18所述的節(jié)點,其特征在于, 所述發(fā)送信息單元,還用于向所述第二數(shù)據(jù)節(jié)點發(fā)送響應(yīng)信息,所述響應(yīng)信息用于通知所述第一數(shù)據(jù)節(jié)點所述第一心跳視圖與所述第二心跳視圖不一致。
20.根據(jù)權(quán)利要求17至19任一項所述的節(jié)點,其特征在于,所述節(jié)點還包括: 記錄單元,用于記錄所述第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息的時間; 所述判斷單元,還用于若記錄的所述心跳消息的時間在設(shè)置的心跳檢測時長內(nèi)未更新,則判斷所述第二數(shù)據(jù)節(jié)點發(fā)生故障。
21.根據(jù)權(quán)利要求20所 述的節(jié)點,其特征在于, 所述發(fā)送信息單元,還用于若接收到通知所述第一數(shù)據(jù)節(jié)點的心跳視圖與不同數(shù)據(jù)節(jié)點的心跳視圖不一致的響應(yīng)信息,則向所述中心節(jié)點發(fā)送所述心跳視圖查詢信息。
22.—種分布式心跳檢測系統(tǒng),其特征在于,包括: 中心節(jié)點,數(shù)據(jù)節(jié)點; 所述中心節(jié)點,用于根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,將每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息; 所述數(shù)據(jù)節(jié)點包括第一數(shù)據(jù)節(jié)點和第二數(shù)據(jù)節(jié)點; 其中,所述第一數(shù)據(jù)節(jié)點,用于接收第二數(shù)據(jù)節(jié)點發(fā)送的心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,對比所述第一數(shù)據(jù)節(jié)點的第一心跳視圖與接收的所述第二心跳視圖是否一致,其中,所述第一心跳視圖標(biāo)識有所述第一數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點組成的心跳檢測關(guān)系,若所述第一心跳視圖與所述第二心跳視圖一致,則根據(jù)接收所述第二數(shù)據(jù)節(jié)點的心跳消息的時間和心跳間隔,判斷所述第二數(shù)據(jù)節(jié)點是否發(fā)生故障,若確定所述第二數(shù)據(jù)節(jié)點發(fā)生故障,則向中心節(jié)點發(fā)送故障匯報信息,所述故障匯報信息中包含有故障節(jié)點,若所述第一心跳視圖與所述第二心跳視圖不一致,則向所述中心節(jié)點發(fā)送心跳視圖查詢信息,所述心跳視圖查詢信息用于查詢所述中心節(jié)點生成的與所述第一數(shù)據(jù)節(jié)點對應(yīng)的最新的心跳視圖; 所述第二數(shù)據(jù)節(jié)點, 用于向所述第一數(shù)據(jù)節(jié)點發(fā)送心跳消息,所述心跳消息中攜帶所述第二數(shù)據(jù)節(jié)點的第二心跳視圖,所述第二心跳視圖標(biāo)識所述第二數(shù)據(jù)節(jié)點與不同的數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系。
全文摘要
本發(fā)明實施例公開了一種分布式心跳檢測方法,用于提高節(jié)點間檢測故障的效率。本發(fā)明實施例方法包括中心節(jié)點根據(jù)節(jié)點系統(tǒng)的拓撲結(jié)構(gòu)為每個數(shù)據(jù)節(jié)點生成一個對應(yīng)的心跳視圖,任一個數(shù)據(jù)節(jié)點的所述心跳視圖用于標(biāo)識該數(shù)據(jù)節(jié)點與不同數(shù)據(jù)節(jié)點所組成的心跳檢測關(guān)系,將每個所述心跳視圖發(fā)送給對應(yīng)數(shù)據(jù)節(jié)點,使得所述對應(yīng)的數(shù)據(jù)節(jié)點根據(jù)所述心跳視圖發(fā)送心跳消息。
文檔編號H04L29/08GK103117901SQ20131003994
公開日2013年5月22日 申請日期2013年2月1日 優(yōu)先權(quán)日2013年2月1日
發(fā)明者劉敘友, 張烽 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
花莲县| 阳曲县| 梁山县| 读书| 浏阳市| 台北县| 措美县| 安远县| 道孚县| 武安市| 扎囊县| 讷河市| 陈巴尔虎旗| 鹤岗市| 东海县| 武汉市| 布尔津县| 遂川县| 留坝县| 仪陇县| 邳州市| 清镇市| 多伦县| 班玛县| 滕州市| 兖州市| 阜阳市| 禹城市| 南召县| 遂昌县| 马尔康县| 南丰县| 宁国市| 望江县| 宜兰市| 唐河县| 崇仁县| 西乡县| 称多县| 福建省| 玛沁县|