專利名稱:心跳檢測(cè)方法和心跳檢測(cè)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信號(hào)檢測(cè)技術(shù),具體涉及心跳檢測(cè)方法和心跳檢測(cè)設(shè)備。
背景技術(shù):
目前,為了保證業(yè)務(wù)連續(xù)性,通常會(huì)為處理業(yè)務(wù)的關(guān)鍵設(shè)備配置備用設(shè) 備,而該關(guān)鍵設(shè)備稱為主用設(shè)備。備用設(shè)備通過向主用設(shè)備發(fā)送心跳消息, 并接收主用設(shè)備返回的心跳響應(yīng),來檢測(cè)主用設(shè)備是否故障,并在主用設(shè)備 故障時(shí),接管主用設(shè)備的業(yè)務(wù),從而保證了業(yè)務(wù)連續(xù)性。
主、備設(shè)備的設(shè)計(jì)思想在很多網(wǎng)絡(luò)系統(tǒng)中得到廣泛應(yīng)用。以網(wǎng)絡(luò)存儲(chǔ)存 儲(chǔ)系統(tǒng)為例,圖1為現(xiàn)有技術(shù)中一種網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的組網(wǎng)結(jié)構(gòu)示意圖。如圖 l所示,網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)包括存儲(chǔ)控制器和存儲(chǔ)陣列??蛻舳嗽谠L問存儲(chǔ)系統(tǒng) 時(shí),與存儲(chǔ)控制器建立連接,從而通過存儲(chǔ)控制器訪問存儲(chǔ)陣列中的存儲(chǔ)資 源。可見,存儲(chǔ)控制器是實(shí)現(xiàn)網(wǎng)絡(luò)存儲(chǔ)的關(guān)鍵設(shè)備。圖l示出的網(wǎng)絡(luò)存儲(chǔ)系
統(tǒng)中,設(shè)置了互為主備的存儲(chǔ)控制器A和存儲(chǔ)控制器B,這兩個(gè)存儲(chǔ)控制器 可以同時(shí)為客戶端提供存儲(chǔ)業(yè)務(wù)處理服務(wù)。
存儲(chǔ)控制器A和存儲(chǔ)控制器B通過交互心跳消息,判斷對(duì)方是否故障, 如果是,則重啟對(duì)方。具體來說,存儲(chǔ)控制器A和存儲(chǔ)控制器B中分別設(shè) 置用于心跳檢測(cè)的網(wǎng)口,稱為心跳檢測(cè)網(wǎng)口。每個(gè)存儲(chǔ)控制器作為本端分別 通過心跳檢測(cè)網(wǎng)口周期性地向?qū)Χ税l(fā)送心跳消息,如果在心跳超時(shí)時(shí)間到達(dá) 之前接收到對(duì)端的心跳響應(yīng),則判定對(duì)端正常;否則,判定對(duì)端異常。在判 定對(duì)端異常時(shí),接管對(duì)端業(yè)務(wù),然后重啟對(duì)端。
但在實(shí)際中可能出現(xiàn)這樣一種情況,即對(duì)端處理業(yè)務(wù)功能是正常的,只 是本端心跳網(wǎng)口和對(duì)端心跳網(wǎng)口之間的傳輸鏈路發(fā)生故障,或者本端和/或 對(duì)端的心跳網(wǎng)口發(fā)生故障,或者對(duì)端業(yè)務(wù)繁忙無暇處理心跳消息,則本端也 會(huì)接收不到心跳響應(yīng),從而錯(cuò)誤的判定對(duì)端異常,并重啟對(duì)端。而重啟對(duì)端 的操作會(huì)導(dǎo)致對(duì)端的業(yè)務(wù)中斷。
可見,現(xiàn)有的心跳檢測(cè)方案,不能準(zhǔn)確的判斷對(duì)端狀態(tài),當(dāng)判斷失誤時(shí), 會(huì)出現(xiàn)對(duì)端在非異常情況下被重啟,導(dǎo)致對(duì)端非異常情況下的業(yè)務(wù)中斷。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種心跳檢測(cè)方法,能夠提高對(duì)被檢測(cè)方狀態(tài) 的判斷準(zhǔn)確程度。
該方法應(yīng)用于具有業(yè)務(wù)網(wǎng)口的網(wǎng)絡(luò)i殳備中,該方法包括
所述網(wǎng)絡(luò)設(shè)備周期性地通過心跳檢測(cè)端口向檢測(cè)對(duì)端發(fā)送心跳消息,接收 所述檢測(cè)對(duì)端返回的心跳響應(yīng);
當(dāng)所述心跳檢測(cè)端口未收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí),選擇一個(gè)當(dāng)前沒有業(yè) 務(wù)的業(yè)務(wù)網(wǎng)口 ,通過選定的業(yè)務(wù)網(wǎng)口向所述^全測(cè)對(duì)端發(fā)送心跳消息;
判斷所述選定的業(yè)務(wù)網(wǎng)口是否收到檢測(cè)對(duì)端的心跳響應(yīng);如果是,則確 定;f全測(cè)對(duì)端正常;否則,確定4全測(cè)對(duì)端異常。
其中,所述心跳檢測(cè)端口包括心跳檢測(cè)網(wǎng)口和串口 ;
所述周期性地通過心跳檢測(cè)端口向檢測(cè)對(duì)端發(fā)送心跳消息為通過所述心 跳才企測(cè)網(wǎng)口和所述串口同時(shí)發(fā)送;
判定所述心跳檢測(cè)端口未收到檢測(cè)對(duì)端的心跳響應(yīng)為當(dāng)所述心跳檢測(cè)網(wǎng) 口未收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí),判斷所述串口的心跳檢測(cè)是否正常,如果所 述串口的心跳檢測(cè)不正常,則判定所述心跳檢測(cè)端口未收到檢測(cè)對(duì)端的心跳響應(yīng)。
其中,所述心跳檢測(cè)網(wǎng)口未收到檢測(cè)對(duì)端的心跳響應(yīng)的確定操作包括 當(dāng)判定心跳檢測(cè)端口在當(dāng)前心跳超時(shí)時(shí)間內(nèi)未收到檢測(cè)對(duì)端的心跳響應(yīng)
時(shí),判定心跳超時(shí);當(dāng)心跳超時(shí)次數(shù)達(dá)到預(yù)設(shè)次數(shù)閾值,確定心跳檢測(cè)網(wǎng)口未
收到檢測(cè)對(duì)端的心跳響應(yīng);
所述當(dāng)前心跳超時(shí)時(shí)間的設(shè)置為每次判定在當(dāng)前心跳超時(shí)時(shí)間內(nèi)收到檢 測(cè)對(duì)端的心跳響應(yīng)時(shí),將預(yù)設(shè)心跳超時(shí)時(shí)間作為下一次判斷是否心跳超時(shí)的當(dāng)
前心跳超時(shí)時(shí)間;每次出現(xiàn)心跳超時(shí),選擇不同于當(dāng)前心跳超時(shí)時(shí)間的自定義 心跳超時(shí)時(shí)間,作為下一次判斷是否心跳超時(shí)的當(dāng)前心跳超時(shí)時(shí)間。
其中,所述選4奪不同于當(dāng)前心跳超時(shí)時(shí)間的自定義心跳超時(shí)時(shí)間為在預(yù) 設(shè)范圍內(nèi)隨機(jī)選擇自定義心跳超時(shí)時(shí)間;
或者為在當(dāng)前心跳超時(shí)時(shí)間基礎(chǔ)上遞增,將遞增后的心跳超時(shí)時(shí)間作為 自定義心跳超時(shí)時(shí)間。
其中,所述選擇一個(gè)當(dāng)前沒有業(yè)務(wù)的業(yè)務(wù)網(wǎng)口包括判斷是否存在當(dāng)前無 業(yè)務(wù)的業(yè)務(wù)網(wǎng)口,如果是,則從當(dāng)前無業(yè)務(wù)的業(yè)務(wù)網(wǎng)口中選擇一個(gè),作為選定 的業(yè)務(wù)網(wǎng)口;否則,將預(yù)先選定的業(yè)務(wù)網(wǎng)口作為選定的業(yè)務(wù)網(wǎng)口,將選定的業(yè) 務(wù)網(wǎng)口上的業(yè)務(wù)遷移到自身的其他業(yè)務(wù)網(wǎng)口上。
較佳地,所述確定纟企測(cè)對(duì)端異常之后,該方法進(jìn)一步包括
判斷自身當(dāng)前是否有業(yè)務(wù)存在,如果是,則重啟檢測(cè)對(duì)端,接管所述檢測(cè) 對(duì)端的業(yè)務(wù);否則,等待一,殳預(yù)設(shè)時(shí)間后,重啟檢測(cè)對(duì)端,接管所述檢測(cè)對(duì)端 的業(yè)務(wù)。
其中,所述重啟^f企測(cè)對(duì)端,接管所述^r測(cè)對(duì)端的業(yè)務(wù)為先觸發(fā)重啟對(duì) 端操作,再接管所述檢測(cè)對(duì)端的業(yè)務(wù)。
本發(fā)明還提供了 一種心跳檢測(cè)設(shè)備,能夠提高對(duì)被檢測(cè)方狀態(tài)的判斷準(zhǔn) 確程度。
該設(shè)備包括心跳檢測(cè)單元、心跳檢測(cè)端口單元和業(yè)務(wù)網(wǎng)口 ; 所述心跳檢測(cè)單元,周期性地通過心跳檢測(cè)端口單元向檢測(cè)對(duì)端發(fā)送心跳 消息,接收^r測(cè)對(duì)端的心跳響應(yīng);當(dāng)未通過所述心跳檢測(cè)端口單元收到檢測(cè)對(duì) 端的心跳響應(yīng)時(shí),選擇一個(gè)當(dāng)前沒有業(yè)務(wù)的業(yè)務(wù)網(wǎng)口,通過選定的業(yè)務(wù)網(wǎng)口向 所述一企測(cè)對(duì)端發(fā)送心跳消息;判斷是否通過選定的業(yè)務(wù)網(wǎng)口收到;f企測(cè)對(duì)端的心 跳響應(yīng),如果是,則確定纟企測(cè)對(duì)端正常;否則,確定4企測(cè)對(duì)端異常。
所述心跳檢測(cè)端口單元,用于在所述心跳檢測(cè)單元的控制下,向檢測(cè)對(duì)端
發(fā)送心跳消息;將檢測(cè)對(duì)端返回的心跳響應(yīng)發(fā)送給所述心跳檢測(cè)單元;
所述業(yè)務(wù)網(wǎng)口,用于在所述心跳;險(xiǎn)測(cè)單元的控制下,向片企測(cè)對(duì)端發(fā)送心
跳消息;將檢測(cè)對(duì)端返回的心跳響應(yīng)發(fā)送給所述心跳檢測(cè)單元。 其中,所述心跳^r測(cè)端口單元包括心跳^r測(cè)網(wǎng)口和串口 ; 所述心跳檢測(cè)單元包括心跳檢測(cè)網(wǎng)口控制模塊、串口控制模塊、業(yè)務(wù)網(wǎng)口
控制模塊和對(duì)端狀態(tài)判斷模塊;
所述心跳檢測(cè)網(wǎng)口控制模塊,用于控制所述心跳檢測(cè)網(wǎng)口周期性地向檢測(cè)
對(duì)端發(fā)送心跳消息,判斷是否從心跳檢測(cè)網(wǎng)口收到檢測(cè)對(duì)端的心跳響應(yīng),將判
斷結(jié)果發(fā)送給所述對(duì)端狀態(tài)判斷模塊;
所述串口控制模塊,用于在心跳檢測(cè)網(wǎng)口發(fā)送心跳消息的同時(shí),控制所述
串口周期性地向檢測(cè)對(duì)端發(fā)送心跳消息,判斷是否從串口收到檢測(cè)對(duì)端的心跳 響應(yīng),將判斷結(jié)果發(fā)送給所述對(duì)端狀態(tài)判斷模塊;
所述對(duì)端狀態(tài)判斷模塊,用于在根據(jù)接收自心跳檢測(cè)網(wǎng)口控制模塊和串口 控制模塊的判斷結(jié)果,確定所述心跳檢測(cè)網(wǎng)口和所述串口均未收到檢測(cè)對(duì)端的 心跳響應(yīng)時(shí),通知業(yè)務(wù)網(wǎng)口控制模塊進(jìn)行心跳檢測(cè);接收業(yè)務(wù)網(wǎng)口控制模塊發(fā) 來的判斷結(jié)果,當(dāng)判斷結(jié)果顯示業(yè)務(wù)網(wǎng)口能夠收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí),確 定牙企測(cè)對(duì)端正常;否則,確定4全測(cè)對(duì)端異常;
所述業(yè)務(wù)網(wǎng)口控制模塊,用于在接收到通知時(shí),選擇一個(gè)當(dāng)前沒有業(yè)務(wù)的 業(yè)務(wù)網(wǎng)口 ,控制選定的業(yè)務(wù)網(wǎng)口向所述4企測(cè)對(duì)端發(fā)送心跳消息;判斷業(yè)務(wù)網(wǎng)口 是否收到檢測(cè)對(duì)端的心跳響應(yīng),將判斷結(jié)果發(fā)送給所述對(duì)端狀態(tài)判斷模塊。
其中,所述心跳檢測(cè)網(wǎng)口控制模塊包括心跳消息收發(fā)子模塊和判斷子模塊;
所述心跳消息收發(fā)子模塊,用于控制心跳檢測(cè)網(wǎng)口周期性地向檢測(cè)對(duì)端發(fā) 送心跳消息,從心跳一企測(cè)網(wǎng)口接收4企測(cè)對(duì)端返回的心跳響應(yīng);
所述判斷子模塊,當(dāng)所述心跳消息收發(fā)子模塊在當(dāng)前心跳超時(shí)時(shí)間內(nèi)未收 到心跳響應(yīng)時(shí),判定心跳超時(shí);當(dāng)心跳超時(shí)次數(shù)達(dá)到預(yù)設(shè)次數(shù)閾值,確定心跳 檢測(cè)網(wǎng)口未收到檢測(cè)對(duì)端的心跳響應(yīng),此時(shí)將未收到檢測(cè)對(duì)端的心跳響應(yīng)作為 所述判斷結(jié)果發(fā)送給所述對(duì)端狀態(tài)判斷模塊;每次判定在當(dāng)前心跳超時(shí)時(shí)間到
達(dá)之前收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí),將預(yù)設(shè)心跳超時(shí)時(shí)間作為下一次判斷是否 心跳超時(shí)的當(dāng)前心跳超時(shí)時(shí)間;每次出現(xiàn)心跳超時(shí),選擇不同于當(dāng)前心跳超時(shí) 時(shí)間的自定義心跳超時(shí)時(shí)間,作為下一次判斷是否心跳超時(shí)的當(dāng)前心跳超時(shí)時(shí) 間。
較佳地,判斷子模塊進(jìn)一步用于,在預(yù)設(shè)范圍內(nèi)隨機(jī)選擇自定義心跳超時(shí) 時(shí)間,或者,在當(dāng)前心跳超時(shí)時(shí)間基礎(chǔ)上遞增,將遞增后的心跳超時(shí)時(shí)間作為 自定義心跳超時(shí)時(shí)間。
其中,所述業(yè)務(wù)網(wǎng)口控制模塊包括選擇子模塊、業(yè)務(wù)暫停子模塊和控制子
模塊;
所述選擇子模塊,用于判斷所在設(shè)備是否存在當(dāng)前無業(yè)務(wù)的業(yè)務(wù)網(wǎng)口,如 果是,則從當(dāng)前無業(yè)務(wù)的業(yè)務(wù)網(wǎng)口中選擇一個(gè),將選定的業(yè)務(wù)網(wǎng)口通知給所述 控制字模塊;否則,通知業(yè)務(wù)暫停子模塊;
所述業(yè)務(wù)暫停子模塊,用于在接收到通知時(shí),將預(yù)選選定的業(yè)務(wù)網(wǎng)口作為 選定的業(yè)務(wù)網(wǎng)口 ,將該選定的業(yè)務(wù)網(wǎng)口上的業(yè)務(wù)遷移到所在設(shè)備的其他業(yè)務(wù)網(wǎng) 口上,將選定的業(yè)務(wù)網(wǎng)口通知給所述控制字模塊;
所述控制子模塊,用于在接收到通知時(shí),控制選定的業(yè)務(wù)網(wǎng)口向檢測(cè)對(duì) 端發(fā)送心跳消息;判斷是否從選定的業(yè)務(wù)網(wǎng)口收到檢測(cè)對(duì)端的心跳響應(yīng),將 判斷結(jié)果發(fā)送給所述對(duì)端狀態(tài)判斷模塊。
較佳地,該設(shè)備進(jìn)一步包括異常處理單元,用于在所述心跳4全測(cè)單元確定 檢測(cè)對(duì)端異常時(shí),判斷所在設(shè)備當(dāng)前是否有業(yè)務(wù)存在,如果是,則重啟檢測(cè)對(duì) 端,接管所述檢測(cè)對(duì)端的業(yè)務(wù);否則,等待一段預(yù)設(shè)時(shí)間后,重啟檢測(cè)對(duì)端, 接管所述4企測(cè)對(duì)端的業(yè)務(wù)。
根據(jù)以上技術(shù)方案可見,應(yīng)用本發(fā)明的心跳檢測(cè)方案設(shè)置了多重檢測(cè), 當(dāng)心跳檢測(cè)端口接收不到心跳響應(yīng)時(shí),不立刻判定對(duì)端異常,而是通過業(yè)務(wù) 網(wǎng)口繼續(xù)進(jìn)行檢測(cè)。而且,所釆用的業(yè)務(wù)網(wǎng)口是沒有業(yè)務(wù)的業(yè)務(wù)網(wǎng)口,即使 所有業(yè)務(wù)網(wǎng)口都有業(yè)務(wù)也會(huì)將某一選定的業(yè)務(wù)網(wǎng)口的業(yè)務(wù)遷移到其他業(yè)務(wù) 網(wǎng)口 ,將該選定的業(yè)務(wù)網(wǎng)口專門用于心跳檢測(cè),保證心跳消息和/或心跳響
應(yīng)不會(huì)因?yàn)闃I(yè)務(wù)網(wǎng)口業(yè)務(wù)繁忙而被丟棄,提高了成功接收到心跳響應(yīng)的成功 率,從而提高了對(duì)對(duì)端狀態(tài)的判斷準(zhǔn)確程度,進(jìn)而降低了因判斷失誤導(dǎo)致對(duì) 端在非異常情況下被中斷業(yè)務(wù)的概率。
其次,采用心跳檢測(cè)網(wǎng)口和串口同時(shí)發(fā)送心跳消息和接收心跳響應(yīng),保 證在心跳檢測(cè)網(wǎng)口異常的情況下,能迅速從串口的檢測(cè)情況判斷出對(duì)端的狀 態(tài)。這與先用心跳檢測(cè)網(wǎng)口檢測(cè),待心跳檢測(cè)網(wǎng)口異常再用串口檢測(cè)的實(shí)現(xiàn) 方式相比,串口和網(wǎng)口的同時(shí)沖企測(cè)可以減少兩口切換時(shí)不必要的等^f寺時(shí)間, 起到迅速判斷的效果。
另外,在心跳才企測(cè)網(wǎng)口進(jìn)行心跳4企測(cè)時(shí),如果出現(xiàn)接收不到心跳響應(yīng)的 情況,開始使用隨機(jī)選擇的心跳超時(shí)時(shí)間,這樣,可以減少相互備份的檢測(cè) 雙方同時(shí)重啟對(duì)端的扭X率。
此外,當(dāng)判定對(duì)端異常,不直接重啟對(duì)端,而是判斷自身是否有業(yè)務(wù), 如果有則重啟對(duì)端,如果沒有等待一段時(shí)間再重啟對(duì)端,這樣可以進(jìn)一步減 少相互備4分的^全測(cè)雙方同時(shí)重啟對(duì)端導(dǎo)致雙方業(yè)務(wù)均#皮中斷的扭無率。
圖1為現(xiàn)有技術(shù)中一種網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的組網(wǎng)結(jié)構(gòu)示意圖。
圖2為本發(fā)明實(shí)施例中存儲(chǔ)控制器A對(duì)存儲(chǔ)控制器B進(jìn)行心跳檢測(cè)的 方法流程圖。
圖3為本發(fā)明實(shí)施例中心跳檢測(cè)設(shè)備的結(jié)構(gòu)示意圖。 圖4為圖3中心跳檢測(cè)單元31的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
本發(fā)明為一種心跳檢測(cè)方案,應(yīng)用于具有業(yè)務(wù)網(wǎng)口的網(wǎng)絡(luò)設(shè)備中,其基 本思想為網(wǎng)絡(luò)設(shè)備周期性地通過心跳檢測(cè)端口向檢測(cè)對(duì)端發(fā)送心跳消息, 接收檢測(cè)對(duì)端返回的心跳響應(yīng);當(dāng)心跳檢測(cè)端口未收到檢測(cè)對(duì)端的心跳響應(yīng) 時(shí),選4爭(zhēng)一個(gè)當(dāng)前沒有業(yè)務(wù)的業(yè)務(wù)網(wǎng)口 ,通過選定的業(yè)務(wù)網(wǎng)口向4企測(cè)對(duì)端發(fā)送心跳消息;判斷業(yè)務(wù)網(wǎng)口是否收到檢測(cè)對(duì)端的心跳響應(yīng);如果是,則確定 檢測(cè)對(duì)端正常;否則,確定檢測(cè)對(duì)端異常。在檢測(cè)對(duì)端異常的情況下,可以 接管一企測(cè)對(duì)端業(yè)務(wù)并重啟4企測(cè)對(duì)端。
可見,本發(fā)明的心跳檢測(cè)方案設(shè)置了多重檢測(cè),當(dāng)心跳檢測(cè)端口接收不 到心跳響應(yīng)時(shí),不立刻判定對(duì)端異常,而是通過業(yè)務(wù)網(wǎng)口繼續(xù)進(jìn)行4全測(cè)。而 且,所釆用的業(yè)務(wù)網(wǎng)口是沒有業(yè)務(wù)的業(yè)務(wù)網(wǎng)口 ,即使所有業(yè)務(wù)網(wǎng)口都有業(yè)務(wù) 也會(huì)將某一選定的業(yè)務(wù)網(wǎng)口的業(yè)務(wù)遷移到其他業(yè)務(wù)網(wǎng)口 ,將該選定的業(yè)務(wù)網(wǎng) 口專門用于心跳檢測(cè),保證心跳消息和/或心跳響應(yīng)不會(huì)因?yàn)闃I(yè)務(wù)網(wǎng)口業(yè)務(wù) 繁忙而被丟棄,提高了成功接收到心跳響應(yīng)的成功率,從而提高了對(duì)對(duì)端狀 態(tài)的判斷準(zhǔn)確程度,進(jìn)而降低了因判斷失誤導(dǎo)致對(duì)端在非異常情況下被中斷 業(yè)務(wù)的概率。
較佳地,心跳4企測(cè)端口包括本發(fā)明實(shí)施例設(shè)置的專門用于心跳;險(xiǎn)測(cè)的心 跳#:測(cè)網(wǎng)口和串口 ,且同時(shí)通過心跳^全測(cè)網(wǎng)口和串口向4全測(cè)對(duì)端發(fā)送心跳消 息;當(dāng)心跳檢測(cè)網(wǎng)口未收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí),判斷串口的心跳檢測(cè)是 否正常;只有在心跳才企測(cè)網(wǎng)口和串口均未收到檢測(cè)對(duì)端的心跳響應(yīng)的情況 下,才確定檢測(cè)對(duì)端異常。從而保證在心跳檢測(cè)網(wǎng)口異常的情況下,能迅速 從串口的檢測(cè)情況判斷出對(duì)端的狀態(tài)。這與先用心跳檢測(cè)網(wǎng)口檢測(cè),待網(wǎng)口 異常再用串口才企測(cè)的實(shí)現(xiàn)方式相比,串口和網(wǎng)口的同時(shí)4企測(cè)可以減少兩口切 換時(shí)不必要的等待時(shí)間,起到迅速判斷的效果。
本發(fā)明的技術(shù)方案可以適用于主用設(shè)備和備用設(shè)備之間的心跳才企測(cè)。下 面在描述本發(fā)明的技術(shù)方案時(shí),以本發(fā)明的心跳檢測(cè)方案應(yīng)用于圖l示出的 網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)為例進(jìn)行描述,該網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中的雙存儲(chǔ)控制器互為主備。
下面結(jié)合附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
圖2示出了本發(fā)明實(shí)施例中存儲(chǔ)控制器A對(duì)存儲(chǔ)控制器B進(jìn)行心跳檢 測(cè)的方法流程圖。存儲(chǔ)控制器B對(duì)存儲(chǔ)控制器A進(jìn)行心跳檢測(cè)的方法原理 相同。如圖2所示,該流程包括以下步驟
步驟201:存儲(chǔ)控制器A實(shí)時(shí)對(duì)自身是否存在業(yè)務(wù)進(jìn)行監(jiān)測(cè),并記錄業(yè)
務(wù)監(jiān)測(cè)結(jié)果。
本步驟中,判斷一個(gè)固定時(shí)間段內(nèi)是否存在數(shù)據(jù)業(yè)務(wù),如果是,則判定 自身存在業(yè)務(wù),否則,判定自身沒有業(yè)務(wù)。其中,固定時(shí)間段可以為一個(gè)心 跳周期。心跳周期是指連續(xù)兩次發(fā)送心跳消息的時(shí)間間隔。 該步驟不斷地循環(huán)執(zhí)行。
步驟202:以心跳周期為循環(huán)單位,周期性地通過心跳沖企測(cè)網(wǎng)口和串口 同時(shí)向存儲(chǔ)控制器B發(fā)送心跳消息。
本實(shí)施例與現(xiàn)有技術(shù)的區(qū)別不僅在于同時(shí)通過心跳斗企測(cè)網(wǎng)口和串口發(fā) 送心跳消息,而且本實(shí)施例發(fā)送心跳消息是以心跳周期為循環(huán)單位的,與接 收到心跳響應(yīng)的時(shí)間無關(guān)。因此,無需像現(xiàn)有技術(shù)一樣待接收到心跳響應(yīng)后,
需要等待一個(gè)心跳周期才能發(fā)送下一個(gè)心跳消息。由于本實(shí)施例需要多次判 斷心跳檢測(cè)網(wǎng)口超時(shí)才判定心跳檢測(cè)網(wǎng)口異常,那么這樣的設(shè)計(jì)可以縮短判 斷時(shí)間。
步驟203:每次在心跳消息被發(fā)送后,采用預(yù)設(shè)心跳超時(shí)時(shí)間作為當(dāng)前 心跳超時(shí)時(shí)間,判斷在當(dāng)前心跳超時(shí)時(shí)間內(nèi)心跳檢測(cè)網(wǎng)口是否收到存儲(chǔ)控制 器B反饋的心跳響應(yīng);如果是,則在下一次發(fā)送心跳消息后,繼續(xù)執(zhí)行步驟 203的判斷;否則,執(zhí)行步驟204。
在通過心跳檢測(cè)網(wǎng)口進(jìn)行心跳4全測(cè)的同時(shí),同步判斷當(dāng)前心跳超時(shí)時(shí)間 內(nèi)串口是否收到心跳響應(yīng),如果是,則確定串口 4全測(cè)正常,記錄串口 ^r測(cè)狀 態(tài),否則,確定串口^r測(cè)異常,記錄串口4企測(cè)狀態(tài)。記錄的串口才企測(cè)狀態(tài)作 為步驟207的判斷依據(jù)。
步驟204:判定心跳超時(shí),累計(jì)連續(xù)心跳超時(shí)次數(shù);選擇不同于當(dāng)前心 跳超時(shí)時(shí)間的自定義心跳超時(shí)時(shí)間,作為下 一 次心跳超時(shí)判斷的當(dāng)前心跳超 時(shí)時(shí)間。
其中,累計(jì)的連續(xù)心跳超時(shí)次數(shù)在心跳檢測(cè)網(wǎng)口接收到心跳響應(yīng)后被清令。
本步驟中,選擇不同于當(dāng)前心跳超時(shí)時(shí)間的自定義心跳超時(shí)時(shí)間可以有
多種方式,本實(shí)施例介紹兩種較佳地選擇方式
方式一、隨機(jī)方式。在預(yù)設(shè)范圍內(nèi)隨機(jī)選擇自定義心跳超時(shí)時(shí)間。例如,
自定義心跳超時(shí)時(shí)間為基礎(chǔ)值加0秒(s) -2s之間的隨機(jī)值,隨機(jī)值的粒 度為O.ls。如果基礎(chǔ)值為1.5s,則隨機(jī)選擇自定義心跳超時(shí)時(shí)間的預(yù)設(shè)范圍 就是1.5s-3.5s。
采用隨機(jī)方式可以減少相互備份的存儲(chǔ)控制器同時(shí)重啟對(duì)端的概率,原 因在于本實(shí)施例中,相互備份的存儲(chǔ)控制器在物理上設(shè)置在同一硬件框架 內(nèi),因此可以通過硬件重啟對(duì)端。當(dāng)存儲(chǔ)控制器A和存儲(chǔ)控制器B之間的 心跳通路(包括所述心跳;險(xiǎn)測(cè)網(wǎng)口 、串口和業(yè)務(wù)網(wǎng)口所連接的通^各)故障, 導(dǎo)致檢測(cè)不到對(duì)端心跳響應(yīng)時(shí),存儲(chǔ)控制器A和存儲(chǔ)控制器B均會(huì)在本流 程步驟210中同時(shí)判定對(duì)端異常,進(jìn)而重啟對(duì)端。但是,存儲(chǔ)控制器A和 存儲(chǔ)控制器B可能都在正常處理業(yè)務(wù),屬于非異常下的重啟,那么存儲(chǔ)控制 器A和存儲(chǔ)控制器B的業(yè)務(wù)均被中斷。為了盡量減少這種情況的發(fā)生概率,
和存儲(chǔ)控制器B選擇的自定義心跳超時(shí)時(shí)間不同,二者判定對(duì)端異常的時(shí)刻 也不同,大大降低了同時(shí)重啟對(duì)端的概率。如果隨機(jī)選4奪自定義心跳超時(shí)時(shí) 間的范圍跨度為2s,且隨機(jī)粒度為O.ls,且設(shè)置3次心跳超時(shí)認(rèn)為心跳異常, 那么存儲(chǔ)控制器A和存儲(chǔ)控制器B同時(shí)重啟對(duì)端的概率將降低到1/400。
本實(shí)施例中,當(dāng)?shù)谝淮闻卸ㄐ奶鴻z測(cè)網(wǎng)口心跳超時(shí),則隨機(jī)選擇自定義 心跳超時(shí)時(shí)間,在實(shí)際中,可以在前m-1次判斷是否心跳超時(shí)時(shí)均采用預(yù) 設(shè)心跳超時(shí)時(shí)間,而在判定連續(xù)出現(xiàn)m-1次心跳超時(shí),進(jìn)行隨機(jī)選4奪,保 證最后一次判斷使用的超時(shí)時(shí)間為隨機(jī)值,同樣可以達(dá)到降低同時(shí)重啟對(duì)端 概率的目的。其中,m為超時(shí)次數(shù)閾值。但是,多次采用隨機(jī)值可以進(jìn)一步 降低同時(shí)重啟對(duì)端的概率。
方式二、退避方式。在當(dāng)前心跳超時(shí)時(shí)間基礎(chǔ)上遞增,將遞增后的心跳 超時(shí)時(shí)間作為自定義心跳超時(shí)時(shí)間。例如,設(shè)置自定義心跳超時(shí)時(shí)間的計(jì)算 公式為第n次心跳超時(shí)后的自定義心跳超時(shí)時(shí)間=預(yù)設(shè)心跳超時(shí)時(shí)間
+n+n*n*0.1,其中,n為正整數(shù),O.l為調(diào)整因子。假設(shè)預(yù)設(shè)心跳超時(shí)時(shí)間為 1.5秒(s),則發(fā)生第一次心跳超時(shí)后,自定義心跳超時(shí)時(shí)間為1.5 +1+ 0.1 =2.6s;發(fā)生第二次心跳超時(shí)后,自定義心跳超時(shí)時(shí)間為1.5 + 2 + 2x2x0.1 =3.9s。
采用退避方式,可以在第一次未收到對(duì)端心跳響應(yīng)后,逐級(jí)遞增心跳超 時(shí)時(shí)間,從而避免因心跳超時(shí)時(shí)間過短,導(dǎo)致接收不到心跳響應(yīng)所帶來的弊 端。如果存儲(chǔ)控制器A和存儲(chǔ)控制器B選用不同的調(diào)整因子,那么二者選 擇的自定義心跳超時(shí)時(shí)間將不同,也可以像隨機(jī)方式一樣減少同時(shí)重啟對(duì)端 的概率。選擇不同的調(diào)整因子實(shí)際上就是為不同存儲(chǔ)控制器設(shè)置不同的遞增 粒度,在實(shí)際中,也可以隨機(jī)選擇遞增粒度。
步驟205:判斷累計(jì)的連續(xù)心跳超時(shí)次數(shù)是否大于或等于預(yù)設(shè)次數(shù)閾值; 如果是,則執(zhí)行步驟207;否則,執(zhí)行步驟206。
例如,預(yù)設(shè)次數(shù)閾值可以設(shè)置為2或3 。
步驟206:在心跳消息被發(fā)送后,判斷是否在當(dāng)前超時(shí)時(shí)間內(nèi)收到心跳 響應(yīng);如果是,則執(zhí)行步驟203;否則,執(zhí)行步驟204。
步驟207:判斷串口檢測(cè)是否正常;如果是,則執(zhí)行步驟211;否則, 執(zhí)行步驟208。
其中,判斷串口檢測(cè)是否正常的依據(jù)是步驟203記錄的串口檢測(cè)狀態(tài)。
步驟208:選擇一個(gè)當(dāng)前沒有業(yè)務(wù)的業(yè)務(wù)網(wǎng)口 ,通過選定的業(yè)務(wù)網(wǎng)口向 存儲(chǔ)控制器B發(fā)送心跳消息。
本步驟中,判斷自身是否存在處于沒有業(yè)務(wù)狀態(tài)的業(yè)務(wù)網(wǎng)口,如果是, 則從處于沒有業(yè)務(wù)狀態(tài)的業(yè)務(wù)網(wǎng)口中選擇一個(gè),作為選定的業(yè)務(wù)網(wǎng)口 ;否則, 將預(yù)先選定的業(yè)務(wù)網(wǎng)口作為選定的業(yè)務(wù)網(wǎng)口 ,并且暫停選定的業(yè)務(wù)網(wǎng)口的業(yè) 務(wù)。在暫停選定的業(yè)務(wù)網(wǎng)口的業(yè)務(wù)之前,將待暫停的業(yè)務(wù)端口的IP地址配 置給其他業(yè)務(wù)網(wǎng)口,這樣,被暫停的業(yè)務(wù)網(wǎng)口的業(yè)務(wù)被遷移到其他業(yè)務(wù)網(wǎng)口 上,保證業(yè)務(wù)的連續(xù)性。
通過選定的業(yè)務(wù)網(wǎng)口向存儲(chǔ)控制器B發(fā)送心跳消息時(shí),采用預(yù)先配置
的與存儲(chǔ)控制器B的業(yè)務(wù)網(wǎng)口處于同一網(wǎng)段的IP地址,向存儲(chǔ)控制器B發(fā) 送心跳消息。
步驟209:判斷業(yè)務(wù)網(wǎng)口是否收到存儲(chǔ)控制器B的心跳響應(yīng),如果是, 則執(zhí)行步驟212;否則,執(zhí)行步驟210。
步驟210:確定存儲(chǔ)控制器B異常,根據(jù)步驟201的業(yè)務(wù)監(jiān)測(cè)結(jié)果重啟 存儲(chǔ)控制器B。本流程結(jié)束。
本步驟中,根據(jù)步驟201的業(yè)務(wù)監(jiān)測(cè)結(jié)果重啟存儲(chǔ)控制器B包括
根據(jù)步驟201的業(yè)務(wù)監(jiān)測(cè)結(jié)果判斷自身當(dāng)前是否有業(yè)務(wù)存在,如果是, 則重啟存儲(chǔ)控制器B,接管存儲(chǔ)控制器B的業(yè)務(wù);否則,等待一段時(shí)間后, 重啟存儲(chǔ)控制器B,接管存儲(chǔ)控制器B的業(yè)務(wù)。等待時(shí)間可以預(yù)先設(shè)置,例 如設(shè)置為3.5s。
本實(shí)施例在自身有業(yè)務(wù)的情況下,假設(shè)對(duì)端沒有業(yè)務(wù),重啟對(duì)端;而在 自身沒有業(yè)務(wù)的情況下,假設(shè)對(duì)端有沒有業(yè)務(wù),等待對(duì)端重啟自身,對(duì)方?jīng)] 有重啟自身,再重啟對(duì)端。這樣做的目的是,進(jìn)一步減少檢測(cè)雙方同時(shí)重啟 對(duì)端導(dǎo)致雙方的業(yè)務(wù)均^皮中斷的概率。
在重啟存儲(chǔ)控制器B和接管存儲(chǔ)控制器B的業(yè)務(wù)的操作中,本實(shí)施例 先重啟存儲(chǔ)控制器B,再接管存儲(chǔ)控制器B的業(yè)務(wù),這兩個(gè)操作的間隔時(shí)間 可以很短暫。由于接管業(yè)務(wù)在重啟對(duì)端之后,那么,當(dāng)雙方同時(shí)確定重啟對(duì) 端時(shí),可以避免這樣一種情況雙方在重啟對(duì)端前爭(zhēng)奪接管對(duì)端資源造成的 混亂。
步驟211:告警,并在后續(xù)心跳^r測(cè)中通過串口;f全測(cè)心跳。 告警的目的是,通知管理員檢查心跳檢測(cè)網(wǎng)口 ,以解除心跳檢測(cè)網(wǎng)口的
故障。故障解除后恢復(fù)心跳檢測(cè)網(wǎng)口的檢測(cè)。
在后續(xù)通過串口^企測(cè)心跳的過程中,同時(shí)嘗試用心跳4企測(cè)網(wǎng)口進(jìn)行心跳
檢測(cè),如果通過心跳檢測(cè)網(wǎng)口接收到心跳響應(yīng),則如圖2中虛線所示,返回
執(zhí)行步驟203。
步驟212:告警,并在后續(xù)心跳^r測(cè)中通過業(yè)務(wù)網(wǎng)口;f全測(cè)心跳。告警的目的是,通知管理員檢查心跳檢測(cè)網(wǎng)口和串口 ,以解除心跳檢測(cè) 網(wǎng)口的故障和串口的故障。故障解除后恢復(fù)心跳檢測(cè)網(wǎng)口和串口的檢測(cè)。
在后續(xù)通過業(yè)務(wù)網(wǎng)口檢測(cè)心跳的過程中,同時(shí)嘗試用心跳檢測(cè)網(wǎng)口進(jìn)行 心跳檢測(cè),如果通過心跳檢測(cè)網(wǎng)口接收到心跳響應(yīng),則如圖2中虛線所示, 返回執(zhí)行步驟203。
至此,本流程結(jié)束。
為了實(shí)現(xiàn)本發(fā)明的心跳檢測(cè)方法,本發(fā)明實(shí)施例還提出了一種心跳檢測(cè)
設(shè)備。心跳檢測(cè)設(shè)備可以應(yīng)用在圖1的存儲(chǔ)控制器A和存儲(chǔ)控制器B中。
圖3為本發(fā)明實(shí)施例中心跳檢測(cè)設(shè)備的結(jié)構(gòu)示意圖。如圖3所示,該心 跳檢測(cè)設(shè)備包括心跳檢測(cè)單元31 、心跳檢測(cè)端口單元32和n個(gè)業(yè)務(wù)網(wǎng)口 33, n為大于或等于l的整數(shù);其中,
心跳檢測(cè)單元31 ,用于周期性地通過心跳檢測(cè)端口單元32向檢測(cè)對(duì)端 發(fā)送心跳消息,接收檢測(cè)對(duì)端返回的心跳響應(yīng);當(dāng)未通過心跳檢測(cè)端口單元 收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí),從n個(gè)業(yè)務(wù)網(wǎng)口 33中選4奪一個(gè)當(dāng)前沒有業(yè)務(wù) 的業(yè)務(wù)網(wǎng)口33,通過選定的業(yè)務(wù)網(wǎng)口 33向4企測(cè)對(duì)端發(fā)送心跳消息;判斷是 否通過選定的業(yè)務(wù)網(wǎng)口 33收到檢測(cè)對(duì)端的心跳響應(yīng),如果是,則確定檢測(cè) 對(duì)端正常,否則,確定4企測(cè)對(duì)端異常。
心跳檢測(cè)端口單元32,用于在心跳檢測(cè)單元31的控制下,向檢測(cè)對(duì)端發(fā) 送心跳消息;接收來自檢測(cè)對(duì)端的心跳響應(yīng),并發(fā)送給心跳檢測(cè)單元31 。
業(yè)務(wù)網(wǎng)口 33,用于在心跳檢測(cè)單元31的控制下,向檢測(cè)對(duì)端發(fā)送心跳消 息;接收來自檢測(cè)對(duì)端的心跳響應(yīng),并發(fā)送給心跳檢測(cè)單元31。當(dāng)該心跳檢測(cè) 設(shè)備應(yīng)用于存儲(chǔ)控制器時(shí),業(yè)務(wù)網(wǎng)口為存儲(chǔ)控制器中負(fù)責(zé)存儲(chǔ)業(yè)務(wù)的網(wǎng)口 。
該心跳檢測(cè)設(shè)備進(jìn)一步包括異常處理單元34,用于在心跳檢測(cè)單元31確 定檢測(cè)對(duì)端異常時(shí),判斷所在設(shè)備的各業(yè)務(wù)網(wǎng)口 33當(dāng)前是否有業(yè)務(wù)存在,如果 是,則直接重啟檢測(cè)對(duì)端,接管檢測(cè)對(duì)端的業(yè)務(wù);否則,等待一段預(yù)定時(shí)間后, 重啟纟企測(cè)對(duì)端,接管一企測(cè)對(duì)端的業(yè)務(wù)。
下面對(duì)心跳檢測(cè)端口單元32中的組成模塊進(jìn)行詳細(xì)描述。 心跳4企測(cè)端口單元32包括心跳4企測(cè)網(wǎng)口 321和串口 322。心跳4企測(cè)網(wǎng)口 321 和串口 322均為檢測(cè)心跳設(shè)置。在這種情況下,如圖4所示,心跳檢測(cè)單元31 具體包括心跳檢測(cè)網(wǎng)口控制模塊41、串口控制模塊42、業(yè)務(wù)網(wǎng)口控制模塊43 和對(duì)端狀態(tài)判斷模塊44,其中,
心跳檢測(cè)網(wǎng)口控制模塊41 ,用于控制心跳檢測(cè)網(wǎng)口 321周期性地向檢測(cè)對(duì) 端發(fā)送心跳消息,判斷是否從心跳檢測(cè)網(wǎng)口 321收到檢測(cè)對(duì)端的心跳響應(yīng),將 判斷結(jié)果發(fā)送給對(duì)端狀態(tài)判斷模塊44。
具體來說,該心跳檢測(cè)網(wǎng)口控制模塊41包括心跳消息收發(fā)子模塊和判斷子 模塊;這2個(gè)子模塊在圖4中未示出;其中,
心跳消息收發(fā)子模塊,用于控制心跳檢測(cè)網(wǎng)口 321周期性地向檢測(cè)對(duì)端發(fā) 送心跳消息,從心跳檢測(cè)網(wǎng)口 321接收檢測(cè)對(duì)端返回的心跳響應(yīng)。
判斷子模塊,當(dāng)判定在當(dāng)前心跳超時(shí)時(shí)間內(nèi)未收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí), 判定心跳超時(shí),此時(shí)不發(fā)送判斷結(jié)果;當(dāng)心跳超時(shí)次數(shù)達(dá)到預(yù)設(shè)次數(shù)閾值,則 將心跳檢測(cè)網(wǎng)口 321未收到檢測(cè)對(duì)端的心跳響應(yīng)作為判斷結(jié)果發(fā)送給對(duì)端狀態(tài) 判斷模塊44。當(dāng)判定在當(dāng)前心跳超時(shí)時(shí)間內(nèi)收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí),直接 向?qū)Χ藸顟B(tài)判斷模塊44發(fā)送判斷結(jié)果。
其中,當(dāng)前心跳超時(shí)時(shí)間的設(shè)置為每次判定在當(dāng)前心跳超時(shí)時(shí)間內(nèi)收到 檢測(cè)對(duì)端的心跳響應(yīng)時(shí),將預(yù)設(shè)心跳超時(shí)時(shí)間作為下一次判斷是否心跳超時(shí)的 當(dāng)前心跳超時(shí)時(shí)間;每次出現(xiàn)心跳超時(shí),選擇不同于當(dāng)前心跳超時(shí)時(shí)間的自定 義心跳超時(shí)時(shí)間,作為下一次判斷是否心跳超時(shí)的當(dāng)前心跳超時(shí)時(shí)間。
判斷子模塊在選擇自定義心跳超時(shí)時(shí)間時(shí),在預(yù)設(shè)范圍內(nèi)隨機(jī)選擇自定義 心跳超時(shí)時(shí)間,或者,在當(dāng)前心跳超時(shí)時(shí)間基礎(chǔ)上遞增,將遞增后的心跳超時(shí) 時(shí)間作為自定義心跳超時(shí)時(shí)間。不同存儲(chǔ)控制器可以設(shè)置不同的遞增粒度,或 者隨機(jī)選擇遞增粒度。
串口控制模塊42,用于在心跳檢測(cè)網(wǎng)口 321發(fā)送心跳消息的同時(shí),控制串 口 322周期性地向檢測(cè)對(duì)端發(fā)送心跳消息,判斷是否從串口 322收到檢測(cè)對(duì)端 的心跳響應(yīng),將判斷結(jié)果發(fā)送給對(duì)端狀態(tài)判斷模塊44。
對(duì)端狀態(tài)判斷模塊44,用于在根據(jù)接收自心跳檢測(cè)網(wǎng)口控制模塊41和串 口控制模塊42的判斷結(jié)果,確定心跳檢測(cè)網(wǎng)口 321和串口 322均未收到檢測(cè)對(duì) 端的心跳響應(yīng)時(shí),通知業(yè)務(wù)網(wǎng)口控制才莫塊43進(jìn)行心跳4全測(cè);接收業(yè)務(wù)網(wǎng)口控制 模塊43發(fā)來的判斷結(jié)果,當(dāng)判斷結(jié)果顯示業(yè)務(wù)網(wǎng)口 33能夠收到4企測(cè)對(duì)端的心 跳響應(yīng)時(shí),確定^r測(cè)對(duì)端正常;否則,確定纟全測(cè)對(duì)端異常。
業(yè)務(wù)網(wǎng)口控制模塊43,用于在接收到進(jìn)行心跳檢測(cè)的通知時(shí),從n個(gè)業(yè)務(wù) 網(wǎng)口中33選擇一個(gè)當(dāng)前沒有業(yè)務(wù)的業(yè)務(wù)網(wǎng)口 33,控制選定的業(yè)務(wù)網(wǎng)口 33向檢 測(cè)對(duì)端發(fā)送心跳消息;判斷是否從選定的業(yè)務(wù)網(wǎng)口 33收到檢測(cè)對(duì)端的心跳響 應(yīng),將判斷結(jié)果發(fā)送給對(duì)端狀態(tài)判斷模塊44。
具體來說,該業(yè)務(wù)網(wǎng)口控制模塊43包括選擇子模塊、業(yè)務(wù)暫停子模塊和控 制子模塊;這3個(gè)子模塊在圖4中未示出。其中,
選擇子模塊,用于判斷所在設(shè)備是否存在處于沒有業(yè)務(wù)狀態(tài)的業(yè)務(wù)網(wǎng)口 33, 如果是,則從處于沒有業(yè)務(wù)狀態(tài)的業(yè)務(wù)網(wǎng)口 33中選擇一個(gè),作為選定的業(yè)務(wù)網(wǎng) 口,并通知控制子模塊;否則,將預(yù)先選定的業(yè)務(wù)網(wǎng)口 33作為選定的業(yè)務(wù)網(wǎng)口 33,并通知業(yè)務(wù)暫停子模塊;
業(yè)務(wù)暫停子模塊,用于在接收到通知時(shí),將選定的業(yè)務(wù)網(wǎng)口 33上的業(yè)務(wù)遷 移到所在i殳備的其他業(yè)務(wù)網(wǎng)口上,同時(shí)停止選定的業(yè)務(wù)網(wǎng)口上的業(yè)務(wù),然后通 知控制子模塊。
控制子模塊,用于在接收到通知時(shí),控制選定的業(yè)務(wù)網(wǎng)口 33向檢測(cè)對(duì)端發(fā) 送心跳消息;判斷是否從選定的業(yè)務(wù)網(wǎng)口 33收到檢測(cè)對(duì)端的心跳響應(yīng),將判斷 結(jié)果發(fā)送給對(duì)端狀態(tài)判斷模塊44。
本實(shí)施例中,為了響應(yīng)心跳消息,在接收心跳消息的設(shè)備端中進(jìn)行心跳響 應(yīng)配置,當(dāng)設(shè)備接收到心跳消息后,無論該心跳消息來自心跳4企測(cè)網(wǎng)口、串口 或業(yè)務(wù)網(wǎng)口,均需要返回心跳響應(yīng)。
由以上所述可以看出,本發(fā)明所提供的心跳檢測(cè)方案能夠提高對(duì)被檢測(cè) 方狀態(tài)的判斷準(zhǔn)確程度,減少被檢測(cè)方在非異常情況下被重啟的概率,從而 降低被檢測(cè)方在非異常情況下的業(yè)務(wù)中斷概率。
綜上所述,以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的 保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改 進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種心跳檢測(cè)方法,應(yīng)用于具有業(yè)務(wù)網(wǎng)口的網(wǎng)絡(luò)設(shè)備中,其特征在于,該方法包括所述網(wǎng)絡(luò)設(shè)備周期性地通過心跳檢測(cè)端口向檢測(cè)對(duì)端發(fā)送心跳消息,接收所述檢測(cè)對(duì)端返回的心跳響應(yīng);當(dāng)所述心跳檢測(cè)端口未收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí),選擇一個(gè)當(dāng)前沒有業(yè)務(wù)的業(yè)務(wù)網(wǎng)口,通過選定的業(yè)務(wù)網(wǎng)口向所述檢測(cè)對(duì)端發(fā)送心跳消息;判斷所述選定的業(yè)務(wù)網(wǎng)口是否收到檢測(cè)對(duì)端的心跳響應(yīng);如果是,則確定檢測(cè)對(duì)端正常;否則,確定檢測(cè)對(duì)端異常。
2、 如權(quán)利要求l所述的方法,其特征在于,所述心跳檢測(cè)端口包括心跳檢 觀'J網(wǎng)口和串口 ;所述周期性地通過心跳檢測(cè)端口向檢測(cè)對(duì)端發(fā)送心跳消息為通過所述心 跳4企測(cè)網(wǎng)口和所述串口同時(shí)發(fā)送;判定所述心跳檢測(cè)端口未收到檢測(cè)對(duì)端的心跳響應(yīng)為當(dāng)所述心跳檢測(cè)網(wǎng) 口未收到4企測(cè)對(duì)端的心跳響應(yīng)時(shí),判斷所述串口的心跳4全測(cè)是否正常,如果所 述串口的心跳檢測(cè)不正常,則判定所述心跳檢測(cè)端口未收到檢測(cè)對(duì)端的心跳響 應(yīng)。
3、 如權(quán)利要求2所述的方法,其特征在于,所述心跳檢測(cè)網(wǎng)口未收到檢測(cè) 對(duì)端的心跳響應(yīng)的確定操作包括當(dāng)判定心跳檢測(cè)端口在當(dāng)前心跳超時(shí)時(shí)間內(nèi)未收到檢測(cè)對(duì)端的心跳響應(yīng) 時(shí),判定心跳超時(shí);當(dāng)心跳超時(shí)次數(shù)達(dá)到預(yù)設(shè)次數(shù)闊值,確定心跳檢測(cè)網(wǎng)口未 收到檢測(cè)對(duì)端的心跳響應(yīng);所述當(dāng)前心跳超時(shí)時(shí)間的設(shè)置為每次判定在當(dāng)前心跳超時(shí)時(shí)間內(nèi)收到檢 測(cè)對(duì)端的心跳響應(yīng)時(shí),將預(yù)設(shè)心跳超時(shí)時(shí)間作為下一次判斷是否心跳超時(shí)的當(dāng) 前心跳超時(shí)時(shí)間;每次出現(xiàn)心跳超時(shí),選擇不同于當(dāng)前心跳超時(shí)時(shí)間的自定義 心跳超時(shí)時(shí)間,作為下一次判斷是否心跳超時(shí)的當(dāng)前心跳超時(shí)時(shí)間。
4、 如權(quán)利要求3所述的方法,其特征在于,所述選擇不同于當(dāng)前心跳超時(shí)時(shí)間的自定義心跳超時(shí)時(shí)間為在預(yù)i殳范圍內(nèi)隨機(jī)選4奪自定義心跳超時(shí)時(shí)間;或者為在當(dāng)前心跳超時(shí)時(shí)間基礎(chǔ)上遞增,將遞增后的心跳超時(shí)時(shí)間作為 自定義心跳超時(shí)時(shí)間。
5、 如權(quán)利要求l所述的方法,其特征在于,所述選擇一個(gè)當(dāng)前沒有業(yè)務(wù)的 業(yè)務(wù)網(wǎng)口包括判斷是否存在當(dāng)前無業(yè)務(wù)的業(yè)務(wù)網(wǎng)口,如果是,則從當(dāng)前無業(yè) 務(wù)的業(yè)務(wù)網(wǎng)口中選擇一個(gè),作為選定的業(yè)務(wù)網(wǎng)口;否則,將預(yù)先選定的業(yè)務(wù)網(wǎng) 口作為選定的業(yè)務(wù)網(wǎng)口,將選定的業(yè)務(wù)網(wǎng)口上的業(yè)務(wù)遷移到自身的其他業(yè)務(wù)網(wǎng) 口上。
6、 如權(quán)利要求l所述的方法,其特征在于,所述確定檢測(cè)對(duì)端異常之后, 該方法進(jìn)一步包括判斷自身當(dāng)前是否有業(yè)務(wù)存在,如果是,則重啟檢測(cè)對(duì)端,接管所述檢測(cè) 對(duì)端的業(yè)務(wù);否則,等待一段預(yù)設(shè)時(shí)間后,重啟檢測(cè)對(duì)端,接管所述檢測(cè)對(duì)端 的業(yè)務(wù)。
7、 如權(quán)利要求6所述的方法,其特征在于,所述重啟檢測(cè)對(duì)端,接管所述 ;險(xiǎn)測(cè)對(duì)端的業(yè)務(wù)為先觸發(fā)重啟對(duì)端4乘作,再接管所述檢測(cè)對(duì)端的業(yè)務(wù)。
8、 一種心跳檢測(cè)設(shè)備,其特征在于,該設(shè)備包括心跳檢測(cè)單元、心跳檢測(cè) 端口單元和業(yè)務(wù)網(wǎng)口;所述心跳檢測(cè)單元,周期性地通過心跳檢測(cè)端口單元向檢測(cè)對(duì)端發(fā)送心跳 消息,.接收檢測(cè)對(duì)端的心跳響應(yīng);當(dāng)未通過所述心跳檢測(cè)端口單元收到檢測(cè)對(duì) 端的心跳響應(yīng)時(shí),選擇一個(gè)當(dāng)前沒有業(yè)務(wù)的業(yè)務(wù)網(wǎng)口,通過選定的業(yè)務(wù)網(wǎng)口向 所述檢測(cè)對(duì)端發(fā)送心跳消息;判斷是否通過選定的業(yè)務(wù)網(wǎng)口收到^r測(cè)對(duì)端的心 跳響應(yīng),如果是,則確定4全測(cè)對(duì)端正常;否則,確定4全測(cè)對(duì)端異常。所述心跳檢測(cè)端口單元,用于在所述心跳檢測(cè)單元的控制下,向檢測(cè)對(duì)端 發(fā)送心跳消息;將檢測(cè)對(duì)端返回的心跳響應(yīng)發(fā)送給所述心跳檢測(cè)單元;所述業(yè)務(wù)網(wǎng)口,用于在所述心跳片企測(cè)單元的控制下,向檢測(cè)對(duì)端發(fā)送心跳 消息;將檢測(cè)對(duì)端返回的心跳響應(yīng)發(fā)送給所述心跳檢測(cè)單元。
9、 如權(quán)利要求8所述的設(shè)備,其特征在于,所述心跳檢測(cè)端口單元包括心 跳沖全測(cè)網(wǎng)口和串口 ;所述心跳檢測(cè)單元包括心跳檢測(cè)網(wǎng)口控制模塊、串口控制模塊、業(yè)務(wù)網(wǎng)口控制模塊和對(duì)端狀態(tài)判斷模塊;所述心跳檢測(cè)網(wǎng)口控制模塊,用于控制所述心跳檢測(cè)網(wǎng)口周期性地向檢測(cè)對(duì)端發(fā)送心跳消息,判斷是否從心跳;險(xiǎn)測(cè)網(wǎng)口收到檢測(cè)對(duì)端的心跳響應(yīng),將判 斷結(jié)果發(fā)送給所述對(duì)端狀態(tài)判斷纟莫塊;所述串口控制模塊,用于在心跳檢測(cè)網(wǎng)口發(fā)送心跳消息的同時(shí),控制所述串口周期性地向檢測(cè)對(duì)端發(fā)送心跳消息,判斷是否從串口收到檢測(cè)對(duì)端的心跳 響應(yīng),將判斷結(jié)果發(fā)送給所述對(duì)端狀態(tài)判斷模塊;所述對(duì)端狀態(tài)判斷模塊,用于在根據(jù)接收自心跳檢測(cè)網(wǎng)口控制模塊和串口 控制才莫塊的判斷結(jié)果,確定所述心跳;f企測(cè)網(wǎng)口和所述串口均未收到才全測(cè)對(duì)端的 心跳響應(yīng)時(shí),通知業(yè)務(wù)網(wǎng)口控制模塊進(jìn)行心跳檢測(cè);接收業(yè)務(wù)網(wǎng)口控制模塊發(fā) 來的判斷結(jié)果,當(dāng)判斷結(jié)果顯示業(yè)務(wù)網(wǎng)口能夠收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí),確 定檢測(cè)對(duì)端正常;否則,確定檢測(cè)對(duì)端異常;所述業(yè)務(wù)網(wǎng)口控制模塊,用于在接收到通知時(shí),選擇一個(gè)當(dāng)前沒有業(yè)務(wù)的 業(yè)務(wù)網(wǎng)口 ,控制選定的業(yè)務(wù)網(wǎng)口向所述檢測(cè)對(duì)端發(fā)送心跳消息;判斷業(yè)務(wù)網(wǎng)口 是否收到檢測(cè)對(duì)端的心跳響應(yīng),將判斷結(jié)果發(fā)送給所述對(duì)端狀態(tài)判斷模塊。
10、 如權(quán)利要求9所述的設(shè)備,其特征在于,所述心跳檢測(cè)網(wǎng)口控制模塊 包括心跳消息收發(fā)子模塊和判斷子模塊;所述心跳消息收發(fā)子模塊,用于控制心跳檢測(cè)網(wǎng)口周期性地向檢測(cè)對(duì)端發(fā) 送心跳消息,從心跳檢測(cè)網(wǎng)口接收檢測(cè)對(duì)端返回的心跳響應(yīng);所述判斷子模塊,當(dāng)所述心跳消息收發(fā)子模塊在當(dāng)前心跳超時(shí)時(shí)間內(nèi)未收 到心跳響應(yīng)時(shí),判定心跳超時(shí);當(dāng)心跳超時(shí)次數(shù)達(dá)到預(yù)設(shè)次數(shù)閾值,確定心跳 檢測(cè)網(wǎng)口未收到檢測(cè)對(duì)端的心跳響應(yīng),此時(shí)將未收到檢測(cè)對(duì)端的心跳響應(yīng)作為 所述判斷結(jié)果發(fā)送給所述對(duì)端狀態(tài)判斷模塊;每次判定在當(dāng)前心跳超時(shí)時(shí)間到 達(dá)之前收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí),將預(yù)設(shè)心跳超時(shí)時(shí)間作為下一次判斷是否心跳超時(shí)的當(dāng)前心跳超時(shí)時(shí)間;每次出現(xiàn)心跳超時(shí),選擇不同于當(dāng)前心跳超時(shí) 時(shí)間的自定義心跳超時(shí)時(shí)間,作為下一次判斷是否心;兆超時(shí)的當(dāng)前心跳超時(shí)時(shí) 間。
11、 如權(quán)利要求10所述的設(shè)備,其特征在于,判斷子模塊進(jìn)一步用于,在 預(yù)設(shè)范圍內(nèi)隨機(jī)選擇自定義心跳超時(shí)時(shí)間,或者,在當(dāng)前心跳超時(shí)時(shí)間基礎(chǔ)上 遞增,將遞增后的心跳超時(shí)時(shí)間作為自定義心跳超時(shí)時(shí)間。
12、 如權(quán)利要求9所述的設(shè)備,其特征在于,所述業(yè)務(wù)網(wǎng)口控制模塊包括 選擇子模塊、業(yè)務(wù)暫停子模塊和控制子模塊;所述選擇子模塊,用于判斷所在設(shè)備是否存在當(dāng)前無業(yè)務(wù)的業(yè)務(wù)網(wǎng)口,如 果是,則從當(dāng)前無業(yè)務(wù)的業(yè)務(wù)網(wǎng)口中選擇一個(gè),將選定的業(yè)務(wù)網(wǎng)口通知給所述 控制字模塊;否則,通知業(yè)務(wù)暫停子模塊;所述業(yè)務(wù)暫停子模塊,用于在接收到通知時(shí),將預(yù)選選定的業(yè)務(wù)網(wǎng)口作為 選定的業(yè)務(wù)網(wǎng)口 ,將該選定的業(yè)務(wù)網(wǎng)口上的業(yè)務(wù)遷移到所在設(shè)備的其他業(yè)務(wù)網(wǎng) 口上,將選定的業(yè)務(wù)網(wǎng)口通知給所述控制字模塊;所述控制子模塊,用于在接收到通知時(shí),控制選定的業(yè)務(wù)網(wǎng)口向檢測(cè)對(duì)端 發(fā)送心跳消息;判斷是否從選定的業(yè)務(wù)網(wǎng)口收到檢測(cè)對(duì)端的心跳響應(yīng),將判斷 結(jié)果發(fā)送給所述對(duì)端狀態(tài)判斷模塊。
13、 如權(quán)利要求8所述的設(shè)備,其特征在于,該設(shè)備進(jìn)一步包括異常處理 單元,用于在所述心跳檢測(cè)單元確定片企測(cè)對(duì)端異常時(shí),判斷所在設(shè)備當(dāng)前是否 有業(yè)務(wù)存在,如果是,則重啟檢測(cè)對(duì)端,接管所述纟全測(cè)對(duì)端的業(yè)務(wù);否則,等 待一段預(yù)設(shè)時(shí)間后,重啟檢測(cè)對(duì)端,接管所述檢測(cè)對(duì)端的業(yè)務(wù)。
全文摘要
本發(fā)明公開了一種心跳檢測(cè)方法,應(yīng)用于具有業(yè)務(wù)網(wǎng)口的網(wǎng)絡(luò)設(shè)備中,該方法包括所述網(wǎng)絡(luò)設(shè)備周期性地通過心跳檢測(cè)端口向檢測(cè)對(duì)端發(fā)送心跳消息,接收所述檢測(cè)對(duì)端返回的心跳響應(yīng);當(dāng)所述心跳檢測(cè)端口未收到檢測(cè)對(duì)端的心跳響應(yīng)時(shí),選擇一個(gè)當(dāng)前沒有業(yè)務(wù)的業(yè)務(wù)網(wǎng)口,通過選定的業(yè)務(wù)網(wǎng)口向所述檢測(cè)對(duì)端發(fā)送心跳消息;判斷所述選定的業(yè)務(wù)網(wǎng)口是否收到檢測(cè)對(duì)端的心跳響應(yīng);如果是,則確定檢測(cè)對(duì)端正常;否則,確定檢測(cè)對(duì)端異常。本發(fā)明還公開了一種心跳檢測(cè)設(shè)備。使用本發(fā)明能夠提高對(duì)被檢測(cè)方狀態(tài)的判斷準(zhǔn)確程度。
文檔編號(hào)H04L12/26GK101345663SQ20081011845
公開日2009年1月14日 申請(qǐng)日期2008年8月22日 優(yōu)先權(quán)日2008年8月22日
發(fā)明者景冬生 申請(qǐng)人:杭州華三通信技術(shù)有限公司