P2P架構下環型結構文件熱備份系統設計
「針對文件共享系統中的文件熱備份問題,提出一種在P2P網絡中利用節點間環型結構實現共享文件備份的方法。圍繞環型結構文件熱備份設計,在實驗系統中同時解決了網絡節點加入與退出、節點狀態監控、節點連接信息刷新、各節點中共享文件協同檢索,以及各節點間實時通信等技術問題。充分利用P2P網絡結構的技術特點,提高文件共享系統的可用性,同時證明P2P網絡結構下的文件資源共享系統具有擴展方便、負載變化對系統影響較小等特點。(2023-2-25)」
關鍵詞:P2P網絡;文件共享;文件熱備份;環型結構
DOI:10.11907//rjdk.201103 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2020)006-0098-04
0 引言
共享文件系統主要關注的問題之一是服務可用性。一直以來共享文件系統大多采用C/S或Web架構,數據集中存放于中心服務器,導致系統防災性較差,例如網站的FTP服務器等,一旦發生故障,可能導致系統服務中斷。筆者工作過的單位就發生過多次服務器宕機事件,使工作受到了很大影響。隨著P2P網絡技術的發展,分布式共享文件系統開始流行。分布式結構的共享文件系統在高可用性、易擴展性、負載平衡等用戶十分關注的技術性能上都有較大改善,但由于P2P網絡固有的動態性表現,使得文件檢索成功率仍然不穩定,特別在一些不可抗力事件的影響下,有些系統無法持續工作,導致文件受到破壞甚至丟失。結合系統備份技術,特別是熱備份技術以提高P2P文件共享系統的可用性與可靠性。在P2P分布式文件系統中,每個共享文件節點提供文件和存儲資源,管理本節點的文件及備份文件,在網絡中設置類似Gnutella的系統服務節點,以便于獲取節點和備份節點的網絡地址,并提供文件檢索與資源定位服務。
熱備份系統以雙機熱備份為例,采用兩臺物理位置不同,但同時運行熱備份程序的服務器,管理數據的備份、讀取與存儲,以持續保護數據的安全性。當主服務器出現故障時,備份服務器通過網絡主動接替主服務器工作,保證網絡服務不間斷。
相關研究主要集中在服務器監控方法與數據管理架構方面。如文獻的混合容災雙機熱備份系統提出新的心跳協議以解決主、備份系統的通信聯系與狀態監控問題;文獻將主機和備份機的數據通過網絡進行集中管理,雙機熱備份系統直接從存儲設備讀取與存儲所有數據,以保證數據的安全性及保密性。以上系統均采用在主、備份服務器上集中存放數據的模式,由于受到服務器存儲容量的限制,很難滿足大型文件管理系統對存儲容量及可用性的要求。本文提出的P2P架構下的共享文件熱備份系統,將共享文件節點備份關系構成環型線性表,解決了備份文件存放、系統服務平穩切換等問題,可維持系統不間斷工作,而且擴展性好,能夠保證共享文件的安全性。
1 系統熱備份模型
P2P節點基礎通信層與共享文件熱備份服務層形成系統的兩層架構,其中P2P節點基礎通信層實現所有節點間的點對點通信,共享文件熱備份服務層提供與文件熱備份相關的功能,以保證系統的可用性及訪問的安全性。
共享文件熱備份層是由系統服務節點和共享文件節點組成的覆蓋網。系統服務節點包括主服務節點和備份服務節點,系統服務節點管理所有共享文件節點,以保證備份文件的可用性,包括共享文件節點狀態監控、節點控制與負載平衡、節點信息查詢等。其中共享文件節點狀態監控由節點狀態監控算法實現,節點控制由節點加入算法和節點退出算法實現。共享文件節點存儲與管理自治文件及備份文件,是網絡共享文件資源的提供者和服務受益者,并能響應文件查詢請求。
為了實現網絡共享文件的熱備份,將共享文件節點間的備份關系設計成環型線性表結構,共享文件節點間邏輯結構如圖1所示。共享文件節點備份關系由系統服務節點進行管理與維護。
1.1 共享文件節點備份關系
為了明確描述共享文件節點間的備份關系,給出以下概念定義:
定義1:自治文件即共享文件節點向網絡提供的共享文件。
定義2:備份文件即其它共享文件節點以備份形式保存在本地節點中的文件。
所以本文將共享文件分成自治文件和備份文件兩類。每個共享文件節點設置共享文件表,用于記錄與管理節點自治文件及備份文件信息。
定義3:節點共享文件表(SFT,Shared file table),SFT={},其中id為文件編號,f為類型(0:自治文件或l:備份文件),t為共享文件更新時間,p為共享文件本地存放路徑。
為了有效管理系統服務節點及查詢各網絡節點的備份節點,應設置節點信息表和節點備份關系表。
定義4:節點信息表(NIT,Node information table),NIT={},其中Nid是節點編號,IP是節點IP地址和端口號,S是節點在線狀態。
定義5:節點備份關系表(BRT,Backup relationship ta.ble),BRT=(N,R),其中N={ai|1≤i≤n,n≥0,ai∈NIT},R={r},r={1,a2>,2,a3>,…,n-1,an>,n,ai>}。
N是節點集合,R是節點間備份關系集合,i,ai+1>表示ai所有自治文件備份到ai+1,。在BRT中,節點a1的前驅節點是an,節點an的后繼節點是a1,其余節點為ai-1,ai+1,是ai的前驅和后繼節點,所以BRT是個循環表。數據庫實現BRT時,BRT={},其中Bid為后繼節點編號。 1.2 節點加入算法
新節點加入網絡會引起節點間備份關系的變化,因為相關節點的自治文件都需要備份到后繼節點,以維持BRT線性表環型結構的完整性和一致性。本文約定新節點插入到BRT尾節點后,使BRT尾節點成為新節點的前驅節點,首節點成為新節點的后繼節點。
算法1節點加入算法。
輸入:BRT的尾指針nid,節點IPn。
輸出:在NIT和BRT尾部增加新節點,建立備份關系。
。1)NIT增加新記錄n,Sn>。
。2)如果BRT為φ,則在BRT尾部增加新記錄,轉第(6)步。
。3)取BRT尾節點,在BRT尾部增加新記錄。
。4)在NIT中定位記錄r,St>,獲取節點網址IPr。
。5)向節點IP,發送其自治文件到節點IPn備份的消息。
。6)修改BRT的尾指針為Nid。
新節點加入網絡要向系統服務節點發送注冊消息,調用節點加入算法完成3項任務:①在NIT和BRT增加新節點記錄,通過消息傳送的節點IP地址在NIT中建立記錄,生成節點編號Nid;②建立節點備份關系,通過在備份關系表BRT尾部插入節點,使尾節點成為新節點的前驅節點,插入節點后,BRT的首節點成為新節點的后繼節點,建立節點備份關系(線性表環型結構);③共享文件備份,向前驅節點發送消息,讓其將自治文件發送到新節點作備份,但由于新節點剛加人,自身的自治文件情況還不明確,所以暫時不在后繼節點作備份,而由節點文件發布算法實現文件備份。節點IP,收到消息,將SFTr(即SFTr中f=1)發送至節點IPn,SFTn=SFTr∩SFTn。
1.3 節點退出算法
系統服務節點定期接收所有共享文件節點發送的心跳消息,無心跳表明該節點已退出網絡,要調用節點退出算法調整前驅、后繼節點間的備份關系,并通知節點進行共享文件備份,最后刷新共享文件表SFT。
算法2節點退出算法
輸入:退出節點nid。
輸出:在NIT和BRT刪除退出的節點nid記錄,調整BRT備份關系。
。1)按nid在NIT中找到L,SL>、n,Sn>和N,SN>,獲取IPL和IPN,刪除記錄n,Sn>。
。2)按nid在BRT中找到、和,將更改成,刪除記錄。
。3)向節點IPN發送消息,將其備份文件變成自治文件。
。4)向節點IPL發送消息,將其自治文件發送到節點IPN作為備份文件。
節點IPN接收到消息,使SFTN={}中f=1。節點IPL收到消息,將SFTL(即SFTL中f=1)發送至節點IPN,SFTN=SFTL∩SFTN。
1.4 節點狀態監控算法
在線狀態的共享文件節點定時向系統服務節點發送心跳消息,系統服務節點接收到消息,找到節點記錄NIT={},設置S為在線狀態。系統服務節點會周期性地檢查NIT,若發現節點Nid離線,則選擇合適的備份節點,并調整共享文件節點間的備份關系,最后對所有共享文件節點刷新NIT。
算法3節點狀態監控算法
輸入:周期時間事件。
輸出:刷新關系文件節點NIT消息。
。1)for each Si∈NIT
如果si離線,則調用節點退出算法。
心跳協議也影響熱備份系統性能。心跳協議可利用Socket,以UDP、TCP、ICMP報文方式或串口通信方式加以實現。信息傳輸經過傳輸層、內核與通信接口軟件及應用軟件任務進行切換,整個過程環節多、耗費時間長,采用TCP心跳協議可保證連接的可靠性。另外,系統服務節點接收到共享文件節點前后兩次心跳的間隔期總會存在短暫的空白時間,若系統服務節點或共享文件節點出現故障,則均無法監控到,因此心跳時間設置會影響系統性能。
1.5 節點文件檢索算法
各節點文件檢索主要利用系統服務節點傳送給節點的NIT結合各節點的SFT加以實現。依靠過去成功檢索獲得的信息,在NIT中選擇部分或全部節點發送文件檢索請求,各節點接收到檢索消息,通過查詢SFT即可找到所需的文件。
算法4節點文件檢索算法。
輸人:節點ao要檢索的文件名f。
輸出:節點ai的返回結果。
發送檢索f消息給ai。
節點ai收到消息,在SFT中查詢f,如果找到則返回文件,否則返回未找到文件。節點ao根據返回結果對ai進行評價(評價指標為查詢成功次數),如果成功返回查找的文件,則增加查詢成功次數并記錄評價結果。算法中選擇節點的依據是查詢成功次數,所以次數多的節點首先被選中。如果全部返回結果均為未找到,則節點ao可擴大選擇節點范圍再進行查找。
2 軟件設計與實現
系統要共享的所有文件資源被分散存放到各文件共享節點中,并將檢索共享文件節點的信息發布到系統服務節點以便于管理。
本系統由P2P消息收發模塊、消息解析與任務調度模塊構成P2P節點基礎通信層,P2P節點控制與文件備份模塊、節點狀態監測模塊構成共享文件熱備份服務層。節點之間通信采用TCP協議,P2P節點監聽連接請求端口,有連接請求時創建消息接收線程,建立Socket通信連接并接收消息,通過應用層通信協議解析消息,任務調度發送消息給各處理模塊完成相應處理。
實驗系統軟件采用多線程技術、Socket通信技術和TCP協議實現可靠的數據通信。采用Microsoft Visual C6.0作為實驗系統軟件開發工具,同時采用Microsoft Access2010數據庫管理系統建立系統服務節點的NIT和BRT表,以及共享文件節點的SFT和NIT表。
3 結語
本文主要研究共享文件熱備份系統的結構設計問題,通過建立P2P網絡下線性結構的共享文件備份系統,解決了網絡節點變動控制、狀態監測與文件檢索等問題。系統能夠滿足中小型網絡文件資源共享系統中的文件熱備份需求,而且得益于P2P網絡系統可靠性強、擴展性與靈活性較高等特點,一定程度上提升了系統可用性,且系統運行穩定。下一步將運用面向行業的智能信息處理技術實現文件信息的智能檢索,并運用區塊鏈技術解決網絡安全性與溯源性問題,力求進一步提高系統可用性。
(跑lS)
DOI:10.11907//rjdk.201103 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2020)006-0098-04
0 引言
共享文件系統主要關注的問題之一是服務可用性。一直以來共享文件系統大多采用C/S或Web架構,數據集中存放于中心服務器,導致系統防災性較差,例如網站的FTP服務器等,一旦發生故障,可能導致系統服務中斷。筆者工作過的單位就發生過多次服務器宕機事件,使工作受到了很大影響。隨著P2P網絡技術的發展,分布式共享文件系統開始流行。分布式結構的共享文件系統在高可用性、易擴展性、負載平衡等用戶十分關注的技術性能上都有較大改善,但由于P2P網絡固有的動態性表現,使得文件檢索成功率仍然不穩定,特別在一些不可抗力事件的影響下,有些系統無法持續工作,導致文件受到破壞甚至丟失。結合系統備份技術,特別是熱備份技術以提高P2P文件共享系統的可用性與可靠性。在P2P分布式文件系統中,每個共享文件節點提供文件和存儲資源,管理本節點的文件及備份文件,在網絡中設置類似Gnutella的系統服務節點,以便于獲取節點和備份節點的網絡地址,并提供文件檢索與資源定位服務。
熱備份系統以雙機熱備份為例,采用兩臺物理位置不同,但同時運行熱備份程序的服務器,管理數據的備份、讀取與存儲,以持續保護數據的安全性。當主服務器出現故障時,備份服務器通過網絡主動接替主服務器工作,保證網絡服務不間斷。
相關研究主要集中在服務器監控方法與數據管理架構方面。如文獻的混合容災雙機熱備份系統提出新的心跳協議以解決主、備份系統的通信聯系與狀態監控問題;文獻將主機和備份機的數據通過網絡進行集中管理,雙機熱備份系統直接從存儲設備讀取與存儲所有數據,以保證數據的安全性及保密性。以上系統均采用在主、備份服務器上集中存放數據的模式,由于受到服務器存儲容量的限制,很難滿足大型文件管理系統對存儲容量及可用性的要求。本文提出的P2P架構下的共享文件熱備份系統,將共享文件節點備份關系構成環型線性表,解決了備份文件存放、系統服務平穩切換等問題,可維持系統不間斷工作,而且擴展性好,能夠保證共享文件的安全性。
1 系統熱備份模型
P2P節點基礎通信層與共享文件熱備份服務層形成系統的兩層架構,其中P2P節點基礎通信層實現所有節點間的點對點通信,共享文件熱備份服務層提供與文件熱備份相關的功能,以保證系統的可用性及訪問的安全性。
共享文件熱備份層是由系統服務節點和共享文件節點組成的覆蓋網。系統服務節點包括主服務節點和備份服務節點,系統服務節點管理所有共享文件節點,以保證備份文件的可用性,包括共享文件節點狀態監控、節點控制與負載平衡、節點信息查詢等。其中共享文件節點狀態監控由節點狀態監控算法實現,節點控制由節點加入算法和節點退出算法實現。共享文件節點存儲與管理自治文件及備份文件,是網絡共享文件資源的提供者和服務受益者,并能響應文件查詢請求。
為了實現網絡共享文件的熱備份,將共享文件節點間的備份關系設計成環型線性表結構,共享文件節點間邏輯結構如圖1所示。共享文件節點備份關系由系統服務節點進行管理與維護。
1.1 共享文件節點備份關系
為了明確描述共享文件節點間的備份關系,給出以下概念定義:
定義1:自治文件即共享文件節點向網絡提供的共享文件。
定義2:備份文件即其它共享文件節點以備份形式保存在本地節點中的文件。
所以本文將共享文件分成自治文件和備份文件兩類。每個共享文件節點設置共享文件表,用于記錄與管理節點自治文件及備份文件信息。
定義3:節點共享文件表(SFT,Shared file table),SFT={},其中id為文件編號,f為類型(0:自治文件或l:備份文件),t為共享文件更新時間,p為共享文件本地存放路徑。
為了有效管理系統服務節點及查詢各網絡節點的備份節點,應設置節點信息表和節點備份關系表。
定義4:節點信息表(NIT,Node information table),NIT={},其中Nid是節點編號,IP是節點IP地址和端口號,S是節點在線狀態。
定義5:節點備份關系表(BRT,Backup relationship ta.ble),BRT=(N,R),其中N={ai|1≤i≤n,n≥0,ai∈NIT},R={r},r={1,a2>,2,a3>,…,n-1,an>,n,ai>}。
N是節點集合,R是節點間備份關系集合,i,ai+1>表示ai所有自治文件備份到ai+1,。在BRT中,節點a1的前驅節點是an,節點an的后繼節點是a1,其余節點為ai-1,ai+1,是ai的前驅和后繼節點,所以BRT是個循環表。數據庫實現BRT時,BRT={},其中Bid為后繼節點編號。 1.2 節點加入算法
新節點加入網絡會引起節點間備份關系的變化,因為相關節點的自治文件都需要備份到后繼節點,以維持BRT線性表環型結構的完整性和一致性。本文約定新節點插入到BRT尾節點后,使BRT尾節點成為新節點的前驅節點,首節點成為新節點的后繼節點。
算法1節點加入算法。
輸入:BRT的尾指針nid,節點IPn。
輸出:在NIT和BRT尾部增加新節點,建立備份關系。
。1)NIT增加新記錄n,Sn>。
。2)如果BRT為φ,則在BRT尾部增加新記錄,轉第(6)步。
。3)取BRT尾節點,在BRT尾部增加新記錄。
。4)在NIT中定位記錄r,St>,獲取節點網址IPr。
。5)向節點IP,發送其自治文件到節點IPn備份的消息。
。6)修改BRT的尾指針為Nid。
新節點加入網絡要向系統服務節點發送注冊消息,調用節點加入算法完成3項任務:①在NIT和BRT增加新節點記錄,通過消息傳送的節點IP地址在NIT中建立記錄,生成節點編號Nid;②建立節點備份關系,通過在備份關系表BRT尾部插入節點,使尾節點成為新節點的前驅節點,插入節點后,BRT的首節點成為新節點的后繼節點,建立節點備份關系(線性表環型結構);③共享文件備份,向前驅節點發送消息,讓其將自治文件發送到新節點作備份,但由于新節點剛加人,自身的自治文件情況還不明確,所以暫時不在后繼節點作備份,而由節點文件發布算法實現文件備份。節點IP,收到消息,將SFTr(即SFTr中f=1)發送至節點IPn,SFTn=SFTr∩SFTn。
1.3 節點退出算法
系統服務節點定期接收所有共享文件節點發送的心跳消息,無心跳表明該節點已退出網絡,要調用節點退出算法調整前驅、后繼節點間的備份關系,并通知節點進行共享文件備份,最后刷新共享文件表SFT。
算法2節點退出算法
輸入:退出節點nid。
輸出:在NIT和BRT刪除退出的節點nid記錄,調整BRT備份關系。
。1)按nid在NIT中找到L,SL>、n,Sn>和N,SN>,獲取IPL和IPN,刪除記錄n,Sn>。
。2)按nid在BRT中找到、和,將更改成,刪除記錄。
。3)向節點IPN發送消息,將其備份文件變成自治文件。
。4)向節點IPL發送消息,將其自治文件發送到節點IPN作為備份文件。
節點IPN接收到消息,使SFTN={}中f=1。節點IPL收到消息,將SFTL(即SFTL中f=1)發送至節點IPN,SFTN=SFTL∩SFTN。
1.4 節點狀態監控算法
在線狀態的共享文件節點定時向系統服務節點發送心跳消息,系統服務節點接收到消息,找到節點記錄NIT={},設置S為在線狀態。系統服務節點會周期性地檢查NIT,若發現節點Nid離線,則選擇合適的備份節點,并調整共享文件節點間的備份關系,最后對所有共享文件節點刷新NIT。
算法3節點狀態監控算法
輸入:周期時間事件。
輸出:刷新關系文件節點NIT消息。
。1)for each Si∈NIT
如果si離線,則調用節點退出算法。
心跳協議也影響熱備份系統性能。心跳協議可利用Socket,以UDP、TCP、ICMP報文方式或串口通信方式加以實現。信息傳輸經過傳輸層、內核與通信接口軟件及應用軟件任務進行切換,整個過程環節多、耗費時間長,采用TCP心跳協議可保證連接的可靠性。另外,系統服務節點接收到共享文件節點前后兩次心跳的間隔期總會存在短暫的空白時間,若系統服務節點或共享文件節點出現故障,則均無法監控到,因此心跳時間設置會影響系統性能。
1.5 節點文件檢索算法
各節點文件檢索主要利用系統服務節點傳送給節點的NIT結合各節點的SFT加以實現。依靠過去成功檢索獲得的信息,在NIT中選擇部分或全部節點發送文件檢索請求,各節點接收到檢索消息,通過查詢SFT即可找到所需的文件。
算法4節點文件檢索算法。
輸人:節點ao要檢索的文件名f。
輸出:節點ai的返回結果。
發送檢索f消息給ai。
節點ai收到消息,在SFT中查詢f,如果找到則返回文件,否則返回未找到文件。節點ao根據返回結果對ai進行評價(評價指標為查詢成功次數),如果成功返回查找的文件,則增加查詢成功次數并記錄評價結果。算法中選擇節點的依據是查詢成功次數,所以次數多的節點首先被選中。如果全部返回結果均為未找到,則節點ao可擴大選擇節點范圍再進行查找。
2 軟件設計與實現
系統要共享的所有文件資源被分散存放到各文件共享節點中,并將檢索共享文件節點的信息發布到系統服務節點以便于管理。
本系統由P2P消息收發模塊、消息解析與任務調度模塊構成P2P節點基礎通信層,P2P節點控制與文件備份模塊、節點狀態監測模塊構成共享文件熱備份服務層。節點之間通信采用TCP協議,P2P節點監聽連接請求端口,有連接請求時創建消息接收線程,建立Socket通信連接并接收消息,通過應用層通信協議解析消息,任務調度發送消息給各處理模塊完成相應處理。
實驗系統軟件采用多線程技術、Socket通信技術和TCP協議實現可靠的數據通信。采用Microsoft Visual C6.0作為實驗系統軟件開發工具,同時采用Microsoft Access2010數據庫管理系統建立系統服務節點的NIT和BRT表,以及共享文件節點的SFT和NIT表。
3 結語
本文主要研究共享文件熱備份系統的結構設計問題,通過建立P2P網絡下線性結構的共享文件備份系統,解決了網絡節點變動控制、狀態監測與文件檢索等問題。系統能夠滿足中小型網絡文件資源共享系統中的文件熱備份需求,而且得益于P2P網絡系統可靠性強、擴展性與靈活性較高等特點,一定程度上提升了系統可用性,且系統運行穩定。下一步將運用面向行業的智能信息處理技術實現文件信息的智能檢索,并運用區塊鏈技術解決網絡安全性與溯源性問題,力求進一步提高系統可用性。
(跑lS)