馮雪 李靖
摘要:說明了一種基于微軟的分布式文件系統(tǒng)(DFS)及部分Asp.Net定制開發(fā)功能的解決方案。系統(tǒng)通過定制開發(fā)的Web頁面、WindOWS桌面版工具和郵件客戶端Outlook插件,為用戶提供上傳和下栽文件(加密傳輸、斷點(diǎn)續(xù)傳)、個(gè)人文件管理、查看訪問日志和文件鏈接分享等便利功能;為管理員提供共享文件空間額度管理、文件定期清理和用戶訪問日志審計(jì)等功能。
關(guān)鍵詞:DFS;DFS-N;DFS-R;Outlook插件
0引言
在大中型組織中,用戶之間傳輸或者共享大文件(幾GB至幾百GB的文件,以下簡稱“大文件”)的需求非常普遍。這種大文件遠(yuǎn)遠(yuǎn)超過了郵件系統(tǒng)所允許的傳輸上限。而企業(yè)的廣域網(wǎng)帶寬非常有限且十分昂貴,一旦用戶跨廣域網(wǎng)傳輸大文件,特別是多人間共享時(shí),極易造成廣域網(wǎng)堵塞。用戶不得已,經(jīng)常通過QQ等共享聊天工具進(jìn)行點(diǎn)對(duì)點(diǎn)傳輸,免費(fèi)的互聯(lián)網(wǎng)網(wǎng)盤,或者在企業(yè)內(nèi)部部署的文件共享服務(wù)器,通過共享文件夾共享或者傳輸大文件。但使用互聯(lián)網(wǎng)工具傳輸大文件,不但速度慢,還容易中斷,信息安全難以保證。本文所描述的“企業(yè)大文件傳輸和共享系統(tǒng)”,是基于微軟的分布式文件系統(tǒng)(DFS)的一種創(chuàng)新。通過在企業(yè)內(nèi)部部署多臺(tái)DFS并組成文件同步和復(fù)制網(wǎng)絡(luò),利用活動(dòng)目錄(Active Directory)的用戶和PC管理功能,解決了大文件的分布式存儲(chǔ)、統(tǒng)一訪問、高效安全傳輸與復(fù)制和用戶就近訪問等問題。再利用自定義開發(fā)的多種用戶端工具:Outlook插件、客戶端和Web網(wǎng)站,解決了客戶端的文件上傳下載、斷點(diǎn)續(xù)傳、文件訪問地址的分享和傳播、權(quán)限管理及文件清理等問題,并大大降低了開發(fā)難度和工作量,形成了一套完善的企業(yè)大文件傳輸和共享解決方案。
1基于DFS的大文件傳輸系統(tǒng)架構(gòu)
本系統(tǒng)采用了DFS作為系統(tǒng)的后端文件服務(wù)器,通過在廣域網(wǎng)的片區(qū)中心節(jié)點(diǎn)部署DFS服務(wù)器和自主開發(fā)的文件傳輸服務(wù),借助DFS-N的能力,解決了大文件的統(tǒng)一訪問和存儲(chǔ)空間擴(kuò)展靈活性問題;借助于DFS-R的能力,解決了文件系統(tǒng)的分布式部署和智能就近訪問問題。然后通過在每臺(tái)DFS上部署自定義開發(fā)的文件傳輸Web服務(wù),多臺(tái)DFS的Web服務(wù)之間通過SQL Server數(shù)據(jù)庫共享配置信息和用戶傳輸狀態(tài)等信息,解決了全網(wǎng)用戶的服務(wù)器至客戶端的文件上傳和下載、傳輸加密、斷點(diǎn)續(xù)傳、配置同步和文件清理等問題,系統(tǒng)的架構(gòu)圖如圖1所示。
2就近上傳與下載及文件復(fù)制
本系統(tǒng)的服務(wù)部部署在廣域網(wǎng)的各個(gè)網(wǎng)絡(luò)區(qū)域中心站點(diǎn)。當(dāng)客戶端通過DNS解析到某一臺(tái)服務(wù)器上,該服務(wù)器上的大文件傳輸服務(wù)會(huì)根據(jù)客戶端IP子網(wǎng)查找其所屬的AD站點(diǎn)(一般為同一局域網(wǎng))內(nèi)的服務(wù)器。如果客戶端所在站點(diǎn)中沒有本系統(tǒng)的服務(wù)器,則選擇—個(gè)“距離”最近的服務(wù)器,從而實(shí)現(xiàn)文件的就近上傳和下載??紤]到用戶之間文件分享行為的“局部性”,系統(tǒng)為每個(gè)用戶創(chuàng)建了2個(gè)子文件夾:集團(tuán)公司和分公司,分別位于2個(gè)DFS復(fù)制組中,并且配置不同的復(fù)制策略來進(jìn)一步優(yōu)化性能,示意圖如圖2所示。
大文件傳輸服務(wù)將文件在DFS中的UNC路徑保存在sQL Server數(shù)據(jù)庫中,巧妙地利用了DFS的諸多功能,免編程實(shí)現(xiàn)了文件在廣域網(wǎng)中的存儲(chǔ)、高效復(fù)制(遠(yuǎn)程差分壓縮(RDC)的壓縮復(fù)制,僅復(fù)制變化的文件塊)和就近訪問等高級(jí)功能。
3客戶端至服務(wù)器的大文件傳輸
為了解決客戶端到DFS服務(wù)器傳輸“最后一公里”的問題,開發(fā)了文件傳輸Web服務(wù)和大文件傳輸客戶端,實(shí)現(xiàn)了客戶端至服務(wù)器的傳輸加密、傳輸壓縮、完整性校驗(yàn)、斷點(diǎn)續(xù)傳等功能。國內(nèi)共開發(fā)了3種客戶端:Outlook插件、Web網(wǎng)站和Windows客戶端,實(shí)現(xiàn)相同的功能。無論哪種客戶端,都是基于HTFPS協(xié)議實(shí)現(xiàn)的傳輸,包括斷點(diǎn)續(xù)傳??紤]到用戶普遍習(xí)慣于通過郵件發(fā)送文件附件,還特意開發(fā)了Office Outlook郵件客戶端的大文件插件,用戶在Outlook中點(diǎn)擊大文件插件圖標(biāo),可以打開自己的文件空間,選擇文件后將文件的下載鏈接插入郵件正文發(fā)送給接收者,接收者點(diǎn)擊鏈接下載文件。
4下載鏈接加密
為了保護(hù)數(shù)據(jù)安全,用戶在分享文件時(shí),可以選擇是否允許外部用戶下載。系統(tǒng)生成文件分享鏈接時(shí),并不是直接通過DFS服務(wù)器上的路徑將文件發(fā)送給接收者,而是利用MD5算法生成—個(gè)該文件的加密串并附加在URL后面,并將映射關(guān)系保存在數(shù)據(jù)庫中。當(dāng)下載者點(diǎn)擊鏈接時(shí),系統(tǒng)會(huì)對(duì)MD5碼進(jìn)行校驗(yàn),如果是一個(gè)僅對(duì)組織內(nèi)用戶分享的文件,則會(huì)要求下載者先登錄。
5斷點(diǎn)續(xù)傳
HTTP/HTTPs協(xié)議是一種基于TCP的簡單協(xié)議,也是一種無狀態(tài)協(xié)議,對(duì)事務(wù)處理沒有記憶能力。WEB服務(wù)器,例如本系統(tǒng)所使用的WindowsⅡs是通過Session對(duì)象來保持會(huì)話的。而會(huì)話保持時(shí)間不能太長,否則將導(dǎo)致WEB服務(wù)器的并行處理能力大大降低。在目前常見的廣域網(wǎng)帶寬和網(wǎng)速下,要通過HTTP傳輸大文件,通常需要幾個(gè)小時(shí)甚至幾十個(gè)小時(shí),這已經(jīng)超出了Ⅱs服務(wù)器可以承受的最長會(huì)話保持時(shí)間,因此,必須解決斷點(diǎn)續(xù)傳問題。
斷點(diǎn)續(xù)傳就是在上一次下載時(shí)斷開的位置開始繼續(xù)下載。本系統(tǒng)采用在HTTP請(qǐng)求/回復(fù)報(bào)文頭中的Range屬性來表示客戶端希望從何處繼續(xù)上傳或者下載,從而實(shí)現(xiàn)斷點(diǎn)續(xù)傳。例如,如果要告訴服務(wù)器從第3096 Byte開始下載,請(qǐng)求報(bào)文如下:
5結(jié)束語
如今,WAF在中國如火如荼地發(fā)展,很多企業(yè)投入到對(duì)WAF的研究之中。WAF為網(wǎng)上銀行系統(tǒng)安全保駕護(hù)航,不HttpWebRequest類所提供的操作HTTPRequest屬性的方法,實(shí)現(xiàn)了斷點(diǎn)續(xù)傳。HttpWebRequest類提供了操作公共HTTP標(biāo)頭屬性名值對(duì)的方法,還提供了AddRange方法來修改Range屬性,從而可以向Web服務(wù)器發(fā)送大文件傳輸?shù)拈_始或結(jié)束位置信息。
6結(jié)束語
本文介紹了基于微軟DFS部署的大文件傳輸系統(tǒng)的技術(shù)原理以及工程實(shí)現(xiàn)中的創(chuàng)新性。目前該系統(tǒng)已經(jīng)在組織總部及各片區(qū)中心部署了9臺(tái)DFS服務(wù)器和大文件傳輸Web站點(diǎn),實(shí)際使用過程中發(fā)現(xiàn)DFS后臺(tái)文件復(fù)制同步高效、健壯、安全,客戶端程序和Outlook插件用戶使用反饋良好,能夠方便地下載和分享文件,很好地滿足了大型組織分享幾十GB級(jí)別大型工程設(shè)計(jì)文件、視頻文件的需求。