鄭曉健,鄭子維
(1. 昆明理工大學津橋學院 電氣與信息工程學院,云南 昆明 650106;2. 云南云投股權投資基金管理有限公司,云南 昆明 650100)
P2P結構[1]與傳統網絡結構的差別在于讓共享資源和網絡服務分布到各P2P節點中,并以點對點的通信方式,實現P2P節點間的相互訪問,從而協同完成節點資源共享并提供各種服務。由于網絡中各P2P節點都參與到文件資源共享中,使各節點閑置的處理能力、存儲能力和信息資源得以充分利用。傳統的網絡資源共享服務一般采用C/S或B/S結構,例如FTP服務器,共享文件資源部署在中心服務器上,用戶在客戶端向服務器發出資源請求,服務器從資源庫中查找資源并返回給客戶端。然而當共享資源大量占用服務器的存儲器,同時訪問文件資源的用戶又較多時系統的負載將增大,響應速度就會降低,形成性能瓶頸。但是P2P結構不依賴中心服務器,資源分散到各P2P節點,使得系統的負載能力得到平衡[2],系統的可擴展性、健壯性得到增強,可以有效的解決中心服務器能力不足的問題[3-4]。所以P2P技術被應用到VoIP、流媒體、協同計算、資源共享等領域。
隨著企事業單位的發展,單位內部辦公信息的發布、管理和維護工作在逐日增加。單位內部的文件共享管理系統有助于建立方便高效的辦公環境,提高辦公效率。本文討論的P2P網絡文件共享系統,由兩層式多個系統資源服務節點構成P2P網絡架構的分布式模式,可以有效的實現單位共享文件的管理和發布。
近年P2P架構的分布式文件共享系統正逐漸流行起來[5-7],原因在于它良好的系統特性,設計時應該采取技術手段來保持系統的擴展性、健壯性、負載平衡[4,8]等特征。
(1)擴展性,P2P結構要求在網絡中可以自由地增加節點,實現網絡擴展。加入節點后網絡資源數量和服務能力會得到提升,節點間的通信路徑會增加,通信能力也會加強,系統性能得到提升[3]。刪除節點后要采取技術措施,使系統性能不會受到影響。
(2)健壯性,為避免節點失效帶來的問題,通過任務和資源在節點上的再分配實現,因此節點退出對系統性能影響不大。
(3)負載均衡,網絡負載變化時P2P節點可以分擔任務[8]。網絡節點的連接信息要保持同步刷新,合理分配任務,節點通過點對點通信模式,協同提供資源和服務,平衡網絡的負載。
下面介紹本系統包含的主要功能模塊:文件共享模塊和資源服務模塊。文件共享模塊主要完成用戶注冊、文件檢索、文件資源發布。資源服務模塊完成P2P節點狀態檢測、資源信息管理、用戶訪問控制,系統用例圖如圖1所示。

圖1 系統用例圖Fig.1 System use case diagram
本系統采用多個資源服務節點作為系統服務核心,文件共享節點分散存儲共享文件資源,系統服務節點協同完成文件資源檢索任務,形成分布式P2P拓撲結構,如圖2所示。系統由P2P網絡通信基礎設施層和共享文件資源覆蓋網絡層構成為兩層式、多個資源服務節點的P2P網絡架構。

