摘 要 本文針對在多節(jié)點(diǎn)服務(wù)器上報(bào)數(shù)據(jù)時(shí)容易存在文件重名的問題,提出了一種分布式環(huán)境下多服務(wù)器數(shù)據(jù)報(bào)送方法,通過分布式鎖服務(wù)器和統(tǒng)一編號服務(wù)器,對業(yè)務(wù)數(shù)據(jù)進(jìn)行了統(tǒng)一命名,避免了報(bào)送目的端文件服務(wù)器上的文件重名和簡化了文件出錯重傳機(jī)制,并對傳送的數(shù)據(jù)文件進(jìn)行二進(jìn)制的壓縮和多重加密,通過sftp途徑將數(shù)據(jù)文件傳輸和上傳至服務(wù)器,提高數(shù)據(jù)傳輸安全性。
關(guān)鍵詞 分布式環(huán)境;數(shù)據(jù)報(bào)送;數(shù)據(jù)傳輸安全
引言
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,互聯(lián)網(wǎng)應(yīng)用越來越復(fù)雜,數(shù)據(jù)交互越來越頻繁,一個大型的業(yè)務(wù)系統(tǒng)通常由多個業(yè)務(wù)子系統(tǒng)組成,通過分布式部署的方式共同完成業(yè)務(wù)服務(wù)[1]。在這個背景下,不同的業(yè)務(wù)子系統(tǒng)之間必然會存在數(shù)據(jù)交互,考慮到業(yè)務(wù)子系統(tǒng)的健康穩(wěn)定運(yùn)行,而同一功能的業(yè)務(wù)子系統(tǒng)通常又會部署多個主從節(jié)點(diǎn)服務(wù)器以分擔(dān)性能壓力,由于相同的節(jié)點(diǎn)服務(wù)器部署的都是同一個應(yīng)用,運(yùn)行和產(chǎn)生數(shù)據(jù)的方式都是完全一致的,為了便于分析和查找,通常數(shù)據(jù)文件都會在命名中添加時(shí)間戳,這樣在多臺節(jié)點(diǎn)服務(wù)器上就有一定概率會產(chǎn)生相同名稱的數(shù)據(jù)文件,當(dāng)將這些數(shù)據(jù)文件進(jìn)行報(bào)送的時(shí)候,可能因?yàn)槲募貜?fù)問題造成報(bào)送失敗或文件覆蓋,從而丟失數(shù)據(jù)[2]。另外,多個業(yè)務(wù)子系統(tǒng)可能由不同的公司、開發(fā)組承建,由于共享一些網(wǎng)絡(luò)資源,需要保證數(shù)據(jù)傳輸?shù)陌踩院涂煽啃訹3]。
針對以上情況,本文提出了一種分布式環(huán)境下多服務(wù)器數(shù)據(jù)報(bào)送方法,通過分布式鎖服務(wù)器和統(tǒng)一編號服務(wù)器,對業(yè)務(wù)數(shù)據(jù)進(jìn)行了統(tǒng)一命名,避免同一時(shí)間多個業(yè)務(wù)節(jié)點(diǎn)服務(wù)器向統(tǒng)一編號服務(wù)器同時(shí)申請編號,不僅避免了報(bào)送目的端文件服務(wù)器上的文件重名,也簡化了文件出錯重傳機(jī)制,傳送出錯的文件無須再重新進(jìn)行錯誤流程的特殊處理。另外,為提高數(shù)據(jù)傳輸?shù)陌踩裕痉椒▽?shù)據(jù)文件進(jìn)行AES和openssql雙重加密,只有擁有私鑰的文件接收服務(wù)器才能正確解密,即使數(shù)據(jù)文件被其他惡意應(yīng)用截獲,也無法正確解密讀取數(shù)據(jù)。
1多服務(wù)器數(shù)據(jù)報(bào)送基本處理流程
由于存在多臺業(yè)務(wù)服務(wù)器,且都產(chǎn)生同質(zhì)數(shù)據(jù),不同業(yè)務(wù)服務(wù)器上產(chǎn)生的數(shù)據(jù)有存在重名的可能性。如果直接向文件服務(wù)器進(jìn)行報(bào)送,在文件服務(wù)器上會收到相同命名的文件,可能會產(chǎn)生數(shù)據(jù)的覆蓋或丟失。為此本文方法從統(tǒng)一編號服務(wù)器獲取唯一的編號,可以附加在原文件名后,避免造成文件重名。為防止多個業(yè)務(wù)服務(wù)器同時(shí)報(bào)送數(shù)據(jù)導(dǎo)致報(bào)送沖突,本文引入分布式鎖服務(wù)器,加鎖并攔截其他業(yè)務(wù)節(jié)點(diǎn)服務(wù)器訪問,多服務(wù)器數(shù)據(jù)報(bào)送基本處理流程。
(1)業(yè)務(wù)節(jié)點(diǎn)服務(wù)器按照業(yè)務(wù)邏輯生成數(shù)據(jù)文件,數(shù)據(jù)文件按照生成時(shí)間進(jìn)行命名;
(2)對數(shù)據(jù)文件進(jìn)行壓縮和加密,加密時(shí)使用對外公布的公鑰對壓縮文件進(jìn)行openssql加密,生成加密后的數(shù)據(jù)文件;
(3)向分布式鎖服務(wù)器申請?jiān)L問統(tǒng)一編號服務(wù)器,如果當(dāng)前有其他業(yè)務(wù)節(jié)點(diǎn)服務(wù)器正在連接統(tǒng)一編號服務(wù)器,則拒絕請求并告知業(yè)務(wù)服務(wù)器短暫等待之后再重新發(fā)起申請;
(4)分布式鎖服務(wù)器允許訪問統(tǒng)一編號服務(wù)器,加鎖并攔截其他業(yè)務(wù)節(jié)點(diǎn)服務(wù)器訪問;
(5)訪問統(tǒng)一編號服務(wù)器,由統(tǒng)一編號服務(wù)器根據(jù)資源類型、時(shí)間等參數(shù)自動計(jì)算生成新編號,并將最新編號更新到數(shù)據(jù)存儲中;
(6)業(yè)務(wù)節(jié)點(diǎn)服務(wù)器拿到申請的編號,對加密文件進(jìn)行重命名,附加上統(tǒng)一編號,確保加密文件全網(wǎng)唯一;
(7)通過sftp上傳至文件服務(wù)器指定目錄;
(8)出錯重傳:重復(fù)3-8步驟即可。
2業(yè)務(wù)服務(wù)器數(shù)據(jù)文件壓縮加密上傳流程
傳送的數(shù)據(jù)文件進(jìn)行了二進(jìn)制的壓縮和多重加密,確保數(shù)據(jù)文件被非法截獲后無法正常解析,并且通過sftp途徑將數(shù)據(jù)文件傳輸和上傳至服務(wù)器,提高數(shù)據(jù)傳輸?shù)陌踩浴?/p>
(1)業(yè)務(wù)節(jié)點(diǎn)服務(wù)器產(chǎn)生新的數(shù)據(jù)文件,同時(shí)隨機(jī)生成n位的密碼文件.txt;
(2)對數(shù)據(jù)文件名稱、原始大小、數(shù)據(jù)條數(shù)、生成時(shí)間生成一個校驗(yàn)文件;
(3)將數(shù)據(jù)文件和校驗(yàn)文件壓縮到一個壓縮包中,壓縮算法使用tar和gz方式;
(4)用第一步生成的密碼文件對壓縮文件進(jìn)行AES對稱加密,得到加密數(shù)據(jù)文件;
(5)用文件服務(wù)器對外開放的公鑰,使用openssl非對稱算法對密碼文件進(jìn)行加密,得到.sha1加密密碼文件;
(6)將加密數(shù)據(jù)文件和加密密碼文件通過sftp途徑上傳至文件服務(wù)器[4]。
3結(jié)束語
本方法采用分布式鎖服務(wù)器和統(tǒng)一編號服務(wù)器對業(yè)務(wù)數(shù)據(jù)進(jìn)行了統(tǒng)一命名,傳送的數(shù)據(jù)文件進(jìn)行了二進(jìn)制的壓縮和多重加密,并通過sftp途徑傳輸和上傳至服務(wù)器,相比于分布式環(huán)境下常規(guī)數(shù)據(jù)報(bào)送方法具備以下優(yōu)點(diǎn)如下:
3.1 數(shù)據(jù)文件防重名
本文采用統(tǒng)一編號服務(wù)器獲取唯一的編號,不會造成文件重名;同時(shí)引入分布式鎖服務(wù)器,避免同一時(shí)間多個業(yè)務(wù)節(jié)點(diǎn)服務(wù)器向統(tǒng)一編號服務(wù)器同時(shí)申請編號,防止多個業(yè)務(wù)服務(wù)器數(shù)據(jù)上報(bào)沖突。
3.2 出錯文件易重傳
由于引入了統(tǒng)一編號服務(wù)器,傳送出錯的文件不需要再重新進(jìn)行錯誤流程的特殊處理,只需要重新向統(tǒng)一編號服務(wù)器申請新編號即可按照正常報(bào)送流程進(jìn)行報(bào)送,一定程度簡化了文件出錯重傳機(jī)制。
3.3 數(shù)據(jù)傳輸更安全
本文采用了一系列數(shù)據(jù)安全校驗(yàn)方法,包括生成數(shù)據(jù)文件、校驗(yàn)文件、壓縮文件、對稱加密/解密、非對稱加密/解密等過程,并通過sftp途徑將數(shù)據(jù)文件上傳至文件服務(wù)器,提高了數(shù)據(jù)傳輸?shù)陌踩浴?/p>
3.4 業(yè)務(wù)節(jié)點(diǎn)服務(wù)器易擴(kuò)展
由于數(shù)據(jù)報(bào)送時(shí)都從編號服務(wù)器獲取統(tǒng)一編號,當(dāng)新增加一臺業(yè)務(wù)節(jié)點(diǎn)服務(wù)器時(shí),新服務(wù)器所多產(chǎn)生的數(shù)據(jù)文件采用相同的流程獲取編號,文件服務(wù)器仍然可以按照原定業(yè)務(wù)邏輯進(jìn)行數(shù)據(jù)處理。
參考文獻(xiàn)
[1] 張群,熊英,黃慶炬. 分布式教學(xué)系統(tǒng)中數(shù)據(jù)交互的實(shí)現(xiàn)[J]. 軟件導(dǎo)刊,2006,(17):95-97.
[2] 王磊,劉曉鵬. 海量文件傳輸重名避規(guī)的研究和實(shí)現(xiàn)[J]. 科技資訊,2008,(34):227.
[3] 胡曉婷,覃中平,張紅,等. OpenSSL中AES算法的研究與優(yōu)化[J]. 微計(jì)算機(jī)信息,2009,(12):89-91.
[4] 謝長生,李曉鈺. 基于網(wǎng)絡(luò)備份系統(tǒng)的SFTP性能優(yōu)化分析與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與科學(xué),2003,(5):5-8,13.
作者簡介
陳龍(1988-),男,四川成都人;研究方向:數(shù)字家庭、智能組網(wǎng)。