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

集群系統(tǒng)中節(jié)點的故障檢測方法和裝置與流程

文檔序號:12375694閱讀:362來源:國知局
集群系統(tǒng)中節(jié)點的故障檢測方法和裝置與流程

本發(fā)明實施例涉及通信技術(shù),尤其涉及一種集群系統(tǒng)中節(jié)點的故障檢測方法和裝置。



背景技術(shù):

在分布式集群系統(tǒng)中,通常包括一個中心節(jié)點和多個普通節(jié)點,當中心節(jié)點或者普通節(jié)點發(fā)生故障后,將對分布式集群系統(tǒng)的可靠性造成很大的影響,因此,如何有效的進行節(jié)點的故障檢測,是非常重要的。

圖1為現(xiàn)有技術(shù)中節(jié)點的故障檢測方法的示意圖,如圖1所示,普通節(jié)點(B、C、D、E)根據(jù)心跳周期向中心節(jié)點(M)發(fā)送心跳報文,中心節(jié)點(M)根據(jù)檢測周期內(nèi)收到的連續(xù)心跳報文的情況,來檢測普通節(jié)點是否故障,其中,一個檢測周期可以包含多個心跳周期。同時,中心節(jié)點(M)也可以周期性的向普通節(jié)點(B、C、D、E)發(fā)送心跳報文,以通知普通節(jié)點中心節(jié)點所擔任的角色以及是否處于正常狀態(tài),一旦普通節(jié)點(B、C、D、E)在檢測周期內(nèi)未收到中心節(jié)點(M)發(fā)送的心跳報文,則會判斷出中心節(jié)點(M)發(fā)生故障,此時,普通節(jié)點會發(fā)起重新選舉中心節(jié)點的操作,若選舉成功,普通節(jié)點將感知新的中心節(jié)點,并將心跳報文發(fā)送到新的中心節(jié)點,集群再進行故障檢測。

然而,在現(xiàn)有技術(shù)中,通過判斷在檢測周期內(nèi)是否接收到心跳報文的方式來檢測節(jié)點是否發(fā)生故障時,由于在集群規(guī)模固定的情況下,發(fā)送心跳報文的心跳周期無法改變,因此檢測周期的時間也無法改變,使得節(jié)點故障檢測需要通過多個心跳周期才能檢測出來,造成節(jié)點故障檢測的周期較長,導致節(jié)點故障檢測的效率較低。



技術(shù)實現(xiàn)要素:

本發(fā)明實施例提供一種集群系統(tǒng)中節(jié)點的故障檢測方法和裝置,用于解決現(xiàn)有技術(shù)存在著的節(jié)點故障檢測需要通過多個心跳周期才能檢測出來,造 成節(jié)點故障檢測的周期較長的問題,從而提高了節(jié)點故障檢測的效率。

第一方面,本發(fā)明實施例提供一種集群系統(tǒng)中節(jié)點的故障檢測方法,包括:

第一節(jié)點判斷在預設時間內(nèi)是否接收到第二節(jié)點發(fā)送的第一心跳報文;所述第一節(jié)點為所述第二節(jié)點的鄰居節(jié)點,所述第一心跳報文為所述第二節(jié)點并行地向所述第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,所述第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;所述預設時間大于或等于一個心跳周期,且小于兩個心跳周期;

在所述第一節(jié)點未接收到所述第二節(jié)點發(fā)送的第一心跳報文的情況下,所述第一節(jié)點向所述第二節(jié)點的所有鄰居節(jié)點中除所述第一節(jié)點之外的其他鄰居節(jié)點發(fā)送請求消息,所述請求消息用于詢問所述其他鄰居節(jié)點是否接收到所述第一心跳報文;

所述第一節(jié)點接收所述其他鄰居節(jié)點發(fā)送的攜帶有接收狀態(tài)的響應消息,所述接收狀態(tài)用于表示是否接收到所述第一心跳報文;

在所述第一節(jié)點根據(jù)接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定出所述其他鄰居節(jié)點均未接收到所述第一心跳報文的情況下,所述第一節(jié)點確定所述第二節(jié)點發(fā)生故障。

結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,所述第一節(jié)點確定所述第二節(jié)點發(fā)生故障之后,還包括:

所述第一節(jié)點生成第一投票信息,并接收每一所述其他鄰居節(jié)點發(fā)送的第二投票信息,所述第一投票信息包括所述第一節(jié)點選舉的節(jié)點對應的節(jié)點標識;所述第二投票信息包括發(fā)送所述第二投票信息的鄰居節(jié)點選舉的節(jié)點對應的節(jié)點標識;

所述第一節(jié)點根據(jù)所述第一投票信息中的節(jié)點標識和每一所述其他鄰居節(jié)點發(fā)送的第二投票信息中的節(jié)點標識,統(tǒng)計被選舉的所有節(jié)點中每一節(jié)點獲得的投票數(shù)量,并將投票數(shù)量最多的節(jié)點作為第三節(jié)點;所述第三節(jié)點為替代所述第二節(jié)點、且并行地向所述第三節(jié)點的所有鄰居節(jié)點發(fā)送心跳報文的節(jié)點;所述第三節(jié)點的所有鄰居節(jié)點包括所述第三節(jié)點自身的鄰居節(jié)點和所述第二節(jié)點的鄰居節(jié)點。

結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二 種可能的實現(xiàn)方式中,還包括:

在所述第一節(jié)點根據(jù)接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定出至少一個所述其他鄰居節(jié)點接收到所述第一心跳報文的情況下,所述第一節(jié)點確定未接收到所述第一心跳報文的節(jié)點與所述第二節(jié)點之間的鏈路發(fā)生故障;所述未接收到所述第一心跳報文的節(jié)點包括所述第一節(jié)點和所述其他鄰居節(jié)點中未接收到所述第一心跳報文的節(jié)點。

結(jié)合第一方面、第一方面的第一種至第一方面的第二種任一種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,還包括:

所述第一節(jié)點根據(jù)所述第三節(jié)點的鄰居節(jié)點和所述其他鄰居節(jié)點中除所述第三節(jié)點之外的節(jié)點,重新確定所述第一節(jié)點的鄰居節(jié)點。

第二方面,本發(fā)明實施例提供一種集群系統(tǒng)中節(jié)點的故障檢測方法,所述方法包括:

第二節(jié)點并行地向第一節(jié)點和其他鄰居節(jié)點發(fā)送第一心跳報文;所述第一節(jié)點為所述第二節(jié)點的鄰居節(jié)點,所述其他鄰居節(jié)點為所述第二節(jié)點的所有鄰居節(jié)點中除所述第一節(jié)點之外的節(jié)點,所述其他鄰居節(jié)點的數(shù)目為一個以上;

所述第一節(jié)點判斷在預設時間內(nèi)是否接收到所述第一心跳報文;所述預設時間大于或等于一個心跳周期,且小于兩個心跳周期;

在所述第一節(jié)點未接收到所述第一心跳報文的情況下,所述第一節(jié)點向每一所述其他鄰居節(jié)點分別發(fā)送請求消息,所述請求消息用于詢問每一所述其他鄰居節(jié)點是否接收到所述第一心跳報文;

所述第一節(jié)點接收每一所述其他鄰居節(jié)點發(fā)送的攜帶有接收狀態(tài)的響應消息,所述接收狀態(tài)用于表示是否接收到所述第一心跳報文;

在所述第一節(jié)點根據(jù)接收到的所述響應消息中攜帶的接收狀態(tài),確定出所述其他鄰居節(jié)點均未接收到所述第一心跳報文的情況下,所述第一節(jié)點確定所述第二節(jié)點發(fā)生故障。

結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述第一節(jié)點確定所述第二節(jié)點發(fā)生故障之后,還包括:

所述第一節(jié)點生成第一投票信息,并接收每一所述其他鄰居節(jié)點發(fā)送的第二投票信息,所述第一投票信息包括所述第一節(jié)點選舉的節(jié)點對應的節(jié)點 標識;所述第二投票信息包括發(fā)送所述第二投票信息的鄰居節(jié)點選舉的節(jié)點對應的節(jié)點標識;

所述第一節(jié)點根據(jù)所述第一投票信息中的節(jié)點標識和每一所述其他鄰居節(jié)點發(fā)送的第二投票信息中的節(jié)點標識,統(tǒng)計被選舉的所有節(jié)點中每一節(jié)點獲得的投票數(shù)量,并將投票數(shù)量最多的節(jié)點作為第三節(jié)點;所述第三節(jié)點為替代所述第二節(jié)點、且并行地向所述第三節(jié)點的所有鄰居節(jié)點發(fā)送心跳報文的節(jié)點;所述第三節(jié)點的所有鄰居節(jié)點包括所述第三節(jié)點自身的鄰居節(jié)點和所述第二節(jié)點的鄰居節(jié)點。

結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,還包括:

