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