基於網路檔案共享服務的雙機資料同步方法

2022-08-05 18:30:22 字數 2632 閱讀 4540

前幾年我開發過一個軟體系統,為使用者提供7×24小時不間斷的服務。為了確保服務質量,採用了雙機熱備的形式。雙機系統能夠正常工作的關鍵技術之一,就是主備機之間的資料同步。下面介紹的資料同步方法是以網路檔案共享服務為基礎實現的,簡單易行,安全可靠,在當時時間緊、任務重、投資有限的情況下,應用效果比較理想。

windows網路檔案共享服務

在windows系統環境中,一臺計算機可以作為伺服器向區域網中的其它計算機(客戶機)提供“檔案共享服務”。通過這項服務,客戶機使用者能夠像訪問本地檔案一樣通過網路對伺服器上的共享檔案進行一系列操作。

當使用者通過客戶機連線到伺服器的共享位置時,他們可以:

客戶機訪問伺服器上共享檔案位置的方法有多種,如網路上的芳鄰、對映網路驅動器等。這裡我們採用適合軟體程式設計實現的“unc路徑訪問法”。

unc (universal naming convention) “通用命名約定”,用於確定儲存在網路伺服器上的檔案位置。unc符合“\\servername\sharename”格式,其中 servername 是伺服器名,sharename 是共享資源的名稱。目錄或檔案的 unc 名稱可以包括共享資源名稱下的目錄路徑,格式為:\\servername\sharename\directory\filename,其中directory是目錄名,filename是共享檔名。

本資料同步方法的設計思路是:當雙機間需要進行資料同步時,主機作為客戶機,利用“unc路徑訪問法”開啟備機(伺服器)的資料檔案(共享檔案),將最新的執行資料寫入資料檔案中。這樣就能夠確保主、備機之間資料的一致性。

由於網路檔案共享服務是windows作業系統提供的基於tcp/ip協議的標準服務,而且伺服器在提供服務前需要客戶機提供有效的訪問憑據(如域的名稱、使用者名稱稱和密碼),使用者能夠進行的操作也取決於被授予的許可權,因此利用網路檔案共享服務,結合檔案操作、ping等通用技術,可以實現免資料庫、安全、便捷、易維護的雙機熱備系統資料同步機制。

服務配置過程

由於網路檔案共享服務不是windows作業系統提供的預設服務,因此需要通過以下步驟進行配置:

圖1.服務配置步驟

第一步,在雙機中安裝windows作業系統。通常,windows 2000或更高版本的作業系統都能夠提供網路檔案共享服務。

第二步,在雙機的作業系統中建立同樣的使用者,使用同樣的密碼,並確保該使用者對各自的共享檔案和目錄具有建立、讀、寫、修改和刪除許可權。如此設定,能夠保證客戶機順利通過伺服器的安全驗證,並訪問伺服器的共享資源。

第三步,在作業系統中安裝tcp/ip協議,並確保處於同一區域網中的雙機能夠進行正常通訊。

第四步,在作業系統中安裝“microsoft網路客戶端”和“microsoft網路的檔案和印表機共享”兩個網路元件。這些元件是作業系統對外提供檔案共享服務的基礎配置。

此時配置完成,雙機已經具備了互為伺服器和客戶機的條件。

資料同步的實現

具體的雙機間資料同步操作是由執行於作業系統中的應用軟體執行的。資料同步操作通常由主機中的應用軟體發起,因此它的執行流程是:

圖2. 主機資料同步流程

在上述流程中,主機應用軟體首先“將資料寫入本地資料檔案”,其目的是保證應用軟體在遇到強制關閉等情況後不丟失執行資料,待重新啟動後能夠從本地資料檔案中獲得資料,繼續以正常方式執行。

“向備機執行ping操作”目的是檢視當時主備機之間的網路是否通暢,為後續的資料檔案操作提供保障。ping(packet internet groper,因特網包探測器)操作是通過向目標ip地址傳送icmp(internet control messages protocol,因特網控制報文協議)回聲請求訊息,並依據對方是否應答來判斷網路的通斷狀況。在這裡,可以將備機的ip地址寫在應用軟體的配置檔案中,應用軟體在啟動階段讀取該ip地址,並作為unc路徑訪問和ping操作的引數使用。

執行“通過unc路徑訪問備機的資料檔案”操作的c++**如下:

1

cfile netlogfile;

2cstring strfilename;

3 strfilename.format("

\\\\%s\\c$\\staterm\\log.tmp

",m_strbackupip);45

//開啟備機資料檔案log.tmp

6try713

}14catch ( cexception*pe1 )

15

上述第3行**就是採用unc路徑訪問法確定備機資料檔案位置。這樣就保證了可以在第8行使用本地檔案開啟函式(cfile::open)開啟備機上的網路共享資料檔案,從而降低了軟體開發的難度和複雜度。

在執行“將資料寫入備機資料檔案”操作時,主機應用軟體可以有兩種方法完成向備機的資料同步:

對於備機中執行的應用軟體,一般情況下不對其本機的資料檔案進行讀寫操作,避免對主機執行同步操作的影響。只有在接到雙機主備裁決模組發來的升為主機狀態的命令時,該應用軟體才會從本機資料檔案中讀取資料,並進入正常執行邏輯。由於此時的資料檔案通過前一次同步過程得到了更新,已與原主機的最新資料保持一致,因此就實現了在主備切換時雙機間資料同步的功能。