在所述第一節(jié)點根據(jù)接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定出至少一個所述其他鄰居節(jié)點接收到所述第一心跳報文的情況下,則所述第一節(jié)點確定未接收到所述第一心跳報文的節(jié)點與所述第二節(jié)點之間的鏈路發(fā)生故障;所述未接收到所述第一心跳報文的節(jié)點包括所述第一節(jié)點和所述其他鄰居節(jié)點中未接收到第一心跳報文的節(jié)點。

結(jié)合第二方面、第二方面的第一種至第二方面的第二種任一種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,還包括:

所述第一節(jié)點根據(jù)所述第三節(jié)點的鄰居節(jié)點和所述其他鄰居節(jié)點中除所述第三節(jié)點之外的節(jié)點,重新確定所述第一節(jié)點的鄰居節(jié)點。

第三方面,本發(fā)明實施例提供一種集群系統(tǒng)中節(jié)點的故障檢測裝置,包括:

判斷模塊,用于判斷在預設時間內(nèi)是否接收到第二節(jié)點發(fā)送的第一心跳報文;所述第一節(jié)點為所述第二節(jié)點的鄰居節(jié)點,所述第一心跳報文為所述第二節(jié)點并行地向所述第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,所述第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;所述預設時間大于或等于一個心跳周期,且小于兩個心跳周期;

在所述判斷模塊判斷出接收模塊未接收到所述第二節(jié)點發(fā)送的第一心跳報文的情況下,

發(fā)送模塊,用于向所述第二節(jié)點的所有鄰居節(jié)點中除所述第一節(jié)點之外的其他鄰居節(jié)點發(fā)送請求消息,所述請求消息用于詢問所述其他鄰居節(jié)點是 否接收到所述第一心跳報文;

所述接收模塊,還用于接收所述其他鄰居節(jié)點發(fā)送的攜帶有接收狀態(tài)的響應消息,所述接收狀態(tài)用于表示是否接收到所述第一心跳報文;

確定模塊,用于根據(jù)所述接收模塊接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定是否所述其他鄰居節(jié)點均未接收到所述第一心跳報文;

在所述確定模塊確定出所述其他鄰居節(jié)點均未接收到所述第一心跳報文的情況下,所述確定模塊,還用于確定所述第二節(jié)點發(fā)生故障。

結(jié)合第三方面,在第三方面的第一種可能的實現(xiàn)方式中,在所述確定模塊確定所述第二節(jié)點發(fā)生故障之后,還包括:

生成模塊,還用于生成第一投票信息,所述第一投票信息包括所述第一節(jié)點選舉的節(jié)點對應的節(jié)點標識;

所述接收模塊,還用于接收每一所述其他鄰居節(jié)點發(fā)送的第二投票信息,所述第二投票信息包括發(fā)送所述第二投票信息的鄰居節(jié)點選舉的節(jié)點對應的節(jié)點標識;

所述確定模塊,還用于根據(jù)所述第一投票信息中的節(jié)點標識和每一所述其他鄰居節(jié)點發(fā)送的第二投票信息中的節(jié)點標識,統(tǒng)計被選舉的所有節(jié)點中每一節(jié)點獲得的投票數(shù)量,并將投票數(shù)量最多的節(jié)點作為第三節(jié)點;所述第三節(jié)點為替代所述第二節(jié)點、且并行地向所述第三節(jié)點的所有鄰居節(jié)點發(fā)送心跳報文的節(jié)點;所述第三節(jié)點的所有鄰居節(jié)點包括所述第三節(jié)點自身的鄰居節(jié)點和所述第二節(jié)點的鄰居節(jié)點。

結(jié)合第三方面或第三方面的第一種可能的實現(xiàn)方式,在第三方面的第二種可能的實現(xiàn)方式中,

在所述確定模塊根據(jù)所述接收模塊接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定出至少一個所述其他鄰居節(jié)點接收到所述第一心跳報文的情況下,

所述確定模塊還用于確定未接收到所述第一心跳報文的節(jié)點與所述第二節(jié)點之間的鏈路發(fā)生故障;所述未接收到所述第一心跳報文的節(jié)點包括所述第一節(jié)點和所述其他鄰居節(jié)點中未接收到所述第一心跳報文的節(jié)點。

結(jié)合第三方面、第三方面的第一種至第三方面的第二種任一種可能的實 現(xiàn)方式,在第三方面的第三種可能的實現(xiàn)方式中,

所述確定模塊還用于根據(jù)所述第三節(jié)點的鄰居節(jié)點和所述其他鄰居節(jié)點中除所述第三節(jié)點之外的節(jié)點,重新確定所述第一節(jié)點的鄰居節(jié)點。

第四方面,本發(fā)明實施例提供一種集群系統(tǒng)中節(jié)點的故障檢測系統(tǒng),包括第一節(jié)點、第二節(jié)點和其他鄰居節(jié)點,所述第一節(jié)點為所述第二節(jié)點的鄰居節(jié)點,所述其他鄰居節(jié)點為所述第二節(jié)點的所有鄰居節(jié)點中除所述第一節(jié)點之外的節(jié)點,所述其他鄰居節(jié)點的數(shù)目為一個以上,包括:

所述第二節(jié)點,用于并行地向所述第一節(jié)點和所述其他鄰居節(jié)點發(fā)送第一心跳報文;

所述第一節(jié)點,用于判斷在預設時間內(nèi)是否接收到所述第一心跳報文;所述預設時間大于或等于一個心跳周期,且小于兩個心跳周期;

在所述第一節(jié)點未接收到所述第一心跳報文的情況下,所述第一節(jié)點還用于向每一所述其他鄰居節(jié)點分別發(fā)送請求消息,所述請求消息用于詢問每一所述其他鄰居節(jié)點是否接收到所述第一心跳報文;以及,所述第一節(jié)點還用于接收每一所述其他鄰居節(jié)點發(fā)送的攜帶有接收狀態(tài)的響應消息,所述接收狀態(tài)用于表示是否接收到所述第一心跳報文;

在所述第一節(jié)點根據(jù)接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定出所述其他鄰居節(jié)點均未接收到所述第一心跳報文的情況下,所述第一節(jié)點還用于確定所述第二節(jié)點發(fā)生故障。

結(jié)合第四方面,在第四方面的第一種可能的實現(xiàn)方式中,所述第一節(jié)點確定所述第二節(jié)點發(fā)生故障之后,還包括:

所述第一節(jié)點還用于:

生成第一投票信息,并接收每一所述其他鄰居節(jié)點發(fā)送的第二投票信息,所述第一投票信息包括所述第一節(jié)點選舉的節(jié)點對應的節(jié)點標識,所述第二投票信息包括發(fā)送所述第二投票信息的鄰居節(jié)點選舉的節(jié)點對應的節(jié)點標識;

以及,根據(jù)所述第一投票信息中的節(jié)點標識和每一所述其他鄰居節(jié)點發(fā)送的第二投票信息中的節(jié)點標識,統(tǒng)計被選舉的所有節(jié)點中每一節(jié)點獲得的投票數(shù)量,并將投票數(shù)量最多的節(jié)點作為第三節(jié)點;所述第三節(jié)點為替代所述第二節(jié)點、且并行地向所述第三節(jié)點的所有鄰居節(jié)點發(fā)送心跳報文的節(jié)點; 所述第三節(jié)點的所有鄰居節(jié)點包括所述第三節(jié)點自身的鄰居節(jié)點和所述第二節(jié)點的鄰居節(jié)點。

結(jié)合第四方面或第四方面的第一種可能的實現(xiàn)方式,在第四方面的第二種可能的實現(xiàn)方式中,

在所述第一節(jié)點根據(jù)接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定出至少一個所述其他鄰居節(jié)點接收到所述第一心跳報文的情況下,

所述第一節(jié)點還用于確定未接收到所述第一心跳報文的節(jié)點與所述第二節(jié)點之間的鏈路發(fā)生故障;所述未接收到所述第一心跳報文的節(jié)點包括所述第一節(jié)點和所述其他鄰居節(jié)點中未接收到所述第一心跳報文的鄰居節(jié)點。

結(jié)合第四方面、第四方面的第一種至第四方面的第二種任一種可能的實現(xiàn)方式,在第四方面的第三種可能的實現(xiàn)方式中,

所述第一節(jié)點還用于根據(jù)所述第三節(jié)點的鄰居節(jié)點和所述其他鄰居節(jié)點中除所述第三節(jié)點之外的節(jié)點,重新確定所述第一節(jié)點的鄰居節(jié)點。

