專利名稱:一種服務器熱備實現系統及方法
技術領域:
本發明涉及一種服務器熱備實現系統及方法。
背景技術:
在現在工業自動化控制領域、金融業以及其它服務業等領域,對計算機系統的依賴程度都非常高,如何提供不間斷服務,如何保證24小時不間斷運行,是許多行業對計算機系統的一個重要需求
發明內容
為了解決以上問題本發明提供了一種服務器熱備實現系統及方法,為了保證系統的可靠性,在系統設計時,對核心服務器采用雙機熱備的方式來設計。采用服務器熱備的實現系統進行熱備控制。在設計中,兩臺服務器及時同步系統數據,當一臺服務器出現故障時,另一臺服務器自動接替工作繼續提供服務,不會影響系統的正常運行,從而提高了系統的可靠性。為了解決以上問題本發明提供了一種服務器熱備實現系統,其特征在于包括主服務器、備服務器、系統單元,主服務器和備服務器的之間采用TCP/IP協議的SOCKET方式進行數據傳輸,主服務器、備服務器與系統單元采用進程通信的方式進行交互,主服務器、備服務器的配置相同,主服務器、備服務器單元包括數據接收單元、數據處理單元、數據發送單元;
系統單元包括主備服務器識別單元、心跳存活檢測單元、數據同步單元、主備切換單元;主備服務器識別單元用于識別當前服務器的主備;然后通過數據同步單元來完成內存數據的同步,主備服務器通過數據接收單元接收相同的外部數據,通過數據處理單元進行邏輯處理和運算,但只有主服務器通過數據發送單元向外發送數據提供服務,備服務器不向外發送任何數據;當主服務器停止工作后,通過心跳存活檢測單元檢測出主服務器出現故障,備服務器將接管主服務器的工作;通過主備切換單元進行主備服務器的自動切換,備服務器變成主服務器開始向外發送數據提供服務。一種服務器熱備實現方法,包括以下步驟
步驟一主備服務器識別誰先啟動誰就是主服務器;當一臺服務器啟動之后,將立刻給另外一臺服務器發送心跳信息;當已經發送了心跳信息,但沒有收到對方的心跳信息,則說明另外一臺服務器沒有啟動,則該服務器為主服務器;當兩臺服務器同時啟動,都收到對方的心跳信息,兩個服務器會認為都是備服務器,則采用“隨機數”即可以任意認定某一服務器為主服務器的方式來進行主備服務器的識別;
步驟二 心跳存活檢測為了檢測兩臺服務器是否一直都處于運行狀態,兩臺服務器采用TCP/IP協議進行SOCKET通信進行心跳檢測;為了保證主備服務器在I秒內完成切換,兩臺服務器每100毫秒發送一條心跳檢測報文,每500毫秒對心跳進行統計;當在該統計周期內沒有收到主服務器的任何心跳報文,就認為主服務器已經停止了工作;步驟三數據同步數據同步單元采用內存同步方式;
步驟四主備切換當心跳存活檢測單元檢測出主服務器已經停止工作;備服務器將接管主服務器的工作,開始向外提供服務;備服務器首先將自己的狀態標識為主服務器,然后去查看有沒有備服務器產生的而主服務器沒有產生的報文內容,如果有,則將這些報文逐個發送出去;當有數據需要發送時,去查看有沒有主服務器產生的而備服務器沒有產生的報文內容,如果有,則說明主服務器已經發送過該條報文,將停止發送該條報文;經過一定的處理周期,之前保存的報文將會被處理干凈;完成主備切換工作。所述的步驟二當備服務器在500毫秒周期內沒有收到主服務器任何心跳信息時,需要發送確認信息給主服務器,如果主服務器沒有任何回復,則才能說明主服務器已經停止了工作。所述步驟三的數據同步時機為
①當主服務器已經啟動并且工作了一段時間,此時,備服務器突然啟動了,備服務器主 動向主服務器發送加載請求,主服務器收到加載請求后,把內存數據狀態、當前處理的數據幀號、輸出數據幀號發送給備服務器;備服務器收到同步數據后,完成本身數據的更新;
②當主服務器獲得周期數據后,并寫入內存單元,此時,主服務器需要將獲得的數據告訴備服務器;備服務器收到該信息后,取相同的數據進行應用處理;
③當主服務器對外提供服務時,主服務器會給外界的其它系統發送數據報文,此時,主服務器也要通知備服務器它發送了報文的具體內容,以及報文的幀號。備服務器接收到了該信息后,進行存儲;保存主服務器產生的,而備服務器沒有產生的報文內容;和備服務器產生的,而主服務器沒有產生的報文內容;
④當主、備服務器之間處理步調相差很大時,備服務器主動向主服務器請求內存同步,具體同步內容和與①的過程一致。所述步驟四主備切換也可采用人工切換的方式,即采用人工界面操作的方式進行切換,完成服務的轉移。有益效果當一臺服務器出現故障停止工作時,另一臺服務器會自動接替工作,不會影響系統的正常運行,從而提高了系統的可靠性。該本發明采用內存同步的方式,而不使用共享存儲器的方式來保證數據的一致性,與數據庫熱備等熱備系統在設計上有很大的不同。
圖I為本發明系統的結構框圖。
具體實施例方式下面結合附圖對本發明作進一步的描述。如圖I所示,一種服務器熱備實現系統,包括主服務器、備服務器、系統單元,主服務器和備服務器的之間采用TCP/IP協議的SOCKET方式進行數據傳輸,主服務器、備服務器與系統單元采用進程通信的方式進行交互,主服務器、備服務器的配置相同,主服務器、備服務器單元包括數據接收單元、數據處理單元、數據發送單元;
系統單元包括主備服務器識別單元、心跳存活檢測單元、數據同步單元、主備切換單元;主備服務器識別單元用于識別當前服務器的主備;然后通過數據同步單元來完成內存數據的同步,主備服務器通過數據接收單元接收相同的外部數據,通過數據處理單元進行邏輯處理和運算,但只有主服務器通過數據發送單元向外發送數據提供服務,備服務器不向外發送任何數據;當主服務器停止工作后,通過心跳存活檢測單元檢測出主服務器出現故障,備服務器將接管主服務器的工作;通過主備切換單元進行主備服務器的自動切換,備服務器變成主服務器開始向外發送數據提供服務。一種服務器熱備實現方法,包括以下步驟
步驟一主備服務器識別誰先啟動誰就是主服務器。當一臺服務器啟動之后,將立刻給另外一臺服務器發送心跳信息。當已經發送了心跳信息,但沒有收到對方的心跳信息,則說明另外一臺服務器沒有啟動,則該服務器為主服務器。當兩臺服務器同時啟動,都收到對方的心跳信息,兩個服務器會認為都是備服務器,則采用“隨機數”(即可以任意認定某一服務器為主服務器)的方式來進行主備服務器的識別。
步驟二 心跳存活檢測為了檢測兩臺服務器是否一直都處于運行狀態,兩臺服務器采用TCP/IP協議進行SOCKET通信進行心跳檢測。為了保證主備服務器在I秒內完成切換,兩臺服務器每100毫秒發送一條心跳檢測報文,每500毫秒對心跳進行統計。當在該統計周期內沒有收到主服務器的任何心跳報文,就認為主服務器已經停止了工作。在心跳檢測過程中,也有可能主服務器因為忙碌的原因,導致長時間發送不出心跳信息,出現“假死”現象,如果備服務器立刻就接管主服務器的工作,就有可能導致不正常切換情況,從而影響整個服務器的性能。所以,當備服務器在500毫秒周期內沒有收到主服務器任何心跳信息時,需要發送確認信息給主服務器,如果主服務器沒有任何回復,則才能說明主服務器已經停止了工作。步驟三數據同步數據同步單元采用內存同步而不使用共享存儲器的方式來保證數據的一致性,所以,數據同步是兩臺服務器能否正常工作的基礎,如果沒有數據同步,就算已經完成了主備切換,備服務器也不可能接替之前的工作繼續處理。在本發明中,備服務器總會慢主服務器一個處理周期。就好比兩個人一前一后走路,后面的一個人總是踩著前面的一個人的腳印行走,當前面的一個人停止工作后,后面的人才能接著往前行走。在本發明中,在如下幾個時機需要進行數據同步
①當主服務器已經啟動并且工作了一段時間,此時,備服務器突然啟動了,備服務器主動向主服務器發送加載請求,主服務器收到加載請求后,把內存數據狀態、當前處理的數據幀號、輸出數據幀號發送給備服務器。備服務器收到同步數據后,完成本身數據的更新。②當主服務器獲得周期數據后,并寫入內存單元,此時,主服務器需要將獲得的數據告訴備服務器。備服務器收到該信息后,取相同的數據進行應用處理。③當主服務器對外提供服務時,主服務器會給外界的其它系統發送數據報文,此時,主服務器也要通知備服務器它發送了報文的具體內容,以及報文的幀號。備服務器接收到了該信息后,進行存儲。保存主服務器產生的,而備服務器沒有產生的報文內容;和備服務器產生的,而主服務器沒有產生的報文內容。④當主、備服務器之間處理步調相差很大時,備服務器主動向主服務器請求內存同步,具體同步內容和與①的過程一致。步驟四主備切換當心跳存活檢測單元檢測出主服務器已經停止工作。備服務器將接管主服務器的工作,開始向外提供服務。備服務器首先將自己的狀態標識為主服務器,然后去查看有沒有備服務器產生的而主服務器沒有產生的報文內容,如果有,則將這些報文逐個發送出去;當有數據需要發送時,去查看有沒有主服務器產生的而備服務器沒有產生的報文內容,如果有,則說明主服務器已經發送過該條報文,將停止發送該條報文。經過一定的處理周期,之前保存的報文將會被處理干凈。完成主備切換工作。主備切換也可采用人工切換的方式。在長期運行過程中,需要升級,但又不希望停止工作,采用人工界面操作的方式進行切換,完成服務的轉移。以上所述僅為本發明的優選實施例而已,并不限制于本發明,對于本領域的技術 人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的權利要求范圍之內。
權利要求
1.一種服務器熱備實現系統,其特征在于包括主服務器、備服務器、系統單元,主服務器和備服務器的之間采用TCP/IP協議的SOCKET方式進行數據傳輸,主服務器、備服務器與系統單元采用進程通信的方式進行交互,主服務器、備服務器的配置相同,主服務器、備服務器單元包括數據接收単元、數據處理単元、數據發送単元; 系統單元包括主備服務器識別單元、心跳存活檢測單元、數據同步単元、主備切換單元;主備服務器識別單元用于識別當前服務器的主備;然后通過數據同步單元來完成內存數據的同步,主備服務器通過數據接收單元接收相同的外部數據,通過數據處理單元進行邏輯處理和運算,但只有主服務器通過數據發送單元向外發送數據提供服務,備服務器不向外發送任何數據;當主服務器停止工作后,通過心跳存活檢測單元檢測出主服務器出現故障,備服務器將接管主服務器的工作;通過主備切換單元進行主備服務器的自動切換,備服務器變成主服務器開始向外發送數據提供服務。
2.根據權利要求I所述的ー種服務器熱備實現方法,其特征在于包括以下步驟 步驟ー主備服務器識別誰先啟動誰就是主服務器;當一臺服務器啟動之后,將立刻給另外一臺服務器發送心跳信息;當已經發送了心跳信息,但沒有收到對方的心跳信息,則說明另外一臺服務器沒有啟動,則該服務器為主服務器;當兩臺服務器同時啟動,都收到對方的心跳信息,兩個服務器會認為都是備服務器,則采用“隨機數”即可以任意認定某一服務器為主服務器的方式來進行主備服務器的識別; 步驟ニ 心跳存活檢測為了檢測兩臺服務器是否一直都處于運行狀態,兩臺服務器采用TCP/IP協議進行SOCKET通信進行心跳檢測;為了保證主備服務器在I秒內完成切換,兩臺服務器每100毫秒發送一條心跳檢測報文,每500毫秒對心跳進行統計;當在該統計周期內沒有收到主服務器的任何心跳報文,就認為主服務器已經停止了工作; 步驟三數據同步數據同步單元采用內存同步方式; 步驟四主備切換當心跳存活檢測單元檢測出主服務器已經停止工作;備服務器將接管主服務器的工作,開始向外提供服務;備服務器首先將自己的狀態標識為主服務器,然后去查看有沒有備服務器產生的而主服務器沒有產生的報文內容,如果有,則將這些報文逐個發送出去;當有數據需要發送時,去查看有沒有主服務器產生的而備服務器沒有產生的報文內容,如果有,則說明主服務器已經發送過該條報文,將停止發送該條報文;經過ー定的處理周期,之前保存的報文將會被處理干凈;完成主備切換工作。
3.根據權利要求2所述的ー種服務器熱備實現方法,其特征在于所述的步驟ニ當備服務器在500毫秒周期內沒有收到主服務器任何心跳信息時,需要發送確認信息給主服務器,如果主服務器沒有任何回復,則才能說明主服務器已經停止了工作。
4.根據權利要求2所述的ー種服務器熱備實現方法,其特征在于所述步驟三的數據同步時機為 ①當主服務器已經啟動并且工作了一段時間,此時,備服務器突然啟動了,備服務器主動向主服務器發送加載請求,主服務器收到加載請求后,把內存數據狀態、當前處理的數據幀號、輸出數據幀號發送給備服務器;備服務器收到同步數據后,完成本身數據的更新; ②當主服務器獲得周期數據后,并寫入內存單元,此時,主服務器需要將獲得的數據告訴備服務器;備服務器收到該信息后,取相同的數據進行應用處理; ③當主服務器對外提供服務時,主服務器會給外界的其它系統發送數據報文,此時,主服務器也要通知備服務器它發送了報文的具體內容,以及報文的幀號; 備服務器接收到了該信息后,進行存儲;保存主服務器產生的,而備服務器沒有產生的報文內容;和備服務器產生的,而主服務器沒有產生的報文內容; ④當主、備服務器之間處理步調相差很大時,備服務器主動向主服務器請求內存同歩,具體同步內容和與①的過程一致。
5.根據權利要求2所述的ー種服務器熱備實現方法,其特征在于所述步驟四主備切換采用人工切換的方式,即采用人工界面操作的方式進行切換,完成服務的轉移。
全文摘要
一種服務器熱備實現系統及方法,其系統主服務器和備服務器的之間采用TCP/IP協議的SOCKET方式進行數據傳輸,主服務器、備服務器與系統單元采用進程通信的方式進行交互,主備服務器識別單元用于識別當前服務器的主備;然后通過數據同步單元來完成內存數據的同步,主備服務器通過數據接收單元接收相同的外部數據,通過數據處理單元進行邏輯處理和運算,但只有主服務器通過數據發送單元向外發送數據提供服務,備服務器不向外發送任何數據;當主服務器停止工作后,通過心跳存活檢測單元檢測出主服務器出現故障,備服務器將接管主服務器的工作;通過主備切換單元進行主備服務器的自動切換,備服務器變成主服務器開始向外發送數據提供服務。
文檔編號H04L12/24GK102868560SQ201210366730
公開日2013年1月9日 申請日期2012年9月28日 優先權日2012年9月28日
發明者王恒 申請人:南京恩瑞特實業有限公司