鄭曉健,鄭子維
(1. 昆明理工大學津橋學院 電氣與信息工程學院,云南 昆明 650106;2. 云南云投股權投資基金管理有限公司,云南 昆明 650100)
P2P結構[1]與傳統(tǒng)網絡結構的差別在于讓共享資源和網絡服務分布到各P2P節(jié)點中,并以點對點的通信方式,實現(xiàn)P2P節(jié)點間的相互訪問,從而協(xié)同完成節(jié)點資源共享并提供各種服務。由于網絡中各P2P節(jié)點都參與到文件資源共享中,使各節(jié)點閑置的處理能力、存儲能力和信息資源得以充分利用。傳統(tǒng)的網絡資源共享服務一般采用C/S或B/S結構,例如FTP服務器,共享文件資源部署在中心服務器上,用戶在客戶端向服務器發(fā)出資源請求,服務器從資源庫中查找資源并返回給客戶端。然而當共享資源大量占用服務器的存儲器,同時訪問文件資源的用戶又較多時系統(tǒng)的負載將增大,響應速度就會降低,形成性能瓶頸。但是P2P結構不依賴中心服務器,資源分散到各P2P節(jié)點,使得系統(tǒng)的負載能力得到平衡[2],系統(tǒng)的可擴展性、健壯性得到增強,可以有效的解決中心服務器能力不足的問題[3-4]。所以P2P技術被應用到VoIP、流媒體、協(xié)同計算、資源共享等領域。
隨著企事業(yè)單位的發(fā)展,單位內部辦公信息的發(fā)布、管理和維護工作在逐日增加。單位內部的文件共享管理系統(tǒng)有助于建立方便高效的辦公環(huán)境,提高辦公效率。本文討論的P2P網絡文件共享系統(tǒng),由兩層式多個系統(tǒng)資源服務節(jié)點構成P2P網絡架構的分布式模式,可以有效的實現(xiàn)單位共享文件的管理和發(fā)布。
近年P2P架構的分布式文件共享系統(tǒng)正逐漸流行起來[5-7],原因在于它良好的系統(tǒng)特性,設計時應該采取技術手段來保持系統(tǒng)的擴展性、健壯性、負載平衡[4,8]等特征。
(1)擴展性,P2P結構要求在網絡中可以自由地增加節(jié)點,實現(xiàn)網絡擴展。加入節(jié)點后網絡資源數(shù)量和服務能力會得到提升,節(jié)點間的通信路徑會增加,通信能力也會加強,系統(tǒng)性能得到提升[3]。刪除節(jié)點后要采取技術措施,使系統(tǒng)性能不會受到影響。
(2)健壯性,為避免節(jié)點失效帶來的問題,通過任務和資源在節(jié)點上的再分配實現(xiàn),因此節(jié)點退出對系統(tǒng)性能影響不大。
(3)負載均衡,網絡負載變化時P2P節(jié)點可以分擔任務[8]。網絡節(jié)點的連接信息要保持同步刷新,合理分配任務,節(jié)點通過點對點通信模式,協(xié)同提供資源和服務,平衡網絡的負載。
下面介紹本系統(tǒng)包含的主要功能模塊:文件共享模塊和資源服務模塊。文件共享模塊主要完成用戶注冊、文件檢索、文件資源發(fā)布。資源服務模塊完成P2P節(jié)點狀態(tài)檢測、資源信息管理、用戶訪問控制,系統(tǒng)用例圖如圖1所示。
圖1 系統(tǒng)用例圖Fig.1 System use case diagram
本系統(tǒng)采用多個資源服務節(jié)點作為系統(tǒng)服務核心,文件共享節(jié)點分散存儲共享文件資源,系統(tǒng)服務節(jié)點協(xié)同完成文件資源檢索任務,形成分布式P2P拓撲結構,如圖2所示。系統(tǒng)由P2P網絡通信基礎設施層和共享文件資源覆蓋網絡層構成為兩層式、多個資源服務節(jié)點的P2P網絡架構。
圖2 系統(tǒng)結構圖Fig.2 System structure diagram
P2P網絡通信基礎設施層由服務器節(jié)點和 P2P節(jié)點組成,采用TCP通信協(xié)議實現(xiàn)所有節(jié)點間的點對點通信,保證消息及共享文件資源在節(jié)點間可靠地傳輸。所有節(jié)點為了響應其他節(jié)點的服務要求,需要隨時開啟監(jiān)聽功能,等待其他節(jié)點的連接請求,連接成功后才能與節(jié)點進行數(shù)據(jù)通信。
共享文件資源覆蓋網絡層由文件共享節(jié)點和資源服務節(jié)點,通過用戶協(xié)議組成資源覆蓋網絡。文件共享節(jié)點在系統(tǒng)服務節(jié)點注冊,相互交換網絡節(jié)點連接信息。通過連接信息實現(xiàn)系統(tǒng)服務節(jié)點管轄范圍內外所有節(jié)點間的點對點通信,完成資源檢索和獲取任務。
由于系統(tǒng)中存在多個資源服務節(jié)點,且各自管轄一批文件共享節(jié)點,為它們提供檢索信息服務,所以必須協(xié)同完成資源檢索任務。各個資源服務節(jié)點主要負責管理共享文件節(jié)點的注冊和退出、共享文件信息管理、共享文件節(jié)點的狀態(tài)檢測、資源服務節(jié)點間的任務協(xié)同、協(xié)助共享文件節(jié)點在網絡中檢索文件、用戶訪問權限管理等。
資源服務節(jié)點定時按照用戶協(xié)議向網絡廣播自己的IP地址、端口號等,文件共享節(jié)點利用這些連接信息可建立與資源服務節(jié)點的連接。文件共享節(jié)點加入網絡時,先到資源服務節(jié)點注冊,資源服務節(jié)點記錄該節(jié)點的IP地址、端口號、用戶名等相關信息并保存到數(shù)據(jù)庫的文件共享節(jié)點列表中,然后將當前在線的所有節(jié)點的連接信息發(fā)回,構成該節(jié)點的共享節(jié)點列表。通過列表信息,該節(jié)點可與所有在線節(jié)點進行點對點通信。
節(jié)點狀態(tài)檢測。由于網絡環(huán)境等因素的影響,可能導致網絡連接中斷,因此資源服務節(jié)點需定時向各共享文件節(jié)點和其他資源服務節(jié)點發(fā)送狀態(tài)檢測消息,監(jiān)測節(jié)點的在線狀態(tài),發(fā)現(xiàn)有節(jié)點連接中斷,要及時更新連接信息。如果節(jié)點狀態(tài)有變化,要向在線節(jié)點刷新連接信息。
資源服務節(jié)點接收到文件共享節(jié)點發(fā)布的共享文件消息,將在共享文件表中記錄共享文件位置信息,如文件路徑、文件名稱、文件大小、修改時間、文件所在節(jié)點等。收到節(jié)點離線消息時,將撤銷共享文件記錄,實現(xiàn)共享文件信息管理,為將來共享文件檢索服務。
資源服務節(jié)點接收到文件共享節(jié)點發(fā)出的資源檢索消息,將在本地共享文件表中檢索要求的文件,如果檢索成功,就返回文件的位置信息和節(jié)點連接信息。如果本地檢索失敗,將開始遠程檢索,即向其他資源服務節(jié)點發(fā)送協(xié)同檢索消息,收到檢索消息的資源服務節(jié)點將同時在其共享文件表中進行查找,然后返回檢索結果。文件共享節(jié)點收到資源服務節(jié)點回復的文件位置信息和節(jié)點連接信息后,將直接與目標節(jié)點建立連接,再下載共享文件。
系統(tǒng)要共享的所有文件資源被分散存放到各文件共享節(jié)點,并將檢索共享文件的信息發(fā)布到對應資源服務節(jié)點,便于任何節(jié)點檢索。
文件共享節(jié)點加入時向系統(tǒng)服務節(jié)點注冊,傳送網絡連接信息,通過這些信息文件共享節(jié)點間才能實現(xiàn)透明的互訪。文件共享節(jié)點進行文件檢索時向資源服務提交文件請求消息,資源服務協(xié)助檢索并獲得分布在節(jié)點中的文件資源。文件資源發(fā)布時向資源服務發(fā)送要共享文件的目錄消息。
本系統(tǒng)的P2P信息通信架構[8]由P2P消息收發(fā)、消息解析與任務調度、P2P節(jié)點注冊管理、P2P節(jié)點狀態(tài)監(jiān)測回饋處理、文件共享管理等模塊組成。P2P節(jié)點之間的通信采用TCP協(xié)議。P2P節(jié)點監(jiān)聽連接請求端口,有連接請求時創(chuàng)建消息接收線程,建立socket通信連接并接收消息,通過應用層通信協(xié)議解析消息,任務調度發(fā)送消息給各處理模塊完成相應的處理。
系統(tǒng)的文件共享類圖如圖3所示,資源服務類圖如圖4所示。P2P節(jié)點間的通信由通信類完成,接收消息和解析由消息收發(fā)類完成,通過任務調度,由相關模塊完成消息處理。采用了多線程技術、Socket通信技術,利用TCP協(xié)議實現(xiàn)了可靠的數(shù)據(jù)通信。本系統(tǒng)軟件采用 Microsoft Visual C++6.0、Microsoft Access2010編程實現(xiàn)。
圖3 文件共享類圖Fig.3 File sharing class diagram
圖4 資源服務類圖Fig.4 Resource service class diagram
本文介紹了一種 P2P 網絡結構的文件共享系統(tǒng)設計,系統(tǒng)為分布式文件管理架構,能夠滿足企事業(yè)單位文件信息資源共享的需求。通過P2P網絡結構實現(xiàn)分布式應用系統(tǒng),介紹了兩層式、多服務節(jié)點的文件共享平臺的實現(xiàn)過程。得益于P2P網絡系統(tǒng)的可靠性好、擴展性和靈活性較高等特征,系統(tǒng)工作效率也得到提升,系統(tǒng)運行穩(wěn)定。下一步將應用面向領域的智能搜索引擎技術[9],實現(xiàn)文件資源信息的智能檢索,并且運用區(qū)塊鏈技術解決網絡的安全性和溯源性問題[10-11],提高系統(tǒng)的可用性。