本發(fā)明實施例提供的集群系統(tǒng)中節(jié)點的故障檢測方法和裝置中,第一節(jié)點判斷在預設時間內(nèi)是否接收到第二節(jié)點發(fā)送的第一心跳報文,其中,第一節(jié)點為第二節(jié)點的鄰居節(jié)點,第一心跳報文為第二節(jié)點并行地向第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;該預設時間大于或等于一個心跳周期,且小于兩個心跳周期;第一節(jié)點在自身未接收到第一心跳報文的情況下,詢問該第二節(jié)點的其他鄰居節(jié)點是否接收到第一心跳報文,并在確定該第二節(jié)點的其他鄰居節(jié)點也均未接收到該第一心跳報文的情況下,確定第二節(jié)點發(fā)生了故障。由于預設時間大于或等于一個心跳周期,且小于兩個心跳周期,所以采用本發(fā)明提供的技術(shù)方案進行故障檢測時,避免了現(xiàn)有技術(shù)中需要通過多個心跳周期才能檢測出節(jié)點是否發(fā)生故障的現(xiàn)象,可以縮短故障檢測的周期,從而提高了節(jié)點故障檢測的效率。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下 面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為現(xiàn)有技術(shù)中集群系統(tǒng)中節(jié)點的故障檢測方法的結(jié)構(gòu)示意圖;

圖2為本發(fā)明提供的集群系統(tǒng)中節(jié)點的故障檢測方法實施例一的流程示意圖;

圖3為集群系統(tǒng)中節(jié)點之間相鄰關(guān)系的示意圖一;

圖4為集群系統(tǒng)中節(jié)點之間相鄰關(guān)系的示意圖二;

圖5為本發(fā)明提供的集群系統(tǒng)中節(jié)點的故障檢測方法實施例二的流程示意圖;

圖6A為集群系統(tǒng)中檢測到節(jié)點故障之前節(jié)點之間相鄰關(guān)系的示意圖;

圖6B為集群系統(tǒng)中檢測到節(jié)點故障之后重新確定節(jié)點之間相鄰關(guān)系的示意圖;

圖7為本發(fā)明提供的集群系統(tǒng)中節(jié)點的故障檢測方法實施例三的流程示意圖;

圖8為本發(fā)明提供的集群系統(tǒng)中節(jié)點的故障檢測方法實施例四的流程示意圖;

圖9為本發(fā)明集群系統(tǒng)中節(jié)點的故障檢測裝置實施例一的結(jié)構(gòu)示意圖;

圖10為本發(fā)明集群系統(tǒng)中節(jié)點的故障檢測系統(tǒng)實施例一的結(jié)構(gòu)示意圖圖10為本發(fā)明節(jié)點實施例一的結(jié)構(gòu)示意圖;

圖11為本發(fā)明節(jié)點實施例一的結(jié)構(gòu)示意圖。

具體實施方式

為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

本發(fā)明實施例適用于集群系統(tǒng)中,其具體適用于分布式集群系統(tǒng)中節(jié)點的故障檢測的場景。該分布式集群系統(tǒng)包括至少兩個節(jié)點,該節(jié)點例如可以是計算機??蛇x的,本實施例中的集群系統(tǒng)中的節(jié)點與現(xiàn)有的集群系統(tǒng)的不同之處在于:本實施例的集群系統(tǒng)中,將所有的節(jié)點都賦予相同的功能,即所有的節(jié)點都具有相同的接收心跳報文和發(fā)送心跳報文的能力,因此,在本實施例的集群系統(tǒng)中,并不存在中心節(jié)點和普通節(jié)點的區(qū)分,也不需要中心節(jié)點管理普通節(jié)點??蛇x的,下述實施例的技術(shù)方案均以計算機作為執(zhí)行主體來介紹。

圖2為本發(fā)明提供的集群系統(tǒng)中節(jié)點的故障檢測方法實施例一的流程示意圖。本發(fā)明實施例涉及的方法適用于分布式集群系統(tǒng)。本實施例以計算機作為執(zhí)行主體為例來介紹。如圖2所示,本實施例的方法可以包括:

步驟201、第一節(jié)點判斷在預設時間內(nèi)是否接收到第二節(jié)點發(fā)送的第一心跳報文;第一節(jié)點為第二節(jié)點的鄰居節(jié)點,第一心跳報文為第二節(jié)點并行地向第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;預設時間大于或等于一個心跳周期,且小于兩個心跳周期。

在本實施例中,第二節(jié)點根據(jù)集群系統(tǒng)中所有節(jié)點的信息,按照集群系統(tǒng)中預設的規(guī)則確定出第一節(jié)點,其中,第一節(jié)點為第二節(jié)點的任意一個鄰居節(jié)點,第二節(jié)點的鄰居節(jié)點為與第二節(jié)點有關(guān)聯(lián)關(guān)系的節(jié)點。圖3為集群系統(tǒng)中節(jié)點之間相鄰關(guān)系的示意圖一,如圖3所示,在集群系統(tǒng)中,節(jié)點E根據(jù)所有節(jié)點的信息,按照集群系統(tǒng)中預設的規(guī)則可以確定出其有四個鄰居節(jié)點,分別是節(jié)點A、B、C和D。其中,第一節(jié)點可以為節(jié)點A、B、C和D中的任意一個。第一節(jié)點通過判斷在預設時間內(nèi)是否接收到第二節(jié)點發(fā)送的第一心跳報文,來檢測第二節(jié)點是否發(fā)生故障。需要進行說明的是,第二節(jié)點是通過并行地向它的所有鄰居節(jié)點發(fā)送心跳報文的,因此,第一心跳報文為第二節(jié)點并行地在同一個時刻向第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文。另外,第二節(jié)點可以根據(jù)心跳周期并行地向它的所有鄰居節(jié)點發(fā)送第一心跳報文,因此,第一節(jié)點可以判斷在大于或等于一個心跳周期,且小于兩個心跳周期的時間內(nèi)是否接收到該第二節(jié)點發(fā)送的第一心跳報文。例如:假設心跳周期為5s,即第二節(jié)點每隔5s,將并行地向它的所有鄰居節(jié)點發(fā)送 一次心跳報文,對于第二節(jié)點在第5s發(fā)送的第一心跳報文,第一節(jié)點將判斷在大于或等于5s,且在小于10s的時間內(nèi)是否接收到第二節(jié)點發(fā)送的第一心跳報文。其中,心跳周期可以根據(jù)經(jīng)驗或者實際情況進行設置,對于心跳周期的具體取值,本實施例在此不作限制。

另外,第二節(jié)點可以通過一個物理網(wǎng)絡周期性地向第一節(jié)點發(fā)送第一心跳報文,但是由于基于單物理網(wǎng)絡進行故障檢測時,在網(wǎng)絡發(fā)生故障,例如:管理平面網(wǎng)絡發(fā)生故障,而業(yè)務平面網(wǎng)絡正常時,往往無法界定是集群系統(tǒng)中第二節(jié)點發(fā)生了故障還是第二節(jié)點和第一節(jié)點之間的鏈路發(fā)生了故障,或者第二節(jié)點和第一節(jié)點同時發(fā)生了故障,由此,導致故障的檢測結(jié)果不準確。為了解決這一問題,優(yōu)選地,本實施例中還可以通過至少兩個網(wǎng)絡發(fā)送第一心跳報文,舉例來說,可以通過雙平面發(fā)送第一心跳報文,例如:管理平面和業(yè)務平面,也可以通過三平面發(fā)送第一心跳報文,例如:管理平面、業(yè)務平面和信令平面。采用多物理網(wǎng)絡的方式發(fā)送第一心跳報文,來檢測節(jié)點是否發(fā)生故障,可以提高檢測的準確性。需要進行說明的是,若物理網(wǎng)絡的數(shù)量為至少兩個時,該至少兩個物理網(wǎng)絡之間相互隔離,這樣可以避免由于多網(wǎng)絡之間存在共用某些設備時,若共用設備發(fā)生故障,從而導致節(jié)點之間無法正常通信的現(xiàn)象,有利于提高檢測的準確性。

步驟202、在第一節(jié)點未接收到第二節(jié)點發(fā)送的第一心跳報文的情況下,第一節(jié)點向第二節(jié)點的所有鄰居節(jié)點中除第一節(jié)點之外的其他鄰居節(jié)點發(fā)送請求消息,請求消息用于詢問其他鄰居節(jié)點是否接收到第一心跳報文。

在現(xiàn)有技術(shù)中,在普通節(jié)點發(fā)送到中心節(jié)點的心跳周期固定的情況下,因為中心節(jié)點的性能的限制,集群系統(tǒng)無法無限增加普通節(jié)點,使得集群系統(tǒng)的擴展性受到影響。針對這一問題,本發(fā)明實施例中,若第一節(jié)點并未在預設時間內(nèi)接收到第二節(jié)點發(fā)送的第一心跳報文,即可初步確定第二節(jié)點有可能發(fā)生了故障。由于第二節(jié)點是并行地向它的所有鄰居節(jié)點發(fā)送的第一心跳報文,因此,第一節(jié)點將向第二節(jié)點的鄰居節(jié)點中,除自身以外的其他鄰居節(jié)點發(fā)送請求消息,以詢問其他鄰居節(jié)點是否接收到第二節(jié)點發(fā)送的第一心跳報文。由此可見,當?shù)谝还?jié)點未接收到第二節(jié)點發(fā)送的第一心跳報文時,第一節(jié)點可以向第二節(jié)點的其他鄰居節(jié)點發(fā)送請求消息,而且第二節(jié)點的非鄰居節(jié)點也將不再給第二節(jié)點發(fā)送心跳報文,由此可以減少第二節(jié)點處理心 跳報文的數(shù)量,從而可以減輕第二節(jié)點的負擔,使得集群系統(tǒng)的可擴展性較好。