圖2 系統結構圖Fig.2 System structure diagram
P2P網絡通信基礎設施層由服務器節點和 P2P節點組成,采用TCP通信協議實現所有節點間的點對點通信,保證消息及共享文件資源在節點間可靠地傳輸。所有節點為了響應其他節點的服務要求,需要隨時開啟監聽功能,等待其他節點的連接請求,連接成功后才能與節點進行數據通信。
共享文件資源覆蓋網絡層由文件共享節點和資源服務節點,通過用戶協議組成資源覆蓋網絡。文件共享節點在系統服務節點注冊,相互交換網絡節點連接信息。通過連接信息實現系統服務節點管轄范圍內外所有節點間的點對點通信,完成資源檢索和獲取任務。
由于系統中存在多個資源服務節點,且各自管轄一批文件共享節點,為它們提供檢索信息服務,所以必須協同完成資源檢索任務。各個資源服務節點主要負責管理共享文件節點的注冊和退出、共享文件信息管理、共享文件節點的狀態檢測、資源服務節點間的任務協同、協助共享文件節點在網絡中檢索文件、用戶訪問權限管理等。
資源服務節點定時按照用戶協議向網絡廣播自己的IP地址、端口號等,文件共享節點利用這些連接信息可建立與資源服務節點的連接。文件共享節點加入網絡時,先到資源服務節點注冊,資源服務節點記錄該節點的IP地址、端口號、用戶名等相關信息并保存到數據庫的文件共享節點列表中,然后將當前在線的所有節點的連接信息發回,構成該節點的共享節點列表。通過列表信息,該節點可與所有在線節點進行點對點通信。
節點狀態檢測。由于網絡環境等因素的影響,可能導致網絡連接中斷,因此資源服務節點需定時向各共享文件節點和其他資源服務節點發送狀態檢測消息,監測節點的在線狀態,發現有節點連接中斷,要及時更新連接信息。如果節點狀態有變化,要向在線節點刷新連接信息。
資源服務節點接收到文件共享節點發布的共享文件消息,將在共享文件表中記錄共享文件位置信息,如文件路徑、文件名稱、文件大小、修改時間、文件所在節點等。收到節點離線消息時,將撤銷共享文件記錄,實現共享文件信息管理,為將來共享文件檢索服務。
資源服務節點接收到文件共享節點發出的資源檢索消息,將在本地共享文件表中檢索要求的文件,如果檢索成功,就返回文件的位置信息和節點連接信息。如果本地檢索失敗,將開始遠程檢索,即向其他資源服務節點發送協同檢索消息,收到檢索消息的資源服務節點將同時在其共享文件表中進行查找,然后返回檢索結果。文件共享節點收到資源服務節點回復的文件位置信息和節點連接信息后,將直接與目標節點建立連接,再下載共享文件。
系統要共享的所有文件資源被分散存放到各文件共享節點,并將檢索共享文件的信息發布到對應資源服務節點,便于任何節點檢索。
文件共享節點加入時向系統服務節點注冊,傳送網絡連接信息,通過這些信息文件共享節點間才能實現透明的互訪。文件共享節點進行文件檢索時向資源服務提交文件請求消息,資源服務協助檢索并獲得分布在節點中的文件資源。文件資源發布時向資源服務發送要共享文件的目錄消息。
本系統的P2P信息通信架構[8]由P2P消息收發、消息解析與任務調度、P2P節點注冊管理、P2P節點狀態監測回饋處理、文件共享管理等模塊組成。P2P節點之間的通信采用TCP協議。P2P節點監聽連接請求端口,有連接請求時創建消息接收線程,建立socket通信連接并接收消息,通過應用層通信協議解析消息,任務調度發送消息給各處理模塊完成相應的處理。
系統的文件共享類圖如圖3所示,資源服務類圖如圖4所示。P2P節點間的通信由通信類完成,接收消息和解析由消息收發類完成,通過任務調度,由相關模塊完成消息處理。采用了多線程技術、Socket通信技術,利用TCP協議實現了可靠的數據通信。本系統軟件采用 Microsoft Visual C++6.0、Microsoft Access2010編程實現。

圖3 文件共享類圖Fig.3 File sharing class diagram

圖4 資源服務類圖Fig.4 Resource service class diagram
本文介紹了一種 P2P 網絡結構的文件共享系統設計,系統為分布式文件管理架構,能夠滿足企事業單位文件信息資源共享的需求。通過P2P網絡結構實現分布式應用系統,介紹了兩層式、多服務節點的文件共享平臺的實現過程。得益于P2P網絡系統的可靠性好、擴展性和靈活性較高等特征,系統工作效率也得到提升,系統運行穩定。下一步將應用面向領域的智能搜索引擎技術[9],實現文件資源信息的智能檢索,并且運用區塊鏈技術解決網絡的安全性和溯源性問題[10-11],提高系統的可用性。