專利名稱:一種雙機熱備份方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及網絡應用技術領域,特別是涉及一種基于時效輸出緩存的雙機熱備份 方法和系統(tǒng)。
背景技術:
隨著整個社會的信息化程度不斷提高,社會生活逐漸與計算機系統(tǒng)密不可分。人 們越來越關心計算機系統(tǒng)以及相關應用的可用性。所謂可用性,一般定義為計算機系統(tǒng)正 常工作時間與計算機系統(tǒng)總運行時間之比。對于某些執(zhí)行關鍵使命的計算機系統(tǒng),要求系 統(tǒng)能夠長時間穩(wěn)定運行,即具備365 X M不停頓運行的能力。對于這類系統(tǒng),暫時的停機都 會導致數(shù)據的丟失和災難性的后果。因此采用主備用系統(tǒng)通過冗余的部件和專門的軟件, 能夠在單一系統(tǒng)出現(xiàn)單點故障時降級運行,大大提高了系統(tǒng)的可用性。目前組建主備用系統(tǒng)有多種技術方案。從備份的規(guī)模來講有單機備份、雙機備份 和異地雙機備份。從后備系統(tǒng)的準備程度來講,有冷備份、溫備份和熱備份。從系統(tǒng)的工作 方式來講,主要有主從方式以及雙機雙工方式。其中,目前應用最廣的是雙機熱備份系統(tǒng)。雙機熱備份技術,概括地說,就是在系統(tǒng)運行過程中使用兩臺服務器,裝載完全相 同的系統(tǒng)和數(shù)據,通過即時備份數(shù)據的方式,實現(xiàn)系統(tǒng)的高可用性。其基本原理是這兩臺服 務器,一臺處于active狀態(tài),稱為主用機,一臺處于standby狀態(tài),稱為備用機。在正常情 況下,由處于active狀態(tài)的主用機提供服務。備用機不斷檢測主用機狀態(tài),備用機檢測到 主用機出現(xiàn)物理異常或接收到主用機的切換命令時,進行主備切換。而整個過程無需人工 干預,在短時間內自動完成服務接管。對于雙機熱備份技術而言,保證運行時數(shù)據的同步是 至關重要的。目前,雙機數(shù)據同步的主要解決方案包括以下幾種基于共享磁盤或磁盤陣列的 數(shù)據同步;基于第三方備份軟件的數(shù)據同步;基于網絡通信的數(shù)據同步。采用基于共享磁盤或磁盤陣列的數(shù)據同步方案的雙機熱備份技術中,主用機和備 用機使用同一個存儲設備存儲數(shù)據。這個共享存儲設備可以是RAID (磁盤陣列),也可以是 NAS (網絡附屬存儲器)。在正常情況下主用機將數(shù)據庫放到共享存儲器上,當主服務發(fā)生 故障時,備用機訪問同樣的設備,讀寫相同的數(shù)據。這種方式不存在數(shù)據滯后的問題,適合 數(shù)據量大的場合,且通常會在共享存儲器上利用數(shù)據壓縮卡來節(jié)省存儲空間。但是,其存在 以下缺陷,第一,工作存儲器方案配置復雜,需要外部存儲器的支持;第二,共享存儲器方案 存在單點故障問題,即一旦存儲器出現(xiàn)故障,系統(tǒng)將無法繼續(xù)提供服務。采用基于第三方備份軟件的數(shù)據同步方案的雙機熱備份技術中,主用機和備用機 的數(shù)據都放入第三方備份軟件中進行保存,使用備份軟件自身提供的備份功能,可以保證 主備系統(tǒng)中的數(shù)據一致性。其優(yōu)點是處理邏輯簡單。但是,存在以下缺點,第一,使用第三 方備份軟件,成本高昂,而且操作系統(tǒng)兼容性差;第二,處理效率低,應用復雜。采用基于網絡通信的數(shù)據同步方案的熱備份技術中,正常情況下,主用機對外提 供服務,備用機上的服務進程沒有啟動,不對外提供服務。兩臺機器中間有一條單獨的網絡電纜,主用機上的數(shù)據同步軟件不時將主用機的配置數(shù)據通過該網絡電纜發(fā)送給備用機, 使得兩者的配置達到一致。一旦主用機發(fā)生故障,它將放棄其網絡地址,而備用機會啟用網 口,啟動服務進程,利用相同的配置繼續(xù)向外提供服務。這種方案的缺點是帶來大量無用的 傳輸,不僅會加重CPU和網絡的負荷,而且長時間不斷地讀寫數(shù)據,會縮短硬盤的壽命;另 外,單純依賴軟件實現(xiàn)的數(shù)據同步處理能力不高。
發(fā)明內容
本發(fā)明的目的在于提供一種雙機熱備份方法和系統(tǒng)。其針對現(xiàn)有雙機熱備份技術 的不足,提出一種基于時效輸出緩存的雙機熱備份技術,具備網絡適應性和擴展性,在保證 網絡應用高處理效率和零丟包率的同時,避免了現(xiàn)有技術方案帶來的缺陷和不足。為實現(xiàn)本發(fā)明的目的而提供的一種雙機熱備份方法,采用時效輸出緩存與集線器 配合,在正常情況下,主用機接收集線器發(fā)送的數(shù)據包、并進行處理以及回注過程;備用機 處于standby狀態(tài),緩存集線器首次廣播的數(shù)據包;同時當收到主用機回注的數(shù)據包時,緩 存命中成功,緩存刪除;在主用機工作正常但數(shù)據包回注異常情況下,主用機流量回注失敗,備用機的緩 存僅僅緩存了集線器首次廣播的數(shù)據包,時效輸出緩存通過線程輪詢的策略回注此數(shù)據 包,保證網絡應用處理丟包率為零;在主用機工作異常情況下,備用機實時檢測到主用機失敗,備用機完成切換過程, 備用機接替主用機繼續(xù)工作。所述方法,包括下列步驟步驟100.所述集線器從數(shù)據源接收一個網絡數(shù)據包,將此時的數(shù)據包的狀態(tài)標 記為 PKT_0RIGIN ;步驟200,集線器判斷所述數(shù)據包是否是以太網類型,若是,則廣播所述數(shù)據包; 否則,丟棄所述數(shù)據包;步驟300.主用機和備用機的管理調度模塊分別接收所述數(shù)據包,并將所述數(shù)據 包的狀態(tài)標記為H(T_BCAST_F ;所述主用機執(zhí)行步驟400,所述備用機執(zhí)行步驟600 ;步驟400.所述主用機的管理調度模塊對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所 述數(shù)據包的狀態(tài)為H(T_BCAST_F,則執(zhí)行步驟500 ;否則,丟棄所述數(shù)據包;步驟500.用戶程序執(zhí)行相關業(yè)務的處理,所述管理調度模塊判斷是否回注所述 數(shù)據包,若是,所述數(shù)據包被回注到集線器,集線器進行第二次數(shù)據包廣播,將數(shù)據包狀態(tài) 被標記為H(T_BCAST_S,返回步驟300 ;否則,結束備份;步驟600.所述備用機的管理調度模塊對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所 述數(shù)據包的狀態(tài)為H(T_BCAST_F或H(T_BCAST_S,則執(zhí)行步驟700 ;否則,丟棄所述數(shù)據包;步驟700.所述備用機的時效輸出緩存模塊提取所述數(shù)據包的信息,判斷所述數(shù) 據包是否命中緩存,若是,則刪除緩存數(shù)據包;否則,在緩存中添加所述數(shù)據包,執(zhí)行步驟 800 ;步驟800.所述備用機進行緩存時效性的驗證;判斷是否回注所述數(shù)據包,若是, 則所述數(shù)據包被回注到集線器,返回步驟300 ;否則,繼續(xù)進行所述備用機進行緩存時效性 的驗證。
所述時效輸出緩存模塊的數(shù)據結構采用哈希表結合雙向時間鏈表的方式實現(xiàn),當 采用固定內存管理策略時,將所述哈希表中的哈希結點以及雙向時間鏈表結點放置在固定 內存管理的LRU雙向鏈表中。當采用可擴展內容管理策略時,時效緩存模塊實時統(tǒng)計已分配緩存的利用率,當 緩存利用率超過65 %時,再次分配緩存。所述哈希表的關鍵碼采用了以下七元組的形式,{源IP地址;目的IP地址;源端 口 ;目的端口 ;協(xié)議;IPID ;IP分片位移},其中,IPID字段為IP數(shù)據報文的唯一標志;IP分 片位移字段,用于當數(shù)據包是IP分片數(shù)據包時,區(qū)分某個特定的數(shù)據包在分片序列中的位置。所述步驟700,包括下列步驟步驟710.所述時效輸出緩存模塊提取所述數(shù)據包的七元組信息{源IP地址;目 的IP地址;源端口 ;目的端口 ;協(xié)議;IPID;IP分片位移};步驟720.根據所述七元組信息查找所述時效輸出緩存模塊中的哈希表,判斷所 述數(shù)據包是否命中,若是,則執(zhí)行步驟730 ;否則,執(zhí)行步驟740 ;步驟730.刪除所述哈希表的相應表項;步驟740.在所述哈希表中添加所述數(shù)據包的表項。步驟800中,所述緩存時效性驗證,是采用線程定期輪詢的方式進行,預定義緩存 失效時間T,假設數(shù)據包初次緩存添加時間為Tl,線程輪詢到此數(shù)據包的時間點為T2。如 果T2-T1 > T,則認定緩存時效性匹配失敗,應該回注此數(shù)據包;否則認定數(shù)據包在緩存中 仍然有效,不進行回注。所述時效輸出緩存模塊的數(shù)據結構,采用可擴展大小的緩存,時效緩存模塊實時 統(tǒng)計已分配緩存的利用率,當緩存利用率超過65%時,再次分配緩存。所述雙機熱備份方法中,還采用了心跳機制來進行主用機的存活性驗證,主用機 上的心跳程序周期性地發(fā)送狀態(tài)消息,以表示本機的當前狀態(tài);備用機上的心跳程序會實 時地監(jiān)聽主用機發(fā)送的狀態(tài)消息;當主用機出現(xiàn)故障時,備用機在設定的時間間隔內沒有 收到主用機的狀態(tài)消息,就認為主用機已經失效。所述心跳程序實現(xiàn)的是接收者發(fā)起的方式,并且通過在計時器時間內限制接收者 請求重傳消息包的次數(shù),來限制網絡通信流量。所述心跳程序采用應急呼喚信號驗證的方式,當?shù)谝淮纬瑫r沒有收到心跳信號 時,即向主用機發(fā)出一個緊急的呼喚信息,主用機應該優(yōu)先響應此信息回送一個心跳,如果 主用機第二個時間間隔內還沒有收到心跳,才進行服務和數(shù)據接管。為實現(xiàn)本發(fā)明的目的,還提供一種雙機熱備份系統(tǒng),包括主用機、備用機、集線 器,其中所述集線器從數(shù)據源接收一個網絡數(shù)據包,將此時的數(shù)據包的狀態(tài)標記為H(T_ ORIGIN;判斷所述數(shù)據包是否是以太網類型,若是,則廣播所述數(shù)據包;否則,丟棄所述數(shù) 據包;在正常情況下,主用機接收集線器發(fā)送的數(shù)據包、并進行處理以及回注過程;備用 機處于standby狀態(tài),緩存集線器首次廣播的數(shù)據包;同時當收到主用機回注的數(shù)據包時, 緩存命中成功,緩存刪除;
在主用機工作正常但數(shù)據包回注異常情況下,主用機流量回注失敗,備用機的緩 存僅僅緩存了集線器首次廣播的數(shù)據包,時效輸出緩存通過線程輪詢的策略回注此數(shù)據 包,保證網絡應用處理丟包率為零;在主用機工作異常情況下,備用機實時檢測到主用機失敗,備用機完成切換過程, 備用機接替主用機繼續(xù)工作。所述主用機和備用機,都包括用戶程序模塊、管理調度模塊、時效輸出緩存模塊, 其中所述用戶程序模塊,用于從所述集線器接收網絡數(shù)據包,執(zhí)行相關業(yè)務的處理;所述管理調度模塊,用于接收所述數(shù)據包,完成用戶程序接入并進行參數(shù)管理以 及相關策略性調度;主用機的所述管理調度模塊,對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所述數(shù)據包 的狀態(tài)為H(T_BCAST_F,則所述管理調度模塊判斷是否回注所述數(shù)據包,若是,所述數(shù)據包 被回注到集線器,集線器進行第二次數(shù)據包廣播,將數(shù)據包狀態(tài)被標記為H(T_BCAST_S ;否 則,結束備份;若所述數(shù)據包的狀態(tài)不是KT_BCAST_F,則丟棄所述數(shù)據包;備用機的所述管理調度模塊對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所述數(shù)據包的 狀態(tài)為H(T_BCAST_F或H(T_BCAST_S,則所述備用機的時效輸出緩存模塊提取所述數(shù)據包 的信息,判斷所述數(shù)據包是否命中緩存,若是,則刪除緩存數(shù)據包;否則,在緩存中添加所述 數(shù)據包,進行緩存時效性的驗證;判斷是否回注所述數(shù)據包,若是,則所述數(shù)據包被回注到 集線器;否則,繼續(xù)進行緩存時效性的驗證;若所述數(shù)據包的狀態(tài)不是130_80431^7或冊乙 BCAST_S,則丟棄所述數(shù)據包。所述時效輸出緩存模塊的數(shù)據結構采用哈希表結合雙向時間鏈表的方式實現(xiàn),當 采用固定內存管理策略時,將所述哈希表中的哈希結點以及雙向時間鏈表結點放置在固定 內存管理的LRU雙向鏈表中。所述哈希表的關鍵碼采用了以下七元組的形式,{源IP地址;目的IP地址;源端 口 ;目的端口 ;協(xié)議;IPID ;IP分片位移},其中,IPID字段為IP數(shù)據報文的唯一標志;IP分 片位移字段,用于當數(shù)據包是IP分片數(shù)據包時,區(qū)分某個特定的數(shù)據包在分片序列中的位置。所述備用機的時效輸出緩存模塊提取所述數(shù)據包的七元組信息{源IP地址;目 的IP地址;源端口 ;目的端口 ;協(xié)議;IPID;IP分片位移};根據所述七元組信息查找所述 時效輸出緩存模塊中的哈希表,判斷所述數(shù)據包是否命中,若是,則刪除所述哈希表的相應 表項;否則,在所述哈希表中添加所述數(shù)據包的表項。所述緩存時效性驗證,是采用線程定期輪詢的方式進行,預定義緩存失效時間T, 假設數(shù)據包初次緩存添加時間為Tl,線程輪詢到此數(shù)據包的時間點為T2。如果T2-T1 > T, 則認定緩存時效性匹配失敗,應該回注此數(shù)據包;否則認定數(shù)據包在緩存中仍然有效,不進 行回注。所述時效輸出緩存模塊的數(shù)據結構,采用可擴展大小的緩存,時效緩存模塊實時 統(tǒng)計已分配緩存的利用率,當緩存利用率超過65%時,再次分配緩存。雙機熱備份系統(tǒng)中,所述主用機和備用機,還分別包括主用機的心跳模塊,用來進行主用機的存活性驗證,主用機上的心跳程序周期性地發(fā)送狀態(tài)消息,以表示本機的當前狀態(tài);備用機的心跳模塊,用于實時地監(jiān)聽主用機發(fā)送的狀態(tài)消息;當主用機出現(xiàn)故障 時,備用機在設定的時間間隔內沒有收到主用機的狀態(tài)消息,就認為主用機已經失效。所述心跳模塊實現(xiàn)的是接收者發(fā)起的方式,并且通過在計時器時間內限制接收者 請求重傳消息包的次數(shù),來限制網絡通信流量。所述心跳模塊采用應急呼喚信號驗證的方式,當?shù)谝淮纬瑫r沒有收到心跳信號 時,即向主用機發(fā)出一個緊急的呼喚信息,主用機應該優(yōu)先響應此信息回送一個心跳,如果 主用機第二個時間間隔內還沒有收到心跳,才進行服務和數(shù)據接管。本發(fā)明的有益效果在于本發(fā)明的雙機熱備份方法和系統(tǒng),充分考慮了網絡應用數(shù)據包級別備份的需求, 而且能夠根據實際網絡部署環(huán)境進行策略調整,具有良好的靈活性和擴展性。其主要包括 時效輸出緩存模塊、雙機心跳模塊以及管理調度模塊,根據以上模塊的應用,實現(xiàn)了在兼容 流量回注功能的同時,保證雙機工作模式切換時網絡應用丟包率為零??蛇m用于對高可用 性要求比較高的網絡應用,如QOS保障系統(tǒng),入侵檢測系統(tǒng)等。
圖1是本發(fā)明的一種雙機熱備份方法的步驟流程圖;圖2是本發(fā)明中主用機的時效輸出緩存模塊判斷數(shù)據包是否命中緩存的步驟流 程圖;圖3是本發(fā)明的一種雙機熱備份系統(tǒng)的結構示意圖;圖4是本發(fā)明的一種雙機熱備份系統(tǒng)的一實施例的示意圖。
具體實施例方式為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對 本發(fā)明的一種雙機熱備份方法和系統(tǒng)進行進一步詳細說明。應當理解,此處所描述的具體 實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明的一種雙機熱備份方法和系統(tǒng)。采用了軟硬件結合的方式,在軟件方面,采 用時效輸出緩存提供數(shù)據包緩存功能,并通過線程輪詢的方式定期回注緩存匹配失敗的數(shù) 據包,通過時效輸出緩存提供了數(shù)據包級別的網絡應用備份。在硬件方面,引入了 OSI第一 層交換設備集線器,集線器屬于純硬件網絡底層設備,它發(fā)送數(shù)據時都是沒有針對性的,而 是采用廣播方式發(fā)送。集線器的應用避免了單純依賴軟件進行數(shù)據同步的缺點,其數(shù)據傳 輸效率相對較高,可靠性強。下面結合上述目標詳細說明本發(fā)明的雙機熱備份方法,其中時效緩存模塊與集 線器配合,在正常情況下,主用機接收集線器發(fā)送的數(shù)據包、并進行處理以及回注過程;備 用機處于standby狀態(tài),緩存集線器首次廣播的數(shù)據包;同時當收到主用機回注的數(shù)據包 時,緩存命中成功,緩存刪除。在主用機工作正常但數(shù)據包回注異常情況下,主用機流量回 注失敗,備用機的緩存僅僅緩存了集線器首次廣播的數(shù)據包,時效緩存模塊通過線程輪詢 的策略回注此數(shù)據包,保證網絡應用處理丟包率為零。在主用機工作異常情況下,備用機實 時檢測到主用機失敗,備用機完成切換過程,接替主用機繼續(xù)工作。
10步驟流程圖,如圖1所示,所述方法,包括 下列步驟步驟100.從數(shù)據源接收一個網絡數(shù)據包,此時的數(shù)據包的狀態(tài)被看做為H(T_ ORIGIN ;步驟200,集線器判斷所述數(shù)據包是否是以太網類型,若是,則廣播所述數(shù)據包; 否則,丟棄所述數(shù)據包;較佳地,本發(fā)明引入了 OSI第一層交換設備集線器,集線器屬于純硬件網絡底層 設備,基本上不具有類似于交換機的“智能記憶”能力和“學習“能力。它也不具備交換機 所具有的MAC地址表,所以它發(fā)送數(shù)據時都是沒有針對性的,而是采用廣播方式發(fā)送。也就 是說當它要向某節(jié)點發(fā)送數(shù)據時,不是直接把數(shù)據發(fā)送到目的節(jié)點,而是把數(shù)據包發(fā)送到 與集線器相連的所有節(jié)點。集線器的應用避免了單純依賴軟件進行數(shù)據同步的缺點,其數(shù) 據傳輸效率相對較高,可靠性強。本發(fā)明中的時效輸出緩存模塊以數(shù)據包為處理單元,該數(shù)據包是指網絡應用對應 的外部接口數(shù)據源,其特性為以太網數(shù)據包類型。步驟300.主用機和備用機的管理調度模塊分別接收所述數(shù)據包,并將所述數(shù)據 包的狀態(tài)標記為H(T_BCAST_F ;所述主用機執(zhí)行步驟400,所述備用機執(zhí)行步驟600 ;步驟400.所述主用機的管理調度模塊對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所 述數(shù)據包的狀態(tài)為H(T_BCAST_F,則執(zhí)行步驟500 ;否則,丟棄所述數(shù)據包;較佳地,為了在內部處理中對數(shù)據包的狀態(tài)進行明確,時效輸出緩存模塊將數(shù)據 包劃分為以下狀態(tài),分別為原始數(shù)據報文,集線器首次廣播報文,集線器第二次廣播報文以 及其他狀態(tài)報文。分別采用 PKT_0RIGIN,PKT_BCAST_F, PKT_BCAST_S,PKT_0THERS 來對以上 狀態(tài)進行標識。原始數(shù)據報文H(TJ)RIGIN指數(shù)據源接入的報文;由于集線器的廣播功能, 集線器會對原始數(shù)據報文進行廣播,首次廣播后的報文即集線器首次廣播報文H(T_BCAST_ F;主用機上的管理調度模塊對集線器首次廣播報文進行處理,會將需要回注的數(shù)據報文重 新返回給集線器,集線器會再次廣播該報文,即集線器第二次廣播報文H(T_BCAST_S,PKT_ OTHERS標識除此狀態(tài)之外的報文類型。步驟500.用戶程序執(zhí)行相關業(yè)務的處理,管理調度模塊判斷是否回注所述數(shù)據 包,若是,所述數(shù)據包被回注到集線器,集線器進行第二次數(shù)據包廣播,此時的數(shù)據包狀態(tài) 被標記為H(T_BCAST_S,返回步驟300 ;否則,結束備份;步驟600.所述備用機的管理調度模塊對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所 述數(shù)據包的狀態(tài)為H(T_BCAST_F或H(T_BCAST_S,則執(zhí)行步驟700 ;否則,丟棄所述數(shù)據包;所述時效輸出緩存模塊是本發(fā)明的核心,在正常情況下,主用機的時效輸出緩存 模塊處于非使能狀態(tài),備用機的時效輸出緩存模塊處于使能狀態(tài),同時接收并緩存主用機 傳送過來的數(shù)據包。步驟700.所述主用機的時效輸出緩存模塊提取所述數(shù)據包的信息,判斷所述數(shù) 據包是否命中緩存,若是,則刪除緩存數(shù)據包;否則,在緩存中添加所述數(shù)據包,執(zhí)行步驟 800 ;較佳地,所述時效輸出緩存模塊的數(shù)據結構采用哈希表結合雙向時間鏈表的方式 實現(xiàn)。雙向時間鏈表是時效輸出緩存模塊的核心組成部分,用來進行時效性驗證;對于時效輸出緩存,有兩種內存管理方式,即固定內存管理及可擴展內存管理,當采用固定內存管理 策略時,其將哈希表中的哈希結點以及雙向時間鏈表結點放置在固定內存管理的LRU雙向 鏈表中。在哈希表中,采用桶內鏈表的方法解決沖突。哈希表,是根據關鍵碼值(Keyvalue) 而直接進行訪問的數(shù)據結構。它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快 查找的速度。這個映射函數(shù)叫做散列函數(shù),存放記錄的數(shù)組叫做哈希表。采用哈希表結構 使數(shù)據包查找的時間復雜度為常數(shù)。同時,在TCP/IP協(xié)議棧中,如果數(shù)據包過大,網絡層會 對數(shù)據包進行分片處理,為了使本發(fā)明可以兼容對IP分片數(shù)據包的處理,哈希表的關鍵碼 采用了以下七元組的形式,即{源IP地址;目的IP地址;源端口 ;目的端口 ;協(xié)議;IPID;IP 分片位移}。其中,IPID字段為IP數(shù)據報文的唯一標志;當數(shù)據包是IP分片數(shù)據包時,為 了區(qū)分某個特定的數(shù)據包在分片序列中的位置,本發(fā)明引入了 IP分片位移字段。所述時效輸出緩存模塊對于數(shù)據包的處理策略分為緩存添加以及緩存刪除兩種。 對于外部數(shù)據源引入的數(shù)據包,備用機都采取緩存添加策略,將數(shù)據源發(fā)送的數(shù)據包進行 緩存;對于集線器將主用機回流的數(shù)據包進行廣播,所有備用機會收到主用機回流的數(shù)據 包,備用機采用緩存刪除策略,緩存刪除策略的執(zhí)行依據是根據{源IP地址;目的IP地址; 源端口 ;目的端口 ;協(xié)議;IPID;IP分片位移}七元組的命中成功來確定。圖2是本發(fā)明中主用機的時效輸出緩存模塊判斷數(shù)據包是否命中緩存的步驟流 程圖,如圖2所示,所述步驟700,包括下列步驟步驟710.所述時效輸出緩存模塊提取所述數(shù)據包的七元組信息{源IP地址;目 的IP地址;源端口 ;目的端口 ;協(xié)議;IPID;IP分片位移};步驟720.根據所述七元組信息查找所述時效輸出緩存模塊中的哈希表,判斷所 述數(shù)據包是否命中,若是,則執(zhí)行步驟730 ;否則,執(zhí)行步驟740 ;步驟730.刪除所述哈希表的相應表項;步驟740.在所述哈希表中添加所述數(shù)據包的表項。步驟800.所述備用機進行緩存時效性的驗證;判斷是否回注所述數(shù)據包,若是, 則所述數(shù)據包被回注到集線器,返回步驟300 ;否則,繼續(xù)進行所述備用機進行緩存時效性 的驗證。所述緩存時效性驗證,是采用線程定期輪詢的方式進行,具體實施方式
為預定義 緩存失效時間T,假設數(shù)據包初次緩存添加時間為Tl,線程輪詢到此數(shù)據包的時間點為T2。 如果T2-T1 > T,則認定緩存時效性匹配失敗,應該回注此數(shù)據包;否則認定數(shù)據包在緩存 中仍然有效,不進行回注。所述時效輸出緩存模塊通過以上數(shù)據結構、緩存策略以及發(fā)送策略的設計,可以 實現(xiàn)數(shù)據包級別的應用備份。在本發(fā)明的雙機熱備份方法中,采用管理調度模塊負責對用戶程序接入進行制 定,運行參數(shù)管理以及策略性調度。所述用戶程序接入的制定是指在管理調度模塊中指定用戶程序接入模塊為用戶 程序接入提供標準化流程及配置。所述用戶程序接入模塊具體包括緩存處理接口、主用機 存活性驗證接口和工作模式切換接口等。各個接口分別提供“注冊初始化”和“注銷”接口 供應用來調用。
所述運行參數(shù)管理是指在本發(fā)明中,各個模塊相關的運行情況可以進行參數(shù)化, 通過在不同的應用場景配置不同的運行參數(shù),可以提供相關軟件模塊的適應性和可擴展 性。詳細的運行參數(shù)指標包括緩存預分配大小,緩存遍歷間隔,心跳間隔等。本發(fā)明中,所述時效緩存模塊為了滿足不同的應用場景,分別提出了基于固定緩 存的LRU機制以及基于可擴展內存的機制。相關策略的采用由管理調度模塊來統(tǒng)一支配。所述策略性調度根據時效輸出緩存模塊的機制,包括二種規(guī)則(1)基于固定緩存LRU機制的緩存調度策略(2)基于可擴展內存的緩存調度策略所述基于固定緩存LRU機制的緩存調度策略,其特點為使用LRU機制淘汰最近最 少使用的散列節(jié)點,避免了過多的緩存占用,避免了使用定時器進行超時檢測所付出的代 價。散列節(jié)點和LRU鏈表節(jié)點存在一一對應關系。散列節(jié)點根據在LRU雙向鏈表中所處位置的不同,分為以下四種狀態(tài),空閑狀 態(tài)(STATE_IDLE)節(jié)點未被使用,位于內存池,初始化時總數(shù)為Μ。LRU雙向鏈表頭狀態(tài) (STATE_HEAD)最近被引用的那個節(jié)點,數(shù)目為1個。LRU雙向鏈表尾狀態(tài)(STATE_TAIL) 很久沒有被引用的節(jié)點,占鏈表總數(shù)X%。LRU雙向鏈表中狀態(tài)(STATE_MIDDLE):介于最 近被引用的那個節(jié)點和很久沒被引用節(jié)點之間的鏈表節(jié)點,當內存池中的節(jié)點全部被分配 時,鏈表中節(jié)點數(shù)目為Μ* (1-X/100)-1個。初始化時所有節(jié)點均位于內存池中,處于空閑狀態(tài);當新接收一個數(shù)據包時,系統(tǒng) 從內存池申請一個空閑節(jié)點,處理好映射關系后插入到緩存哈希表,同時插入到LRU雙向 鏈頭部,節(jié)點從空閑狀態(tài)轉換成鏈表頭狀態(tài);在緩存哈希表中的節(jié)點,一旦長時間未被引 用,將會隨著新節(jié)點不斷插入LRU雙向鏈表頭,從鏈表頭狀態(tài)轉換為鏈表中狀態(tài),進一步還 將轉換為鏈表尾狀態(tài);同樣的,一旦緩存哈希表表中的節(jié)點被引用到,該映射節(jié)點將立即插 入到LRU雙向鏈表頭部,不管其本來的狀態(tài)是在鏈表中還是鏈表尾;當內存池沒有空閑節(jié) 點時,接入點將把尾部節(jié)點(即占鏈表總數(shù)的節(jié)點)從緩存哈希表和LRU雙向鏈表刪 除,歸入到內存池,節(jié)點重新變?yōu)榭臻e狀態(tài)。例如在內存中申請10個固定節(jié)點的內存區(qū)域,初始化時10個節(jié)點都處于空閑狀 態(tài),當節(jié)點1被引用時,節(jié)點1被插入到鏈表頭,進入鏈表頭狀態(tài);當節(jié)點2被引用時,節(jié)點2 被插入到鏈表頭,進入鏈表頭狀態(tài),節(jié)點1進入鏈表中狀態(tài);依次類推,當節(jié)點3被引用時, 節(jié)點3被插入到鏈表頭,進入鏈表頭狀態(tài),鏈表狀態(tài)為3- > 2- > 1 ;依次類推,引用10個 節(jié)點時,鏈表狀態(tài)為10- > 9- > 8- > 7- > 6- > 5- > 4- > 3- > 2- > 1 ;此時,如果節(jié) 點4被引用,則鏈表狀態(tài)轉換為4- > 10- > 9- > 8- > 7- > 6- > 5- > 3- > 2- > 1 ;當 仍然需要引用內存節(jié)點時,由于節(jié)點已經都被使用,所以需要進行LRU淘汰,淘汰的原則是 尾部淘汰(例如20% ),鏈表狀態(tài)為4- > 10- > 9- > 8- > 7- > 6- > 5- > 3,此時被淘 汰的1和2進入空閑狀態(tài),可供下次引用使用。所述基于可擴展內存的緩存調度策略,其特點在于所述時效輸出緩存模塊使用可 擴展大小的緩存。時效緩存模塊實時統(tǒng)計已分配緩存的利用率,當緩存利用率超過65%時, 再次分配緩存。該策略適合于網絡數(shù)據包分布較廣,網絡流速較高的應用場景中。較佳地,在本發(fā)明的雙機熱備份方法中,還采用了心跳機制來進行主用機的存活 性驗證,心跳機制設計的目地是保證主用機和備用機之間靈敏的存活性感知。主用機上的心跳程序周期性地發(fā)送狀態(tài)消息,以表示本機的當前狀態(tài)。備用機上的心跳程序會實時地 監(jiān)聽主用機發(fā)送的狀態(tài)消息。當主用機出現(xiàn)故障時,備用機在設定的時間間隔內沒有收到 主用機的狀態(tài)消息,就認為主用機已經失效。較佳地,由于主備用機之間可能會出現(xiàn)顛簸現(xiàn)象,主用機有可能會因忙碌等原因, 出現(xiàn)“假死”現(xiàn)象,即長時間不發(fā)出心跳信號。如果備用機一旦聽不到主用機的心跳信號, 就馬上接管主用機的工作,則可能導致“顛簸”現(xiàn)象,則主用機和備用機頻繁出現(xiàn)交接,造成 服務中斷。因此,本發(fā)明采用接收者發(fā)起的方式來保證可靠消息傳輸,備用機設有一個緩沖 窗口,當?shù)谝淮纬瑫r沒有收到心跳信號時,即向主用機發(fā)出一個緊急的呼喚信息,主用機應 該優(yōu)先響應此信息回送一個心跳。如果備用機第二個時間間隔內還沒有收到心跳,才進行 服務接管。另外,為了盡可能不激活備用機,主用機在發(fā)現(xiàn)某些服務不正常時應嘗試自己恢 復這些服務,只有當恢復無效時才停止發(fā)送心跳來激活備用機。另外,心跳模塊還通過在計時器時間內限制接收者請求重傳消息包的次數(shù),來限 制網絡通信流量。作為一種可實施方式,采用心跳機制的心跳模塊包含多個進程,分別為主狀態(tài)進 程、FIFO進程、心跳介質讀進程、心跳介質寫進程。其中主狀態(tài)進程是核心進程,同時是其 他三個進程的父進程,其功能主要是定期發(fā)送心跳信號;讀取心跳信號并進行處理;處理 各個管道的輸入。FIFO進程是主狀態(tài)進程的子進程,其功能主要是讀取用戶程序輸 入,并發(fā)送到FIFO管道上。心跳介質寫進程是主狀態(tài)進程的R)rk子進程,其功能主要是 讀取通訊管道上的輸入;通過心跳鏈路plug in模塊進行節(jié)點間通信。心跳介質讀進程是 主狀態(tài)進程的i^ork子進程,其功能主要是讀取心跳介質上的消息,將消息放置在通訊管 道上。較佳地,由于網絡負載不均以及UDP心跳協(xié)議的不可靠性,主備用機可能在響應 較高網絡負載時過于“忙碌”,暫時無法處理心跳信號,此時極有可能出現(xiàn)主備用機之間的 丟包或顛簸現(xiàn)象。為了實現(xiàn)消息包可靠傳輸,心跳程序實現(xiàn)的是接收者發(fā)起的方式,并且通 過在計時器時間內限制接收者請求重傳消息包的次數(shù),來限制網絡通信流量。為了防止顛 簸現(xiàn)象,本發(fā)明采用應急呼喚信號驗證的方式來解決此問題,當?shù)谝淮纬瑫r沒有收到心跳 信號時,即向主用機發(fā)出一個緊急的呼喚信息,主用機應該優(yōu)先響應此信息回送一個心跳。 如果主用機第二個時間間隔內還沒有收到心跳,才進行服務和數(shù)據接管。所述心跳模塊將節(jié)點的狀態(tài)劃分為以下幾種,當心跳系統(tǒng)啟動時,節(jié)點處于INIT 狀態(tài),主狀態(tài)進程啟動后,節(jié)點進入UP狀態(tài)。節(jié)點接收到兩個節(jié)點的狀態(tài)信息后,進入 ACTIVE狀態(tài)。如果節(jié)點在deadtime時間間隔內,沒有接收到對方節(jié)點的狀態(tài)信息,則認為 對方節(jié)點死亡,進入DEAD狀態(tài)。所述心跳模塊的節(jié)點死亡判斷規(guī)則如下主狀態(tài)進程使用本地時間記錄獲得節(jié)點 狀態(tài)信息的時間。每當主狀態(tài)進程獲得節(jié)點狀態(tài)信息,主狀態(tài)進程使用當前時間更新相應 節(jié)點的時間記錄TL。主狀態(tài)進程利用時間記錄判定節(jié)點是否失效。使用公式T = TC-TD計 算出可以判定節(jié)點死亡的時間值T,其中TC表示當前時間,TD表示可以認定節(jié)點死亡的時 間間隔。如果TL不小于T,認為節(jié)點正常,否則認定節(jié)點已經死亡。也就是說,如果節(jié)點在 deadtime內沒有接收到另一個節(jié)點發(fā)送來的狀態(tài)信息,節(jié)點判定另一個節(jié)點失效。相應于本發(fā)明的一種雙機熱備份方法,還提供一種雙機熱備份系統(tǒng),圖3是本發(fā)明的一種雙機熱備份系統(tǒng)的結構示意圖,圖4是本發(fā)明的一種雙機熱備份系統(tǒng)的一實施例 的示意圖,如圖3和圖4所示,所述系統(tǒng),包括主用機1、備用機2、集線器3,其中所述集線器從數(shù)據源接收一個網絡數(shù)據包,將此時的數(shù)據包的狀態(tài)標記為H(T_ ORIGIN;判斷所述數(shù)據包是否是以太網類型,若是,則廣播所述數(shù)據包;否則,丟棄所述數(shù) 據包;在正常情況下,主用機接收集線器發(fā)送的數(shù)據包、并進行處理以及回注過程;備用 機處于standby狀態(tài),緩存集線器首次廣播的數(shù)據包;同時當收到主用機回注的數(shù)據包時, 緩存命中成功,緩存刪除;在主用機工作正常但數(shù)據包回注異常情況下,主用機流量回注失敗,備用機的緩 存僅僅緩存了集線器首次廣播的數(shù)據包,時效輸出緩存通過線程輪詢的策略回注此數(shù)據 包,保證網絡應用處理丟包率為零;在主用機工作異常情況下,備用機實時檢測到主用機失敗,備用機完成切換過程, 備用機接替主用機繼續(xù)工作。所述主用機1包括用戶程序模塊11、管理調度模塊12、時效輸出緩存模塊13和 心跳模塊14,其中所述用戶程序模塊11,用于從所述集線器接收網絡數(shù)據包,執(zhí)行相關業(yè)務的處 理;所述管理調度模塊12,用于接收所述數(shù)據包,并將所述數(shù)據包的狀態(tài)標記為H(T_ BCAST_F ;所述管理調度模塊12,對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所述數(shù)據包的狀態(tài) 為H(T_BCAST_F,則所述管理調度模塊12判斷是否回注所述數(shù)據包,若是,所述數(shù)據包被回 注到集線器,集線器進行第二次數(shù)據包廣播,將數(shù)據包狀態(tài)被標記為H(T_BCAST_S ;否則, 結束備份;若所述數(shù)據包的狀態(tài)不是KT_BCAST_F,則丟棄所述數(shù)據包;所述心跳模塊14,用來進行主用機的存活性驗證,主用機上的心跳程序周期性地 發(fā)送狀態(tài)消息,以表示本機的當前狀態(tài)。所述備用機2包括用戶程序模塊21、管理調度模塊22、時效輸出緩存模塊23和 心跳模塊對,其中所述管理調度模塊22,對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所述數(shù)據包的狀態(tài) 為H(T_BCAST_F或H(T_BCAST_S,則所述時效輸出緩存模塊23提取所述數(shù)據包的信息,判 斷所述數(shù)據包是否命中緩存,若是,則刪除緩存數(shù)據包;否則,在緩存中添加所述數(shù)據包,進 行緩存時效性的驗證;判斷是否回注所述數(shù)據包,若是,則所述數(shù)據包被回注到集線器;否 則,繼續(xù)進行緩存時效性的驗證;若所述數(shù)據包的狀態(tài)不是H(T_BCAST_F或H(T_BCAST_S, 則丟棄所述數(shù)據包。所述時效輸出緩存模塊23提取所述數(shù)據包的七元組信息{源IP地址;目的IP地 址;源端口 ;目的端口 ;協(xié)議;IPID ; IP分片位移};根據所述七元組信息查找所述時效輸出 緩存模塊中的哈希表,判斷所述數(shù)據包是否命中,若是,則刪除所述哈希表的相應表項;否 則,在所述哈希表中添加所述數(shù)據包的表項。所述心跳模塊M,用于實時地監(jiān)聽主用機發(fā)送的狀態(tài)消息;當主用機出現(xiàn)故障 時,備用機在設定的時間間隔內沒有收到主用機的狀態(tài)消息,就認為主用機已經失效。
較佳地,所述用戶程序模塊通過所述管理調度模塊中指定用戶程序接入模塊5為 用戶程序接入提供標準化流程及配置。所述用戶程序接入模塊5具體包括緩存處理接口 51、主用機存活性驗證接口 52和工作模式切換接口 53等。本發(fā)明的有益效果在于1)數(shù)據包級別的雙機熱備份。本發(fā)明通過時效緩存技術的應用,實現(xiàn)了數(shù)據包級 別的網絡應用熱備份,備份粒度細,故障空間小。2)網絡適應性和擴展性強。本發(fā)明將各個模塊工作流程獨立執(zhí)行并進行參數(shù)化, 可根據目標應用場景的不同進行相關策略的選擇,適應不同網絡應用的高可用性需求。3)實現(xiàn)了在兼容流量回注功能的同時,保證雙機工作模式切換時網絡應用丟包率為零。4)部署成本低,應用簡單。本發(fā)明將雙機熱備份的相關功能都內置到應用中,不依 賴于第三方的備份軟件或系統(tǒng)的支撐,對外部環(huán)境沒有任何額外要求,策略配置簡單??捎?性強??蛇m用于對高可用性要求比較高的網絡應用,如QOS保障系統(tǒng),入侵檢測系統(tǒng)等。通過結合附圖對本發(fā)明具體實施例的描述,本發(fā)明的其它方面及特征對本領域的 技術人員而言是顯而易見的。以上對本發(fā)明的具體實施例進行了描述和說明,這些實施例應被認為其只是示例 性的,并不用于對本發(fā)明進行限制,本發(fā)明應根據所附的權利要求進行解釋。
權利要求
1.一種雙機熱備份方法,其特征在于,采用時效輸出緩存與集線器配合,在正常情況 下,主用機接收集線器發(fā)送的數(shù)據包、并進行處理以及回注過程;備用機處于standby狀 態(tài),緩存集線器首次廣播的數(shù)據包;同時當收到主用機回注的數(shù)據包時,緩存命中成功,緩 存刪除;在主用機工作正常但數(shù)據包回注異常情況下,主用機流量回注失敗,備用機的緩存僅 僅緩存了集線器首次廣播的數(shù)據包,時效輸出緩存通過線程輪詢的策略回注此數(shù)據包,保 證網絡應用處理丟包率為零;在主用機工作異常情況下,備用機實時檢測到主用機失敗,備用機完成切換過程,備用 機接替主用機繼續(xù)工作。
2.根據權利要求1所述的雙機熱備份方法,其特征在于,所述方法,包括下列步驟 步驟100.所述集線器從數(shù)據源接收一個網絡數(shù)據包,將此時的數(shù)據包的狀態(tài)標記為PKT_0RIGIN ;步驟200,集線器判斷所述數(shù)據包是否是以太網類型,若是,則廣播所述數(shù)據包;否則, 丟棄所述數(shù)據包;步驟300.主用機和備用機的管理調度模塊分別接收所述數(shù)據包,并將所述數(shù)據包的 狀態(tài)標記為H(T_BCAST_F ;所述主用機執(zhí)行步驟400,所述備用機執(zhí)行步驟600 ;步驟400.所述主用機的管理調度模塊對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所述數(shù) 據包的狀態(tài)為H(T_BCAST_F,則執(zhí)行步驟500 ;否則,丟棄所述數(shù)據包;步驟500.用戶程序執(zhí)行相關業(yè)務的處理,所述管理調度模塊判斷是否回注所述數(shù)據 包,若是,所述數(shù)據包被回注到集線器,集線器進行第二次數(shù)據包廣播,將數(shù)據包狀態(tài)被標 記為H(T_BCAST_S,返回步驟300 ;否則,結束備份;步驟600.所述備用機的管理調度模塊對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所述數(shù) 據包的狀態(tài)為H(T_BCAST_F或H(T_BCAST_S,則執(zhí)行步驟700 ;否則,丟棄所述數(shù)據包;步驟700.所述備用機的時效輸出緩存模塊提取所述數(shù)據包的信息,判斷所述數(shù)據包 是否命中緩存,若是,則刪除緩存數(shù)據包;否則,在緩存中添加所述數(shù)據包,執(zhí)行步驟800 ;步驟800.所述備用機進行緩存時效性的驗證;判斷是否回注所述數(shù)據包,若是,則所 述數(shù)據包被回注到集線器,返回步驟300 ;否則,繼續(xù)進行所述備用機進行緩存時效性的驗 證。
3.根據權利要求1所述的雙機熱備份方法,其特征在于,所述時效輸出緩存模塊的數(shù) 據結構采用哈希表結合雙向時間鏈表的方式實現(xiàn),當采用固定內存管理策略時,將所述哈 希表中的哈希結點以及雙向時間鏈表結點放置在固定內存管理的LRU雙向鏈表中。
4.根據權利要求3所述的雙機熱備份方法,其特征在于,所述哈希表的關鍵碼采用了 以下七元組的形式,{源IP地址;目的IP地址;源端口 ;目的端口 ;協(xié)議;IPID ;IP分片位 移},其中,IPID字段為IP數(shù)據報文的唯一標志;IP分片位移字段,用于當數(shù)據包是IP分 片數(shù)據包時,區(qū)分某個特定的數(shù)據包在分片序列中的位置。
5.根據權利要求1所述的雙機熱備份方法,其特征在于,所述步驟700,包括下列步驟步驟710.所述時效輸出緩存模塊提取所述數(shù)據包的七元組信息{源IP地址;目的IP 地址;源端口 ;目的端口 ;協(xié)議;IPID;IP分片位移};步驟720.根據所述七元組信息查找所述時效輸出緩存模塊中的哈希表,判斷所述數(shù) 據包是否命中,若是,則執(zhí)行步驟730 ;否則,執(zhí)行步驟740 ;步驟730.刪除所述哈希表的相應表項;步驟740.在所述哈希表中添加所述數(shù)據包的表項。
6.根據權利要求1所述的雙機熱備份方法,其特征在于,步驟800中,所述緩存時效性 驗證,是采用線程定期輪詢的方式進行,預定義緩存失效時間T,假設數(shù)據包初次緩存添加 時間為Tl,線程輪詢到此數(shù)據包的時間點為T2。如果T2-T1 > T,則認定緩存時效性匹配失 敗,應該回注此數(shù)據包;否則認定數(shù)據包在緩存中仍然有效,不進行回注。
7.根據權利要求1所述的雙機熱備份方法,其特征在于,所述時效輸出緩存模塊的數(shù) 據結構,采用可擴展大小的緩存,時效緩存模塊實時統(tǒng)計已分配緩存的利用率,當緩存利用 率超過65 %時,再次分配緩存。
8.根據權利要求1所述的雙機熱備份方法,其特征在于,所述雙機熱備份方法中,還采 用了心跳機制來進行主用機的存活性驗證,主用機上的心跳程序周期性地發(fā)送狀態(tài)消息, 以表示本機的當前狀態(tài);備用機上的心跳程序會實時地監(jiān)聽主用機發(fā)送的狀態(tài)消息;當主 用機出現(xiàn)故障時,備用機在設定的時間間隔內沒有收到主用機的狀態(tài)消息,就認為主用機 已經失效。
9.根據權利要求8所述的雙機熱備份方法,其特征在于,所述心跳程序實現(xiàn)的是接收 者發(fā)起的方式,并且通過在計時器時間內限制接收者請求重傳消息包的次數(shù),來限制網絡通信流量。
10.根據權利要求8所述的雙機熱備份方法,其特征在于,所述心跳程序采用應急呼喚 信號驗證的方式,當?shù)谝淮纬瑫r沒有收到心跳信號時,即向主用機發(fā)出一個緊急的呼喚信 息,主用機應該優(yōu)先響應此信息回送一個心跳,如果主用機第二個時間間隔內還沒有收到 心跳,才進行服務和數(shù)據接管。
11.一種雙機熱備份系統(tǒng),其特征在于,所述系統(tǒng),包括主用機、備用機、集線器,其中所述集線器從數(shù)據源接收一個網絡數(shù)據包,將此時的數(shù)據包的狀態(tài)標記為 ORIGIN ;判斷所述數(shù)據包是否是以太網類型,若是,則廣播所述數(shù)據包;否則,丟棄所述數(shù) 據包;在正常情況下,主用機接收集線器發(fā)送的數(shù)據包、并進行處理以及回注過程;備用機處 于standby狀態(tài),緩存集線器首次廣播的數(shù)據包;同時當收到主用機回注的數(shù)據包時,緩存 命中成功,緩存刪除;在主用機工作正常但數(shù)據包回注異常情況下,主用機流量回注失敗,備用機的緩存僅 僅緩存了集線器首次廣播的數(shù)據包,時效輸出緩存通過線程輪詢的策略回注此數(shù)據包,保 證網絡應用處理丟包率為零;在主用機工作異常情況下,備用機實時檢測到主用機失敗,備用機完成切換過程,備用 機接替主用機繼續(xù)工作。
12.根據權利要求11所述的雙機熱備份系統(tǒng),其特征在于,所述主用機和備用機,都包 括用戶程序模塊、管理調度模塊、時效輸出緩存模塊,其中所述用戶程序模塊,用于從所述集線器接收網絡數(shù)據包,執(zhí)行相關業(yè)務的處理;所述管理調度模塊,用于接收所述數(shù)據包,完成用戶程序接入并進行參數(shù)管理以及相 關策略性調度;主用機的所述管理調度模塊,對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所述數(shù) 據包的狀態(tài)為H(T_BCAST_F,則所述管理調度模塊判斷是否回注所述數(shù)據包,若是,所述數(shù) 據包被回注到集線器,集線器進行第二次數(shù)據包廣播,將數(shù)據包狀態(tài)被標記為H(T_BCAST_ S ;否則,結束備份;若所述數(shù)據包的狀態(tài)不是KT_BCAST_F,則丟棄所述數(shù)據包;備用機的所述管理調度模塊對所述數(shù)據包進行數(shù)據包狀態(tài)判別,若所述數(shù)據包的狀態(tài) 為H(T_BCAST_F或H(T_BCAST_S,則所述備用機的時效輸出緩存模塊提取所述數(shù)據包的信 息,判斷所述數(shù)據包是否命中緩存,若是,則刪除緩存數(shù)據包;否則,在緩存中添加所述數(shù) 據包,進行緩存時效性的驗證;判斷是否回注所述數(shù)據包,若是,則所述數(shù)據包被回注到集 線器;否則,繼續(xù)進行緩存時效性的驗證;若所述數(shù)據包的狀態(tài)不是H(T_BCAST_F或H(T_ BCAST_S,則丟棄所述數(shù)據包。
13.根據權利要求12所述的雙機熱備份系統(tǒng),其特征在于,所述時效輸出緩存模塊的 數(shù)據結構采用哈希表結合雙向時間鏈表的方式實現(xiàn),當采用固定內存管理策略時,將所述 哈希表中的哈希結點以及雙向時間鏈表結點放置在固定內存管理的LRU雙向鏈表中。
14.根據權利要求13所述的雙機熱備份系統(tǒng),其特征在于,所述哈希表的關鍵碼采用 了以下七元組的形式,{源IP地址;目的IP地址;源端口 ;目的端口 ;協(xié)議;IPID ; IP分片位 移},其中,IPID字段為IP數(shù)據報文的唯一標志;IP分片位移字段,用于當數(shù)據包是IP分 片數(shù)據包時,區(qū)分某個特定的數(shù)據包在分片序列中的位置。
15.根據權利要求12所述的雙機熱備份系統(tǒng),其特征在于,所述備用機的時效輸出緩 存模塊提取所述數(shù)據包的七元組信息{源IP地址;目的IP地址;源端口 ;目的端口 ;協(xié)議; IPID ;IP分片位移};根據所述七元組信息查找所述時效輸出緩存模塊中的哈希表,判斷所 述數(shù)據包是否命中,若是,則刪除所述哈希表的相應表項;否則,在所述哈希表中添加所述 數(shù)據包的表項。
16.根據權利要求12所述的雙機熱備份系統(tǒng),其特征在于,所述緩存時效性驗證,是采 用線程定期輪詢的方式進行,預定義緩存失效時間T,假設數(shù)據包初次緩存添加時間為Tl, 線程輪詢到此數(shù)據包的時間點為T2。如果T2-T1 >T,則認定緩存時效性匹配失敗,應該回 注此數(shù)據包;否則認定數(shù)據包在緩存中仍然有效,不進行回注。
17.根據權利要求12所述的雙機熱備份系統(tǒng),其特征在于,所述時效輸出緩存模塊的 數(shù)據結構,采用可擴展大小的緩存,時效緩存模塊實時統(tǒng)計已分配緩存的利用率,當緩存利 用率超過65 %時,再次分配緩存。
18.根據權利要求11所述的雙機熱備份系統(tǒng),其特征在于,雙機熱備份系統(tǒng)中,所述主 用機和備用機,還分別包括主用機的心跳模塊,用來進行主用機的存活性驗證,主用機上的心跳程序周期性地發(fā) 送狀態(tài)消息,以表示本機的當前狀態(tài);備用機的心跳模塊,用于實時地監(jiān)聽主用機發(fā)送的狀態(tài)消息;當主用機出現(xiàn)故障時,備 用機在設定的時間間隔內沒有收到主用機的狀態(tài)消息,就認為主用機已經失效。
19.根據權利要求18所述的雙機熱備份系統(tǒng),其特征在于,所述心跳模塊實現(xiàn)的是接 收者發(fā)起的方式,并且通過在計時器時間內限制接收者請求重傳消息包的次數(shù),來限制網 絡通信流量。
20.根據權利要求18所述的雙機熱備份系統(tǒng),其特征在于,所述心跳模塊采用應急呼 喚信號驗證的方式,當?shù)谝淮纬瑫r沒有收到心跳信號時,即向主用機發(fā)出一個緊急的呼喚 信息,主用機應該優(yōu)先響應此信息回送一個心跳,如果主用機第二個時間間隔內還沒有收 到心跳,才進行服務和數(shù)據接管。
全文摘要
本發(fā)明公開了一種雙機熱備份方法和系統(tǒng)。所述方法,采用時效輸出緩存與集線器配合,在正常情況下,主用機接收集線器發(fā)送的數(shù)據包、并進行處理以及回注過程;備用機處于standby狀態(tài),緩存集線器首次廣播的數(shù)據包;同時當收到主用機回注的數(shù)據包時,緩存命中成功,緩存刪除;在主用機工作正常但數(shù)據包回注異常情況下,主用機流量回注失敗,備用機的緩存僅僅緩存了集線器首次廣播的數(shù)據包,時效輸出緩存通過線程輪詢的策略回注此數(shù)據包,保證網絡應用處理丟包率為零;在主用機工作異常情況下,備用機實時檢測到主用機失敗,備用機完成切換過程,備用機接替主用機繼續(xù)工作。
文檔編號H04L1/22GK102118309SQ20101062008
公開日2011年7月6日 申請日期2010年12月31日 優(yōu)先權日2010年12月31日
發(fā)明者吳志剛, 周淵, 王勇, 王曦, 羅浩, 賀龍濤, 郝志宇 申請人:中國科學院計算技術研究所