舉例來說,圖4為集群系統(tǒng)中節(jié)點之間相鄰關(guān)系的示意圖二,如圖4所示,節(jié)點E的鄰居節(jié)點有X、A、D、C和G,節(jié)點E將在每個心跳周期內(nèi)向它的所有鄰居節(jié)點X、A、D、C和G發(fā)送心跳報文,假設將節(jié)點E作為第二節(jié)點,將節(jié)點A作為第一節(jié)點,若在某一個心跳周期內(nèi),第一節(jié)點A未接收到第二節(jié)點E發(fā)送的第一心跳報文,則第一節(jié)點A將會向其他鄰居節(jié)點X、D、C和G發(fā)送請求消息,以詢問節(jié)點X、D、C和G是否接收到第一心跳報文。

步驟203、第一節(jié)點接收其他鄰居節(jié)點發(fā)送的攜帶有接收狀態(tài)的響應消息,該接收狀態(tài)用于表示是否接收到第一心跳報文。

在本實施例中,其他鄰居節(jié)點接收到第一節(jié)點發(fā)送的請求消息后,將自身是否接收到第一心跳報文的接收狀態(tài)攜帶在響應消息中發(fā)送給第一節(jié)點。

步驟204、在第一節(jié)點根據(jù)接收到的每一其他鄰居節(jié)點發(fā)送的響應消息中攜帶的接收狀態(tài),確定出其他鄰居節(jié)點均未接收到第一心跳報文的情況下,第一節(jié)點確定第二節(jié)點發(fā)生故障。

在本實施例中,每一個其他鄰居節(jié)點在接收到第一節(jié)點發(fā)送的請求消息之后,都會向第一節(jié)點返回攜帶有接收狀態(tài)的響應消息,第一節(jié)點根據(jù)接收到的每一其他鄰居節(jié)點發(fā)送的攜帶有接收狀態(tài)的響應消息,判斷其他鄰居節(jié)點是否接收到第一心跳報文,在判斷出其他鄰居節(jié)點均沒有接收到第二節(jié)點發(fā)送的第一心跳報文的情況下,即可確定出第二節(jié)點發(fā)生了故障。

需要進行說明的是,節(jié)點之間的相鄰關(guān)系是雙向的,即形成鄰居關(guān)系的節(jié)點之間可以相互發(fā)送心跳報文,因此,第二節(jié)點的所有鄰居節(jié)點都會單獨的執(zhí)行步驟201-步驟204。

本發(fā)明實施例提供的集群系統(tǒng)中節(jié)點的故障檢測方法中,第一節(jié)點判斷在預設時間內(nèi)是否接收到第二節(jié)點發(fā)送的第一心跳報文,其中,第一節(jié)點為第二節(jié)點的鄰居節(jié)點,第一心跳報文為第二節(jié)點并行地向第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;該預設時間大于或等于一個心跳周期,且小于兩個心跳周期;第一節(jié)點在自身未接收到第一心跳報文的情況下,詢問該第二節(jié)點的其他鄰居節(jié)點是否接 收到第一心跳報文,并在確定該第二節(jié)點的其他鄰居節(jié)點也均未接收到該第一心跳報文的情況下,確定第二節(jié)點發(fā)生了故障。由于預設時間大于或等于一個心跳周期,且小于兩個心跳周期,所以采用本發(fā)明提供的技術(shù)方案進行故障檢測時,避免了現(xiàn)有技術(shù)中需要通過多個心跳周期才能檢測出節(jié)點是否發(fā)生故障的現(xiàn)象,縮短了故障檢測的周期,從而提高了節(jié)點故障檢測的效率。

圖5為本發(fā)明提供的集群系統(tǒng)中節(jié)點的故障檢測方法實施例二的流程示意圖。在圖2所示實施例的基礎上,對第一節(jié)點確定第二節(jié)點發(fā)生故障之后,各節(jié)點重新確定鄰居節(jié)點的實施例,作詳細說明。如圖5所示,本實施例的方法可以包括:

步驟501、第一節(jié)點生成第一投票信息,并接收每一其他鄰居節(jié)點發(fā)送的第二投票信息,第一投票信息包括第一節(jié)點選舉的節(jié)點對應的節(jié)點標識;第二投票信息包括發(fā)送第二投票信息的鄰居節(jié)點選舉的節(jié)點對應的節(jié)點標識。

在本實施例中,當?shù)诙?jié)點的鄰居節(jié)點確定出第二節(jié)點發(fā)生故障之后,所有的鄰居節(jié)點均需要重新計算各自的鄰居節(jié)點。為便于說明,可以將第二節(jié)點的任意一個鄰居節(jié)點作為第一節(jié)點,第一節(jié)點需要生成第一投票信息,該第一投票信息中包含第一節(jié)點選舉的節(jié)點對應的節(jié)點標識以及投票依據(jù)。另外,第一節(jié)點還要接收每一其他鄰居節(jié)點發(fā)送的第二投票信息,第二投票信息中包括發(fā)送第二投票信息的鄰居節(jié)點選舉的節(jié)點對應的節(jié)點標識以及投票依據(jù)。在實際應用中,投票依據(jù)與多種因素有關(guān),例如:負載情況、節(jié)點編號的大小、節(jié)點緩存新舊程度以及節(jié)點網(wǎng)絡帶寬等,如:第一節(jié)點可以通過判斷哪一個節(jié)點所承擔的負載最小,并將負載最小的該節(jié)點對應的節(jié)點標識攜帶在第一投票信息中發(fā)送給其他鄰居節(jié)點。同樣的,其他鄰居節(jié)點也可以用類似的方式,將第二投票信息發(fā)送給第一節(jié)點。

步驟502、第一節(jié)點根據(jù)第一投票信息中的節(jié)點標識和每一其他鄰居節(jié)點發(fā)送的第二投票信息中的節(jié)點標識,統(tǒng)計被選舉的所有節(jié)點中的每一節(jié)點獲得的投票數(shù)量,并將投票數(shù)量最多的節(jié)點作為第三節(jié)點;第三節(jié)點為替代第二節(jié)點、且并行地向第三節(jié)點的所有鄰居節(jié)點發(fā)送心跳報文的節(jié)點;第三節(jié)點的所有鄰居節(jié)點包括第三節(jié)點自身的鄰居節(jié)點和第二節(jié)點的鄰居節(jié)點。

在本實施例中,第一節(jié)點在接收到每一其他鄰居節(jié)點發(fā)送的第二投票信 息后,根據(jù)自身生成的第一投票信息中的節(jié)點標識和接收到的第二投票信息中的節(jié)點標識,可以確定出第三節(jié)點。在具體的實現(xiàn)過程中,可以根據(jù)第一投票信息和第二投票信息中攜帶的節(jié)點標識,通過投票選舉的方式,統(tǒng)計被選舉的所有節(jié)點中每一節(jié)點獲得的投票數(shù)量,并將獲得投票數(shù)量最多的節(jié)點作為第三節(jié)點。第三節(jié)點用于接管發(fā)生故障的第二節(jié)點的鄰居節(jié)點,也即接管第二節(jié)點與其他節(jié)點之間的關(guān)聯(lián)關(guān)系,因此,第三節(jié)點將替代第二節(jié)點、且并行地向第三節(jié)點的所有鄰居節(jié)點發(fā)送心跳報文的節(jié)點,其中,第三節(jié)點的所有鄰居節(jié)點除了包括第三節(jié)點自身的鄰居節(jié)點之外,還包括第二節(jié)點的鄰居節(jié)點。

步驟503、第一節(jié)點根據(jù)第三節(jié)點的鄰居節(jié)點和其他鄰居節(jié)點中除第三節(jié)點之外的節(jié)點,重新確定第一節(jié)點的鄰居節(jié)點。

在本實施例中,第二節(jié)點的所有鄰居節(jié)點通過投票選舉的方式確定出第三節(jié)點之后,若第一節(jié)點為第三節(jié)點,則第一節(jié)點將接管第二節(jié)點的相鄰關(guān)系,其他鄰居節(jié)點可以根據(jù)第一節(jié)點接管第二節(jié)點的鄰居節(jié)點后的相鄰關(guān)系,重新通過計算確定各自的鄰居節(jié)點;若第一節(jié)點不是第三節(jié)點,則第一節(jié)點將待第三節(jié)點重新確定出相鄰關(guān)系之后,根據(jù)第三節(jié)點的鄰居節(jié)點和其他鄰居節(jié)點中除第三節(jié)點之外的節(jié)點,重新確定自身的鄰居節(jié)點。

