張俊峰
(阜陽職業(yè)技術(shù)學(xué)院工程科技學(xué)院,阜陽 236000)
關(guān)鍵字:家庭物聯(lián)網(wǎng);網(wǎng)絡(luò)編碼;云存儲;低計算能力;實時性;安全性。
家庭物聯(lián)網(wǎng)(又稱智能家居)是物聯(lián)網(wǎng)眾多應(yīng)用場景之一,不像其他物聯(lián)網(wǎng)應(yīng)用場景受限于能量功耗、網(wǎng)絡(luò)網(wǎng)速等因素發(fā)展較慢,家庭物聯(lián)網(wǎng)已經(jīng)成為物聯(lián)網(wǎng)應(yīng)用范圍最廣、最普及的應(yīng)用場景,深刻改變及影響人們的生活方式。伴隨著家庭物聯(lián)網(wǎng)的不斷普及,各種物聯(lián)網(wǎng)設(shè)備源源不斷產(chǎn)生海量數(shù)據(jù),海量數(shù)據(jù)存儲成為家庭物聯(lián)網(wǎng)亟待解決的一個關(guān)鍵問題。
海量數(shù)據(jù)存儲主要通過分布式存儲方式實現(xiàn)[1-3],有兩種技術(shù)方案:一是通過傳統(tǒng)的分布式數(shù)據(jù)庫系統(tǒng),如MySQL、MS SQL Server、Oracle等實現(xiàn),但該方式無法滿足物聯(lián)網(wǎng)對于數(shù)據(jù)的實時性要求[4];二是通過云存儲技術(shù)實現(xiàn),該技術(shù)可以充分利用網(wǎng)絡(luò)中的存儲資源,為多用戶同時提供高速率、高吞吐量的數(shù)據(jù)資源訪問服務(wù),云存儲是解決物聯(lián)網(wǎng)海量數(shù)據(jù)存儲的一個有效途徑[5-6]。但以上存儲方案主要側(cè)重于數(shù)據(jù)的有效存儲,沒有著重考慮物聯(lián)網(wǎng)中主要設(shè)備都是一些低計算能力終端的情況,因此設(shè)計的方案在實際執(zhí)行中會遇到很多問題。另外,如何充分利用家庭物聯(lián)網(wǎng)中眾多設(shè)備的存儲能力以提高存儲效率也是解決家庭物聯(lián)網(wǎng)海量數(shù)據(jù)存儲問題的途徑之一。
綜上,基于網(wǎng)絡(luò)編碼的云存儲方案具有對存儲終端計算能力要求低、數(shù)據(jù)存儲可靠性高等優(yōu)勢,可以很好地解決家庭物聯(lián)網(wǎng)中的網(wǎng)絡(luò)設(shè)備計算能力低、數(shù)據(jù)實時性和安全性要求高等問題,同時又能充分利用物聯(lián)網(wǎng)中設(shè)備多的優(yōu)勢,進(jìn)一步提高數(shù)據(jù)存儲的可靠性和有效性,因此,基于網(wǎng)絡(luò)編碼的云存儲方案在解決家庭物聯(lián)網(wǎng)海量數(shù)據(jù)安全有效存儲問題上具有廣闊的應(yīng)用前景。
網(wǎng)絡(luò)編碼是利用線性代數(shù)的基本原理,按照一定的方式將數(shù)據(jù)塊進(jìn)行線性組合的一種編碼方式,相關(guān)文獻(xiàn)分別提出了不同的基于網(wǎng)絡(luò)編碼的云存儲方案,但在數(shù)據(jù)損壞后進(jìn)行數(shù)據(jù)修復(fù)方面存在修復(fù)開銷大、無法有效修復(fù)等問題[7-9]。本文在綜合分析以上各存儲方案中存在的問題,結(jié)合家庭物聯(lián)網(wǎng)設(shè)備多、低計算能力等特點,提出了一種基于網(wǎng)絡(luò)編碼的家庭物聯(lián)網(wǎng)云存儲方案(Cloud storage scheme based on network coding of Home Internet of things,NCC-HIoT),方案通過理論證明和實驗仿真驗證了可行性,能夠充分利用家庭物聯(lián)網(wǎng)設(shè)備多的優(yōu)勢提高存儲的有效性和可靠性,利用網(wǎng)絡(luò)編碼對數(shù)據(jù)進(jìn)行分布式存儲不僅對設(shè)備的計算能力要求低,而且能夠提高存儲數(shù)據(jù)的安全性和靈活的冗余機(jī)制。
根據(jù)網(wǎng)絡(luò)編碼的數(shù)據(jù)原理,數(shù)據(jù)存儲過程如下:(1)選取編碼矩陣。數(shù)據(jù)上傳者首先需要選取一個滿足特定條件的編碼矩陣,即選取一個任取k(n-k)行組成的子矩陣都是滿秩矩陣的n(n-k)×k(n-k)階矩陣,其中n代表存儲節(jié)點數(shù),k代表恢復(fù)數(shù)據(jù)需要下載編碼塊的節(jié)點個數(shù),即下載任意k個節(jié)點的編碼塊便可恢復(fù)出原始數(shù)據(jù),n/k代表數(shù)據(jù)備份數(shù),即存儲冗余水平。(2)數(shù)據(jù)分塊處理。數(shù)據(jù)上傳者將原始數(shù)據(jù)等分成k(n-k)塊,利用編碼矩陣對原始數(shù)據(jù)進(jìn)行編碼運(yùn)算,得到n(n-k)個編碼數(shù)據(jù)塊。(3)編碼數(shù)據(jù)上傳。將n(n-k)個編碼數(shù)據(jù)塊分別上傳到n個存儲節(jié)點上,每個存儲節(jié)點分別存儲(n-k)個編碼塊,同時將編碼矩陣上傳到每個存儲節(jié)點。
當(dāng)需要讀取數(shù)據(jù)時,用戶從n個存儲節(jié)點中任取k個節(jié)點,下載k個節(jié)點的全部編碼塊,從任一存儲節(jié)點下載編碼矩陣,利用編碼矩陣和編碼塊便可恢復(fù)出原始數(shù)據(jù)。為了提高數(shù)據(jù)讀取的實時性,用戶可選擇網(wǎng)絡(luò)距離較近的存儲節(jié)點下載數(shù)據(jù),滿足家庭物聯(lián)網(wǎng)對數(shù)據(jù)高實時性的要求。
當(dāng)某個存儲節(jié)點數(shù)據(jù)發(fā)生損壞時,從其他(n-1)個節(jié)點各下載一個編碼塊,和修復(fù)矩陣一起完成數(shù)據(jù)修復(fù),修復(fù)過程根據(jù)受損存儲節(jié)點數(shù)可分為局部修復(fù)和全局修復(fù)。為了清晰地描述修復(fù)過程,本文以n=8,k=4為例進(jìn)行說明,具體見圖1。
圖1 數(shù)據(jù)修復(fù)過程圖
當(dāng)存儲節(jié)點1數(shù)據(jù)發(fā)生損壞,修復(fù)服務(wù)器從剩余節(jié)點中各隨機(jī)選取一個編碼塊,然后選取滿足特定條件的4×7修復(fù)矩陣,特定條件指選取的修復(fù)矩陣滿足任取4列得到的4階方陣的轉(zhuǎn)置矩陣都是滿秩矩陣,且修復(fù)矩陣中的所有系數(shù)都不為0,利用選取的修復(fù)矩陣和下載的編碼塊做矩陣運(yùn)算,得到4個新的編碼塊,將新的編碼塊存放到節(jié)點9上(也可存儲到節(jié)點1上,但考慮到節(jié)點1自身的穩(wěn)定性,存放到新的節(jié)點上更安全可靠),同時更新各節(jié)點存儲的編碼矩陣,即按照1.1中的存儲過程將節(jié)點9上編碼塊所對應(yīng)的編碼系數(shù)放到整個編碼矩陣中,同時將編碼矩陣中損壞節(jié)點1編碼塊對應(yīng)的編碼系數(shù)刪除。
以上僅以一次修復(fù)為例進(jìn)行說明,修復(fù)過程的詳細(xì)描述可行性的理論證明及實驗驗證結(jié)果作者已經(jīng)在文獻(xiàn)[10]中詳細(xì)列出。
有效的云存儲方案不僅要能夠滿足數(shù)據(jù)可用性、安全性、可修復(fù)性等方面的要求,還應(yīng)該符合應(yīng)用場景的特定需求,家庭物聯(lián)網(wǎng)對于云存儲方案除以上要求外,還對數(shù)據(jù)的實時性、高度共享性、高并發(fā)性等方面有著較高的要求,因此本文除分析云存儲方案常見的性能外,還結(jié)合家庭物聯(lián)網(wǎng)數(shù)據(jù)實時性、高度共享性、高并發(fā)性等方面的需求進(jìn)行著重分析。
在NCC-HIoT云存儲方案中,用戶任取k個存儲節(jié)點的編碼塊便可恢復(fù)出原始數(shù)據(jù),若要證明NCCHIoT云存儲方案的可用性,需證明(1)式有解:
其中n,k已經(jīng)在1.1中給出定義,而A代表任取k個存儲節(jié)點編碼塊所對應(yīng)的編碼系數(shù)矩陣,表示為:
根據(jù)線性代數(shù)相關(guān)知識:Ax=B有解的充分必要條件是矩陣A可逆,且X=A-1B。
在NCC-HIoT云存儲方案中,選取的編碼矩陣需要滿足任取k(n-k)行必須是線性獨立的,即任取k(n-k)行是行滿秩的,所以矩陣A是滿秩矩陣,故A是可逆的,所以Ax=B是有解的,(1)式成立得證。
通過上述理論分析,可以證明NCC-HIoT云存儲方案的可用性。
在NCC-HIoT云存儲方案中,上傳到存儲節(jié)點的數(shù)據(jù)并不是原始數(shù)據(jù),而是利用編碼矩陣編碼后的數(shù)據(jù),這可以顯著提升數(shù)據(jù)存放的安全性。為了顯性比較NCC-HIoT方案的安全性,以最常用的哈希加密為比較對象,從網(wǎng)絡(luò)安全的五個維度以及確保五個維度滿足所需的計算開銷進(jìn)行比較(計算開銷是數(shù)據(jù)加密必須要考慮的最重要因素之一),具體見表1。
表1 安全性分析
由表1可以看出,NCC-HIoT云存儲方案滿足網(wǎng)絡(luò)安全的五個維度,且由于該方案是通過網(wǎng)絡(luò)編碼對數(shù)據(jù)進(jìn)行處理上傳,在生成冗余備份數(shù)據(jù)的同時對數(shù)據(jù)進(jìn)行了加密,節(jié)省額外加密所帶來的計算開銷,且網(wǎng)絡(luò)編碼就是通過做矩陣運(yùn)算實現(xiàn),對比哈希加密運(yùn)算復(fù)雜度大大降低,更適用與家庭物聯(lián)網(wǎng)場景,符合家庭物聯(lián)網(wǎng)設(shè)備低計算能力的特征。
目前基于家庭物聯(lián)網(wǎng)的數(shù)據(jù)云存儲方案中,較少考慮數(shù)據(jù)修復(fù)問題,為證明本文提出的修復(fù)方案修復(fù)計算開銷小且不失一般性,特以文獻(xiàn)[9]方案提出的修復(fù)方案為比較對象,對NCC-HIoT云存儲方案數(shù)據(jù)修復(fù)代價進(jìn)行分析。
表2 修復(fù)計算開銷比較
為更直觀反應(yīng),給出不同存儲場景下(n、k取不同值時)兩者乘除運(yùn)算次數(shù)的比較,如表3所示。
表3 不同場景下兩種方案乘除運(yùn)算次數(shù)比較
通過表3可以發(fā)現(xiàn),隨著存儲文件大小的增加,NCC-HIoT云存儲方案在修復(fù)數(shù)據(jù)時更具優(yōu)勢。
基于物聯(lián)網(wǎng)的云存儲場景中,用戶讀取數(shù)據(jù)的延時主要集中在數(shù)據(jù)傳輸和數(shù)據(jù)恢復(fù)兩個方面,其中在數(shù)據(jù)傳輸方面,NCC-HIoT云存儲方案采用多節(jié)點分布式存儲,相較其他基于集中平臺的云存儲方案,NCC-HIoT云存儲方案支持用戶就近選取存儲節(jié)點讀取數(shù)據(jù),極大地減少了數(shù)據(jù)傳輸過程中的通信延時,特別是在網(wǎng)絡(luò)擁塞的情況下,NCC-HIoT云存儲方案在讀取數(shù)據(jù)方面的優(yōu)勢更加明顯。
對于數(shù)據(jù)恢復(fù)時間,本文基于Matlab Online平臺模擬不同存儲場景下恢復(fù)數(shù)據(jù)所需時間,如圖2 所示。
由圖2可知,NCC-HIoT云存儲方案讀取數(shù)據(jù)時間較小,實時性較好,且在不同存儲場景下數(shù)據(jù)讀取時間變化較小,適用于家庭物聯(lián)網(wǎng)存儲節(jié)點多的場景。
圖2 不同存儲場景數(shù)據(jù)讀取時間
家庭物聯(lián)網(wǎng)應(yīng)用場景需要多種設(shè)備協(xié)同工作共同完成特定任務(wù),在此過程中需要共享不同設(shè)備的數(shù)據(jù),以便準(zhǔn)確發(fā)出相應(yīng)指令,如當(dāng)室內(nèi)溫度較高時,室內(nèi)空調(diào)設(shè)備和智能窗簾需要共享數(shù)據(jù),同時做出規(guī)定動作,因此,需要及時共享數(shù)據(jù),即基于家庭物聯(lián)網(wǎng)的云存儲平臺需要支持?jǐn)?shù)據(jù)的共享性。在NCCHIoT云存儲方案中,每個存儲節(jié)點存儲的不僅存有一定數(shù)量的數(shù)據(jù)塊,同時存放的有數(shù)據(jù)恢復(fù)所需的編碼矩陣,對于授權(quán)獲得數(shù)據(jù)的用戶,可以隨機(jī)選擇相應(yīng)的存儲節(jié)點獲取數(shù)據(jù),不受時間和空間限制。
另外,家庭物聯(lián)網(wǎng)智能設(shè)備大多計算能力較低,需要特別注意數(shù)據(jù)存儲的安全性和共享性之間的平衡,若采用較復(fù)雜的加密算法,雖然在一定程度上提高了安全性,卻需要讀取數(shù)據(jù)的智能設(shè)備具備一定的計算能力才可恢復(fù),極大地限制了云存儲方案的使用場景。NCC-HIoT云存儲方案能夠較好地平衡數(shù)據(jù)安全性和智能設(shè)備的計算能力,通過網(wǎng)絡(luò)編碼對數(shù)據(jù)進(jìn)行處理,提升了數(shù)據(jù)的安全性,且在智能設(shè)備讀取數(shù)據(jù)時,僅需簡單的矩陣運(yùn)算便可恢復(fù),能夠很好地滿足數(shù)據(jù)的共享性。
當(dāng)出現(xiàn)多個設(shè)備同時下載數(shù)據(jù)或者網(wǎng)絡(luò)出現(xiàn)擁塞時,確保家庭物聯(lián)網(wǎng)設(shè)備能夠及時獲取數(shù)據(jù)和指令是基于家庭物聯(lián)網(wǎng)云存儲方案必須解決的問題,在目前已有的基于平臺的云存儲方案中沒有考慮或無法解決這個問題,而在NCC-HIoT云存儲方案中,將數(shù)據(jù)均勻地存儲在各個節(jié)點上,任取k個存儲節(jié)點上的數(shù)據(jù)便可恢復(fù)出原始數(shù)據(jù),當(dāng)出現(xiàn)多個設(shè)備同時下載數(shù)據(jù)或者網(wǎng)絡(luò)出現(xiàn)擁塞時,智能設(shè)備有一種獲取數(shù)據(jù)的路徑,能夠很好地解決數(shù)據(jù)高并發(fā)性。
在NCC-HIoT云存儲方案中,原始數(shù)據(jù)大小為k(n-k)個數(shù)據(jù)塊,編碼后為n(n-k)個編碼塊,冗余大小為n/k,因此,NCC-HIoT云存儲方案支持根據(jù)用戶數(shù)據(jù)的重要性及節(jié)點存儲能力大小靈活調(diào)整數(shù)據(jù)的冗余度,相較于其他家庭物聯(lián)網(wǎng)存儲平臺,該方案可以為不同用戶定制個性化存儲方案,可在一定程度上節(jié)省存儲開銷,同時取得較高的可靠性。
本文基于家庭物聯(lián)網(wǎng)的特征,引入基于網(wǎng)絡(luò)編碼的云存儲方案,解決家庭物聯(lián)網(wǎng)海量數(shù)據(jù)存儲問題,網(wǎng)絡(luò)編碼是通過矩陣運(yùn)算實現(xiàn),對存儲節(jié)點的計算能力要求不高,且編碼后的數(shù)據(jù)能夠帶來一定的安全性,符合家庭物聯(lián)網(wǎng)的應(yīng)用場景,且網(wǎng)絡(luò)編碼的特性能夠有效支撐在家庭物聯(lián)網(wǎng)場景下海量數(shù)據(jù)的共享性、高并發(fā)性、實時性等特征。