舉例來說,圖6A為集群系統(tǒng)中檢測到節(jié)點故障之前節(jié)點之間相鄰關(guān)系的示意圖,圖6B為集群系統(tǒng)中檢測到節(jié)點故障之后重新確定節(jié)點之間相鄰關(guān)系的示意圖。如圖6A所示,假設節(jié)點E為第二節(jié)點,節(jié)點A為第一節(jié)點,當?shù)谝还?jié)點A確定第二節(jié)點E發(fā)生故障之后,第一節(jié)點A將生成第一投票信息,并分別接收節(jié)點X、D、C和G發(fā)送的第二投票信息,第一節(jié)點A根據(jù)第一投票信息中的節(jié)點標識和第二投票信息中的節(jié)點標識確定出第三節(jié)點,以使第三節(jié)點替代第二節(jié)點、且并行地向第三節(jié)點的所有鄰居節(jié)點發(fā)送心跳報文。如圖6B所示,若通過投票選舉,確定出第一節(jié)點A為第三節(jié)點,則由第一節(jié)點A來替代第二節(jié)點、且并行地向第一節(jié)點A的所有鄰居節(jié)點發(fā)送心跳報文,此時,第一節(jié)點A需要通過其他鄰居節(jié)點X、D、C和G重新確定自己的鄰居節(jié)點,而節(jié)點X、D、C和G在等第一節(jié)點A確定好自己的鄰居節(jié)點之后,根據(jù)第一節(jié)點A確定出的鄰居節(jié)點重新確定各自的鄰居節(jié)點。

本發(fā)明實施例提供的集群系統(tǒng)中節(jié)點的故障檢測方法,第一節(jié)點判斷在 預設時間內(nèi)是否接收到第二節(jié)點發(fā)送的第一心跳報文,其中,第一節(jié)點為第二節(jié)點的鄰居節(jié)點,第一心跳報文為第二節(jié)點并行地向第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;該預設時間大于或等于一個心跳周期,且小于兩個心跳周期;第一節(jié)點在自身未接收到第一心跳報文的情況下,詢問該第二節(jié)點的其他鄰居節(jié)點是否接收到第一心跳報文,并在確定該第二節(jié)點的其他鄰居節(jié)點也均未接收到該第一心跳報文的情況下,確定第二節(jié)點發(fā)生了故障。由于預設時間大于或等于一個心跳周期,且小于兩個心跳周期,所以采用本發(fā)明提供的技術(shù)方案進行故障檢測時,避免了現(xiàn)有技術(shù)中需要通過多個心跳周期才能檢測出節(jié)點是否發(fā)生故障的現(xiàn)象,縮短了故障檢測的周期,從而提高了節(jié)點故障檢測的效率。另外,通過在確定第一節(jié)點發(fā)生故障之后,重新確定各自的鄰居節(jié)點,進而繼續(xù)進行故障檢測,提高了故障檢測的準確性。

可選地,在第一節(jié)點根據(jù)接收到的每一其他鄰居節(jié)點發(fā)送的響應消息中攜帶的接收狀態(tài),確定出至少一個其他鄰居節(jié)點接收到第一心跳報文的情況下,第一節(jié)點確定所述未接收到第一心跳報文的節(jié)點與第二節(jié)點之間的鏈路發(fā)生故障。

具體地,第一節(jié)點在未接收到第二節(jié)點發(fā)送的第一心跳報文,并向每一其他節(jié)點發(fā)送請求消息,以詢問每一其他鄰居節(jié)點是否接收到第一心跳報文之后,若根據(jù)每一其他節(jié)點發(fā)送的響應消息確定出至少有一個其他鄰居節(jié)點接收到了第一心跳報文,則第一節(jié)點可以確定出第二節(jié)點是正常的,而可能是第二節(jié)點和第一節(jié)點、以及未接收到第一心跳報文的節(jié)點與第一節(jié)點之間的鏈路發(fā)生了故障,其中,未接收到第一心跳報文的節(jié)點包括第一節(jié)點和其他鄰居節(jié)點中未接收到第一心跳報文的鄰居節(jié)點。

本發(fā)明實施例提供的集群系統(tǒng)中節(jié)點的故障檢測方法,由于第一節(jié)點在確定出至少一個其他鄰居節(jié)點接收到第一心跳報文的情況下,第一節(jié)點確定未接收到第一心跳報文的節(jié)點與第二節(jié)點之間的鏈路發(fā)生故障,使得故障檢測更加全面。

圖7為本發(fā)明提供的集群系統(tǒng)中節(jié)點的故障檢測方法實施例三的流程示意圖。本發(fā)明實施例涉及的方法適用于分布式集群系統(tǒng)。本實施例中仍然以計算機作為執(zhí)行主體為例進行介紹。如圖7所示,本實施例的方法可以包括:

步驟701、第二節(jié)點并行地向第一節(jié)點和其他鄰居節(jié)點發(fā)送第一心跳報文,第一節(jié)點為第二節(jié)點的鄰居節(jié)點;其他鄰居節(jié)點為第二節(jié)點的所有鄰居節(jié)點中除第一節(jié)點之外的節(jié)點,其他鄰居節(jié)點的數(shù)目為一個以上。

在本實施例中,第二節(jié)點可以根據(jù)集群系統(tǒng)中所包含的節(jié)點的信息,根據(jù)集群系統(tǒng)中預設的規(guī)則確定出自身所有的鄰居節(jié)點,其中,第一節(jié)點為第二節(jié)點的任意一個鄰居節(jié)點,第二節(jié)點的鄰居節(jié)點為與該第二節(jié)點有關(guān)聯(lián)關(guān)系的節(jié)點。第二節(jié)點在確定出所有的鄰居節(jié)點之后,會并行地向第一節(jié)點和其他鄰居節(jié)點發(fā)送第一心跳報文。

步驟702、第一節(jié)點判斷在預設時間內(nèi)是否接收到第一心跳報文;預設時間大于或等于一個心跳周期,且小于兩個心跳周期。

在本實施例中,第二節(jié)點可以根據(jù)心跳周期并行地向它的所有鄰居節(jié)點發(fā)送第一心跳報文,因此,第一節(jié)點可以判斷在大于或等于一個心跳周期,且小于兩個心跳周期的時間內(nèi)是否接收到該第二節(jié)點發(fā)送的第一心跳報文。例如:假設心跳周期為5s,即第二節(jié)點每隔5s,將并行地向它的鄰居節(jié)點發(fā)送一次心跳報文,對于第二節(jié)點在第5s發(fā)送的第一心跳報文,第一節(jié)點將判斷在大于等于5s,且在小于10s的時間內(nèi)是否接收到第二節(jié)點發(fā)送的第一心跳報文。其中,心跳周期可以根據(jù)經(jīng)驗或者實際情況進行設置,對于心跳周期的具體取值,本實施例在此不作限制。

另外,第二節(jié)點可以通過一個物理網(wǎng)絡周期性地向第一節(jié)點發(fā)送第一心跳報文,但是由于基于單物理網(wǎng)絡進行故障檢測時,在網(wǎng)絡發(fā)生故障,例如:管理平面網(wǎng)絡發(fā)生故障,而業(yè)務平面網(wǎng)絡正常時,往往無法界定是集群系統(tǒng)中第二節(jié)點發(fā)生了故障還是第二節(jié)點和第一節(jié)點之間的鏈路發(fā)生了故障,或者第二節(jié)點和第一節(jié)點同時發(fā)生了故障,由此,導致故障的檢測結(jié)果不準確。為了解決這一問題,優(yōu)選地,本實施例中還可以通過至少兩個網(wǎng)絡發(fā)送第一心跳報文,舉例來說,可以通過雙平面發(fā)送第一心跳報文,例如:管理平面和業(yè)務平面,也可以通過三平面發(fā)送第一心跳報文,例如:管理平面、業(yè)務平面和信令平面。采用多物理網(wǎng)絡的方式發(fā)送第一心跳報文,來檢測節(jié)點是否發(fā)生故障,可以提高檢測的準確性。需要進行說明的是,若物理網(wǎng)絡的數(shù)量為至少兩個時,該至少兩個物理網(wǎng)絡之間相互隔離,這樣可以避免由于多網(wǎng)絡之間存在共用某些設備時,若共用設備發(fā)生故障,從而導致節(jié)點之間無 法正常通信的現(xiàn)象,有利于提高檢測的準確性。

步驟703、在第一節(jié)點未接收到第一心跳報文的情況下,第一節(jié)點向每一其他鄰居節(jié)點分別發(fā)送請求消息,請求消息用于詢問每一其他鄰居節(jié)點是否接收到所述第一心跳報文。

在本實施例中,若第一節(jié)點并未在預設時間內(nèi)接收到第二節(jié)點發(fā)送的第一心跳報文,即可初步確定第二節(jié)點有可能發(fā)生了故障。由于第二節(jié)點是并行地向它的所有鄰居節(jié)點發(fā)送的第一心跳報文,因此,第一節(jié)點將向第二節(jié)點的鄰居節(jié)點中,除自身以外的其他鄰居節(jié)點發(fā)送請求消息,以詢問其他鄰居節(jié)點是否接收到第二節(jié)點發(fā)送的第一心跳報文。

步驟704、第一節(jié)點接收每一其他鄰居節(jié)點發(fā)送的攜帶有接收狀態(tài)的響應消息,接收狀態(tài)用于表示是否接收到第一心跳報文。

在本實施例中,每一其他鄰居節(jié)點接收到第一節(jié)點發(fā)送的請求消息后,將自身是否接收到第一心跳報文的接收狀態(tài)攜帶在響應消息中發(fā)送給第一節(jié)點。

步驟705、在第一節(jié)點根據(jù)接收到的響應消息中攜帶的接收狀態(tài),確定出其他鄰居節(jié)點均未接收到第一心跳報文的情況下,第一節(jié)點確定第二節(jié)點發(fā)生故障。

在本實施例中,每一個其他鄰居節(jié)點在接收到第一節(jié)點發(fā)送的請求消息之后,都會向第一節(jié)點返回攜帶有接收狀態(tài)的響應消息,第一節(jié)點根據(jù)接收到的每一其他鄰居節(jié)點發(fā)送的攜帶有接收狀態(tài)的響應消息,判斷其他鄰居節(jié)點是否接收到第一心跳報文,在判斷出其他鄰居節(jié)點均沒有接收到第二節(jié)點發(fā)送的第一心跳報文時,即可確定出第二節(jié)點發(fā)生了故障。

本發(fā)明實施例提供的集群系統(tǒng)中節(jié)點的故障檢測方法中,第二節(jié)點通過并行地向第一節(jié)點和其他鄰居節(jié)點發(fā)送第一心跳報文,第一節(jié)點判斷在預設時間內(nèi)是否接收到第二節(jié)點發(fā)送的第一心跳報文,其中,第一節(jié)點為第二節(jié)點的鄰居節(jié)點,第一心跳報文為第二節(jié)點并行地向第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;該預設時間大于或等于一個心跳周期,且小于兩個心跳周期;第一節(jié)點在自身未接收到第一心跳報文的情況下,詢問該第二節(jié)點的其他鄰居節(jié)點是否接收到第一心跳報文,并在確定該第二節(jié)點的其他鄰居節(jié)點也均未接收到該第一心跳 報文的情況下,確定第二節(jié)點發(fā)生了故障。由于預設時間大于或等于一個心跳周期,且小于兩個心跳周期,所以采用本發(fā)明提供的技術(shù)方案進行故障檢測時,避免了現(xiàn)有技術(shù)中需要通過多個心跳周期才能檢測出節(jié)點是否發(fā)生故障的現(xiàn)象,縮短了故障檢測的周期,從而提高了節(jié)點故障檢測的效率。

圖8為本發(fā)明提供的集群系統(tǒng)中節(jié)點的故障檢測方法實施例四的流程示意圖。在圖7所示實施例的基礎上,對第一節(jié)點確定第二節(jié)點發(fā)生故障之后,各節(jié)點重新確定鄰居節(jié)點的實施例,作詳細說明。如圖8所示,本實施例的方法可以包括:

步驟801、第一節(jié)點生成第一投票信息,并接收每一其他鄰居節(jié)點發(fā)送的第二投票信息,第一投票信息包括第一節(jié)點選舉的節(jié)點對應的節(jié)點標識;第二投票信息包括發(fā)送第二投票信息的鄰居節(jié)點選舉的節(jié)點對應的節(jié)點標識。

在本實施例中,當?shù)诙?jié)點的鄰居節(jié)點確定出第二節(jié)點發(fā)生故障之后,所有的鄰居節(jié)點均需要重新計算各自的鄰居節(jié)點。為便于說明,可以將第二節(jié)點的任意一個鄰居節(jié)點作為第一節(jié)點,第一節(jié)點需要生成第一投票信息,該第一投票信息中包含第一節(jié)點選舉的節(jié)點對應的節(jié)點標識以及投票依據(jù)。另外,第一節(jié)點還要接收每一其他鄰居節(jié)點發(fā)送的第二投票信息,該第二投票信息中包括發(fā)送第二投票信息的鄰居節(jié)點選舉的節(jié)點對應的節(jié)點標識以及投票依據(jù)。在實際應用中,投票依據(jù)與多種因素有關(guān),例如:負載情況、節(jié)點編號的大小、節(jié)點緩存新舊程度以及節(jié)點網(wǎng)絡帶寬等,如:第一節(jié)點可以通過判斷哪一個節(jié)點所承擔的負載最小,并將負載最小的該節(jié)點對應的節(jié)點標識攜帶在第一投票信息中發(fā)送給其他鄰居節(jié)點。同樣的,其他鄰居節(jié)點也可以用類似的方式,將第二投票信息發(fā)送給第一節(jié)點。

步驟802、第一節(jié)點根據(jù)第一投票信息中的節(jié)點標識和每一其他鄰居節(jié)點發(fā)送的第二投票信息中的節(jié)點標識,統(tǒng)計被選舉的所有節(jié)點中每一節(jié)點獲得的投票數(shù)量,并將投票數(shù)量最多的節(jié)點作為第三節(jié)點;第三節(jié)點為替代第二節(jié)點、且并行地向第三節(jié)點的所有鄰居節(jié)點發(fā)送心跳報文的節(jié)點;第三節(jié)點的所有鄰居節(jié)點包括第三節(jié)點自身的鄰居節(jié)點和第二節(jié)點的鄰居節(jié)點。

在本實施例中,第一節(jié)點在接收到每個其他鄰居節(jié)點發(fā)送的第二投票信息后,根據(jù)自身生成的第一投票信息中的節(jié)點標識和接收到的第二投票信息 中的節(jié)點標識,可以確定出第三節(jié)點。在具體的實現(xiàn)過程中,可以根據(jù)第一投票信息和第二投票信息中攜帶的節(jié)點標識,通過投票選舉的方式,統(tǒng)計被選舉的所有節(jié)點中每一節(jié)點獲得的投票數(shù)量,并將獲得投票數(shù)量最多的節(jié)點作為第三節(jié)點。第三節(jié)點用于接管發(fā)生故障的第二節(jié)點的鄰居節(jié)點,也即接管第二節(jié)點與其他節(jié)點之間的關(guān)聯(lián)關(guān)系,因此,第三節(jié)點將替代第二節(jié)點、且并行地向第三節(jié)點的所有鄰居節(jié)點發(fā)送心跳報文,其中,第三節(jié)點的所有鄰居節(jié)點除了包括第三節(jié)點自身的鄰居節(jié)點之外,還包括第二節(jié)點的鄰居節(jié)點。

步驟803、第一節(jié)點根據(jù)第三節(jié)點的鄰居節(jié)點和其他鄰居節(jié)點中除第三節(jié)點之外的節(jié)點,重新確定第一節(jié)點的鄰居節(jié)點。

在本實施例中,第二節(jié)點的所有鄰居節(jié)點通過投票選舉的方式確定出第三節(jié)點之后,若第一節(jié)點為第三節(jié)點,則第一節(jié)點將接管第二節(jié)點的相鄰關(guān)系,其他鄰居節(jié)點可以根據(jù)第一節(jié)點接管第二節(jié)點的鄰居節(jié)點后的相鄰關(guān)系,重新通過計算確定各自的鄰居節(jié)點;若第一節(jié)點不是第三節(jié)點,則第一節(jié)點將待第三節(jié)點重新確定出相鄰關(guān)系之后,根據(jù)第三節(jié)點的鄰居節(jié)點和其他鄰居節(jié)點中除第三節(jié)點之外的節(jié)點,重新確定自身的鄰居節(jié)點。

本發(fā)明實施例提供的集群系統(tǒng)中節(jié)點的故障檢測方法,第二節(jié)點通過并行地向第一節(jié)點和其他鄰居節(jié)點發(fā)送第一心跳報文,第一節(jié)點判斷在預設時間內(nèi)是否接收到第二節(jié)點發(fā)送的第一心跳報文,其中,第一節(jié)點為第二節(jié)點的鄰居節(jié)點,第一心跳報文為第二節(jié)點并行地向第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;該預設時間大于或等于一個心跳周期,且小于兩個心跳周期;第一節(jié)點在自身未接收到第一心跳報文的情況下,詢問該第二節(jié)點的其他鄰居節(jié)點是否接收到第一心跳報文,并在確定該第二節(jié)點的其他鄰居節(jié)點也均未接收到該第一心跳報文的情況下,確定第二節(jié)點發(fā)生了故障。由于預設時間大于或等于一個心跳周期,且小于兩個心跳周期,所以采用本發(fā)明提供的技術(shù)方案進行故障檢測時,避免了現(xiàn)有技術(shù)中需要通過多個心跳周期才能檢測出節(jié)點是否發(fā)生故障的現(xiàn)象,縮短了故障檢測的周期,從而提高了節(jié)點故障檢測的效率。另外,通過在確定第一節(jié)點發(fā)生故障之后,重新確定各自的鄰居節(jié)點,進而繼續(xù)進行故障檢測,提高了故障檢測的準確性。

可選地,在第一節(jié)點根據(jù)接收到的每一其他鄰居節(jié)點發(fā)送的響應消息中攜帶的接收狀態(tài),確定出至少一個其他鄰居節(jié)點接收到第一心跳報文的情況下,第一節(jié)點確定所述未接收到第一心跳報文的節(jié)點與第二節(jié)點之間的鏈路發(fā)生故障。

具體地,第一節(jié)點在未接收到第二節(jié)點發(fā)送的第一心跳報文,并向每一其他節(jié)點發(fā)送請求消息,以詢問每一其他鄰居節(jié)點是否接收到第一心跳報文之后,若根據(jù)每一其他鄰居節(jié)點發(fā)送的響應消息確定出至少有一個其他鄰居節(jié)點接收到了第一心跳報文,則第一節(jié)點可以確定出第二節(jié)點是正常的,而可能是第二節(jié)點和第一節(jié)點、以及未接收到第一心跳報文的節(jié)點與第一節(jié)點之間的鏈路發(fā)生了故障,其中,未接收到第一心跳報文的節(jié)點包括第一節(jié)點和其他鄰居節(jié)點中未接收到第一心跳報文的鄰居節(jié)點。

可選地,所述第一節(jié)點根據(jù)所述第三節(jié)點的鄰居節(jié)點和所述其他鄰居節(jié)點中除所述第三節(jié)點之外的節(jié)點,重新確定所述第一節(jié)點的鄰居節(jié)點。

本發(fā)明實施例提供的集群系統(tǒng)中節(jié)點的故障檢測方法,由于第一節(jié)點在確定出至少一個其他鄰居節(jié)點接收到第一心跳報文的情況下,第一節(jié)點確定未接收到第一心跳報文的節(jié)點與第二節(jié)點之間的鏈路發(fā)生故障,使得故障檢測更加全面。

圖9為本發(fā)明集群系統(tǒng)中節(jié)點的故障檢測裝置實施例一的結(jié)構(gòu)示意圖,如圖9所示,本發(fā)明實施例提供的集群系統(tǒng)中節(jié)點的故障檢測裝置10包括判斷模塊11、發(fā)送模塊12、接收模塊13、確定模塊14和生成模塊15。

其中,判斷模塊11用于判斷在預設時間內(nèi)接收模塊13是否接收到第二節(jié)點發(fā)送的第一心跳報文;所述第一節(jié)點為所述第二節(jié)點的鄰居節(jié)點,所述第一心跳報文為所述第二節(jié)點并行地向所述第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,所述第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;所述預設時間大于或等于一個心跳周期,且小于兩個心跳周期;在所述判斷模塊11判斷出所述接收模塊13未接收到所述第二節(jié)點發(fā)送的第一心跳報文的情況下,發(fā)送模塊12用于向所述第二節(jié)點的所有鄰居節(jié)點中除所述第一節(jié)點之外的其他鄰居節(jié)點發(fā)送請求消息;所述請求消息用于詢問所述其他鄰居節(jié)點是否接收到所述第一心跳報文;所述接收模塊13還 用于接收所述其他鄰居節(jié)點發(fā)送的攜帶有接收狀態(tài)的響應消息,所述接收狀態(tài)用于表示是否接收到所述第一心跳報文;確定模塊14用于根據(jù)所述接收模塊13接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定是否所述其他鄰居節(jié)點均未接收到所述第一心跳報文;在所述確定模塊14確定出所述其他鄰居節(jié)點均未接收到所述第一心跳報文的情況下,所述確定模塊14還用于確定所述第二節(jié)點發(fā)生故障。在所述第一節(jié)點根據(jù)接收到的所述響應消息中攜帶的接收狀態(tài),確定出所述其他鄰居節(jié)點均未接收到所述第一心跳報文的情況下,確定模塊14用于確定所述第二節(jié)點發(fā)生故障。

本發(fā)明實施例提供的集群系統(tǒng)中節(jié)點的故障檢測裝置,判斷模塊判斷在預設時間內(nèi)接收模塊是否接收到第二節(jié)點發(fā)送的第一心跳報文,第一心跳報文為第二節(jié)點并行地向第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;該預設時間大于或等于一個心跳周期,且小于兩個心跳周期;接收模塊在未接收到第一心跳報文的情況下,發(fā)送模塊向該第二節(jié)點的其他鄰居節(jié)點發(fā)送請求消息,以詢問其他鄰居節(jié)點是否接收到第一心跳報文,并在確定模塊確定出該第二節(jié)點的其他鄰居節(jié)點也均未接收到該第一心跳報文的情況下,確定第二節(jié)點發(fā)生了故障。由于預設時間大于或等于一個心跳周期,且小于兩個心跳周期,所以采用本發(fā)明提供的技術(shù)方案進行故障檢測時,避免了現(xiàn)有技術(shù)中需要通過多個心跳周期才能檢測出節(jié)點是否發(fā)生故障的現(xiàn)象,縮短了故障檢測的周期,從而提高了節(jié)點故障檢測的效率。

可選地,生成模塊15還用于生成第一投票信息,所述第一投票信息包括所述第一節(jié)點選舉的節(jié)點對應的節(jié)點標識;

所述接收模塊13還用于接收每一所述其他鄰居節(jié)點發(fā)送的第二投票信息,所述第二投票信息包括發(fā)送所述第二投票信息的鄰居節(jié)點選舉的節(jié)點對應的節(jié)點標識;

所述確定模塊14還用于根據(jù)所述第一投票信息中的節(jié)點標識和每一所述其他鄰居節(jié)點發(fā)送的第二投票信息中的節(jié)點標識,統(tǒng)計被選舉的所有節(jié)點中每一節(jié)點獲得的投票數(shù)量,并將投票數(shù)量最多的節(jié)點作為第三節(jié)點;所述第三節(jié)點為替代所述第二節(jié)點、且并行地向所述第三節(jié)點的所有鄰居節(jié)點發(fā) 送心跳報文的節(jié)點;所述第三節(jié)點的所有鄰居節(jié)點包括所述第三節(jié)點自身的鄰居節(jié)點和所述第二節(jié)點的鄰居節(jié)點。

可選地,在所述確定模塊14根據(jù)所述接收模塊13接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定出至少一個所述其他鄰居節(jié)點接收到所述第一心跳報文的情況下,

所述確定模塊14還用于確定未接收到所述第一心跳報文的節(jié)點與所述第二節(jié)點之間的鏈路發(fā)生故障;所述未接收到所述第一心跳報文的節(jié)點包括所述第一節(jié)點和所述其他鄰居節(jié)點中未接收到所述第一心跳報文的節(jié)點。

可選地,所述確定模塊14還用于根據(jù)所述第三節(jié)點的鄰居節(jié)點和所述其他鄰居節(jié)點中除所述第三節(jié)點之外的節(jié)點,重新確定所述第一節(jié)點的鄰居節(jié)點。

本實施例的集群系統(tǒng)中節(jié)點的故障檢測裝置,可以用于執(zhí)行本發(fā)明任意實施例所提供的集群系統(tǒng)中節(jié)點的故障檢測方法的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。

圖10為本發(fā)明集群系統(tǒng)中節(jié)點的故障檢測系統(tǒng)實施例一的結(jié)構(gòu)示意圖,如圖10所示,本發(fā)明實施例提供的集群系統(tǒng)中節(jié)點的故障檢測系統(tǒng)20包括第一節(jié)點21、第二節(jié)點22和其他鄰居節(jié)點23,所述第一節(jié)點21為所述第二節(jié)點22的鄰居節(jié)點,所述其他鄰居節(jié)點23為所述第二節(jié)點22的所有鄰居節(jié)點中除所述第一節(jié)點21之外的節(jié)點,所述其他鄰居節(jié)點23的數(shù)目為一個以上。

其中,所述第二節(jié)點22用于并行地向所述第一節(jié)點和所述其他鄰居節(jié)點發(fā)送第一心跳報文;所述第一節(jié)點21用于判斷在預設時間內(nèi)是否接收到所述第一心跳報文;所述預設時間大于或等于一個心跳周期,且小于兩個心跳周期;在所述第一節(jié)點未接收到所述第一心跳報文的情況下,所述第一節(jié)點21還用于向每一所述其他鄰居節(jié)點分別發(fā)送請求消息,所述請求消息用于詢問每一所述其他鄰居節(jié)點是否接收到所述第一心跳報文;所述第一節(jié)點21還用于接收每一所述其他鄰居節(jié)點發(fā)送的攜帶有接收狀態(tài)的響應消息,所述接收狀態(tài)用于表示是否接收到所述第一心跳報文;在所述第一節(jié)點根據(jù)接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定出所述 其他鄰居節(jié)點均未接收到所述第一心跳報文的情況下,所述第一節(jié)點21還用于確定所述第二節(jié)點發(fā)生故障。

本發(fā)明實施例提供的集群系統(tǒng)中節(jié)點的故障檢測系統(tǒng)中,判斷模塊判斷在預設時間內(nèi)接收模塊是否接收到第二節(jié)點發(fā)送的第一心跳報文,第一心跳報文為第二節(jié)點并行地向第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;該預設時間大于或等于一個心跳周期,且小于兩個心跳周期;接收模塊在未接收到第一心跳報文的情況下,發(fā)送模塊向該第二節(jié)點的其他鄰居節(jié)點發(fā)送請求消息,以詢問其他鄰居節(jié)點是否接收到第一心跳報文,并在確定模塊確定出該第二節(jié)點的其他鄰居節(jié)點也均未接收到該第一心跳報文的情況下,確定第二節(jié)點發(fā)生了故障。由于預設時間大于或等于一個心跳周期,且小于兩個心跳周期,所以采用本發(fā)明提供的技術(shù)方案進行故障檢測時,避免了現(xiàn)有技術(shù)中需要通過多個心跳周期才能檢測出節(jié)點是否發(fā)生故障的現(xiàn)象,縮短了故障檢測的周期,從而提高了節(jié)點故障檢測的效率。

在上述實施例中,所述第一節(jié)點21確定所述第二節(jié)點發(fā)生故障之后,還包括:所述第一節(jié)點21還用于:

生成第一投票信息,并接收每一所述其他鄰居節(jié)點發(fā)送的第二投票信息,所述第一投票信息包括所述第一節(jié)點選舉的節(jié)點對應的節(jié)點標識,所述第二投票信息包括發(fā)送所述第二投票信息的鄰居節(jié)點選舉的節(jié)點對應的節(jié)點標識;

以及,根據(jù)所述第一投票信息中的節(jié)點標識和每一所述其他鄰居節(jié)點發(fā)送的第二投票信息中的節(jié)點標識,統(tǒng)計被選舉的所有節(jié)點中每一節(jié)點獲得的投票數(shù)量,并將投票數(shù)量最多的節(jié)點作為第三節(jié)點,所述第三節(jié)點為替代所述第二節(jié)點、且并行地向所述第三節(jié)點的所有鄰居節(jié)點發(fā)送心跳報文的節(jié)點;所述第三節(jié)點的所有鄰居節(jié)點包括所述第三節(jié)點自身的鄰居節(jié)點和所述第二節(jié)點的鄰居節(jié)點。

在上述實施例中,在所述第一節(jié)點根據(jù)接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定出至少一個所述其他鄰居節(jié)點接收到所述第一心跳報文的情況下,

所述第一節(jié)點21還用于確定未接收到所述第一心跳報文的節(jié)點與所述 第二節(jié)點之間的鏈路發(fā)生故障;所述未接收到所述第一心跳報文的節(jié)點包括所述第一節(jié)點和所述其他鄰居節(jié)點中未接收到所述第一心跳報文的節(jié)點。

在上述實施例中,所述第一節(jié)點21還用于根據(jù)所述第三節(jié)點的鄰居節(jié)點和所述其他鄰居節(jié)點中除所述第三節(jié)點之外的節(jié)點,重新確定所述第一節(jié)點的鄰居節(jié)點。

上述系統(tǒng)實施例對應地可用于執(zhí)行方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。

圖11為本發(fā)明節(jié)點實施例一的結(jié)構(gòu)示意圖,如圖11所示,本實施例的節(jié)點600包括處理器601、用戶接口603、網(wǎng)絡接口604和存儲器605、發(fā)送器606和接收器607,存儲器605可以包括操作系統(tǒng)6051、應用程序6052等。處理器601可以是中央處理器(Central Processing Unit,CPU)。存儲器605用于存儲可執(zhí)行指令。處理器601可以執(zhí)行存儲器605中存儲的可執(zhí)行指令。其中,接收器607用于接收第二節(jié)點發(fā)送的第一心跳報文;所述處理器601用于判斷在預設時間內(nèi)所述接收器607是否接收到第二節(jié)點發(fā)送的第一心跳報文;所述第一心跳報文為所述第二節(jié)點并行地向所述第二節(jié)點的每一鄰居節(jié)點發(fā)送的一個心跳報文,所述第二節(jié)點的所有鄰居節(jié)點的數(shù)目為兩個以上;所述預設時間大于或等于一個心跳周期,且小于兩個心跳周期;在所述處理器601判斷出所述接收器607未接收到所述第二節(jié)點發(fā)送的第一心跳報文的情況下,發(fā)送器606用于向所述第二節(jié)點的所有鄰居節(jié)點中除所述第一節(jié)點之外的其他鄰居節(jié)點發(fā)送請求消息,所述請求消息用于詢問所述其他鄰居節(jié)點是否接收到所述第一心跳報文,所述第一節(jié)點為所述第二節(jié)點的鄰居節(jié)點;所述接收器607還用于接收所述其他鄰居節(jié)點發(fā)送的攜帶有接收狀態(tài)的響應消息,所述接收狀態(tài)用于表示是否接收到所述第一心跳報文;所述處理器601用于根據(jù)所述接收器607接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定是否所述其他鄰居節(jié)點均未接收到所述第一心跳報文;在所述處理器601確定出所述其他鄰居節(jié)點均未接收到所述第一心跳報文的情況下,所述處理器601還用于確定所述第二節(jié)點發(fā)生故障。

本實施例提供的節(jié)點,可以用于執(zhí)行本發(fā)明任意實施例所提供的集群系統(tǒng)中節(jié)點的故障檢測方法的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。

可選地,所述處理器601還用于生成第一投票信息,所述第一投票信息包括所述第一節(jié)點選舉的節(jié)點對應的節(jié)點標識;

所述接收器607還用于接收每一所述其他鄰居節(jié)點發(fā)送的第二投票信息,所述第二投票信息包括發(fā)送所述第二投票信息的鄰居節(jié)點選舉的節(jié)點對應的節(jié)點標識;

所述處理器601還用于根據(jù)所述第一投票信息中的節(jié)點標識和每一所述其他鄰居節(jié)點發(fā)送的第二投票信息中的節(jié)點標識,統(tǒng)計被選舉的所有節(jié)點中每一節(jié)點獲得的投票數(shù)量,并將投票數(shù)量最多的節(jié)點作為第三節(jié)點;所述第三節(jié)點為替代所述第二節(jié)點、且并行地向所述第三節(jié)點的所有鄰居節(jié)點發(fā)送心跳報文的節(jié)點;所述第三節(jié)點的所有鄰居節(jié)點包括所述第三節(jié)點自身的鄰居節(jié)點和所述第二節(jié)點的鄰居節(jié)點。

可選地,在所述處理器601根據(jù)所述接收器607接收到的每一所述其他鄰居節(jié)點發(fā)送的所述響應消息中攜帶的接收狀態(tài),確定出至少一個所述其他鄰居節(jié)點接收到所述第一心跳報文的情況下,所述處理器601還用于確定未接收到所述第一心跳報文的節(jié)點與所述第二節(jié)點之間的鏈路發(fā)生故障;所述未接收到所述第一心跳報文的節(jié)點包括所述第一節(jié)點和所述其他鄰居節(jié)點中未接收到所述第一心跳報文的節(jié)點。

可選地,所述處理器601還用于根據(jù)所述第三節(jié)點的鄰居節(jié)點和所述其他鄰居節(jié)點中除所述第三節(jié)點之外的節(jié)點,重新確定所述第一節(jié)點的鄰居節(jié)點。

本實施例提供的節(jié)點,可以用于執(zhí)行本發(fā)明任意實施例所提供的集群系統(tǒng)中節(jié)點的故障檢測方法的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。

本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通 技術(shù)人員應當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
成武县| 米泉市| 克东县| 海盐县| 永定县| 中山市| 永胜县| 双流县| 前郭尔| 吴川市| 怀柔区| 巴楚县| 古田县| 永德县| 祁连县| 麦盖提县| 云霄县| 洛浦县| 德令哈市| 始兴县| 电白县| 丽江市| 宁明县| 涞水县| 浮梁县| 通化市| 罗定市| 玉田县| 海城市| 蕲春县| 阿勒泰市| 读书| 庆元县| 盖州市| 将乐县| 岳普湖县| 西平县| 昭觉县| 乌兰县| 寿阳县| 门源|