袁 磊,付 饒,沈 鈺,任秀杰
(蘭州大學(xué)信息科學(xué)與工程學(xué)院,蘭州 730030)
人工智能、第5 代移動(dòng)通信和物聯(lián)網(wǎng)等技術(shù)的進(jìn)步推動(dòng)著我國(guó)智能化社會(huì)的發(fā)展,同時(shí)其所產(chǎn)生的數(shù)據(jù)正呈爆炸式增長(zhǎng),如何處理海量規(guī)模的數(shù)據(jù)成為了亟待解決的問(wèn)題。針對(duì)大規(guī)模數(shù)據(jù)存儲(chǔ)領(lǐng)域中傳統(tǒng)存儲(chǔ)技術(shù)存在可拓展性差、成本高等問(wèn)題,分布式云存儲(chǔ)技術(shù)憑借高可靠性、高擴(kuò)展性和高可用性等優(yōu)勢(shì),成為物聯(lián)網(wǎng)中大規(guī)模數(shù)據(jù)存儲(chǔ)的主要方式。近年來(lái),大規(guī)模分布式應(yīng)用關(guān)注的焦點(diǎn)逐漸從“計(jì)算”向“數(shù)據(jù)”遷移[1-2],分布式云存儲(chǔ)的相關(guān)理論、技術(shù)和系統(tǒng)方面的研究也得到了工業(yè)界的廣泛關(guān)注與應(yīng)用,如百度云、華為云、iCloud等分布式云存儲(chǔ)服務(wù)。
物聯(lián)網(wǎng)課程作為一種融合了嵌入式系統(tǒng)、計(jì)算機(jī)軟件和網(wǎng)絡(luò)通信等多種技術(shù)與理論的應(yīng)用型課程,能有效提高學(xué)生的工程實(shí)踐能力。在物聯(lián)網(wǎng)課程的以往教學(xué)中,我校主要以理論講授為主,電子信息類專業(yè)學(xué)生普遍反映缺乏足夠的實(shí)踐機(jī)會(huì),使其綜合應(yīng)用物聯(lián)網(wǎng)課程中的各種理論知識(shí)。同時(shí)相較于計(jì)算機(jī)類學(xué)生,電子信息類學(xué)生普遍存在軟件開(kāi)發(fā)能力偏弱的問(wèn)題,因此,如何通過(guò)工程實(shí)踐提升學(xué)生的綜合素養(yǎng)顯得尤為重要。有鑒于此,以我校電子信息類專業(yè)大三下學(xué)期開(kāi)設(shè)的“物聯(lián)網(wǎng)技術(shù)及應(yīng)用”課程進(jìn)行改革為契機(jī),基于物聯(lián)網(wǎng)領(lǐng)域的學(xué)科前沿知識(shí)和前期成果“IPv6協(xié)議下基于噴泉碼的P2P 文件分發(fā)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)”(其于2019 年獲得第五屆下一代互聯(lián)網(wǎng)技術(shù)創(chuàng)新大賽二等獎(jiǎng)),開(kāi)發(fā)了一套基于噴泉碼的分布式云存儲(chǔ)實(shí)驗(yàn)教學(xué)系統(tǒng),通過(guò)利用Qt(一種C ++圖形用戶界面應(yīng)用程序開(kāi)發(fā)框架)的跨平臺(tái)特性和新型糾刪碼噴泉碼,使學(xué)生掌握分布式云存儲(chǔ)系統(tǒng)開(kāi)發(fā)的基本流程和原理。通過(guò)實(shí)驗(yàn),學(xué)生可以自主實(shí)現(xiàn)多層次糾刪碼編譯碼算法,還可靈活選用傳輸控制協(xié)議(Transmission Control Protocol,TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,UDP)等網(wǎng)絡(luò)協(xié)議進(jìn)行數(shù)據(jù)傳輸,以此增強(qiáng)學(xué)生的工程實(shí)踐能力、綜合應(yīng)用能力以及創(chuàng)新意識(shí)。
分布式存儲(chǔ)是一種數(shù)據(jù)存儲(chǔ)技術(shù),旨在通過(guò)將數(shù)據(jù)分散存儲(chǔ)在多臺(tái)獨(dú)立的設(shè)備上,達(dá)到大規(guī)模存儲(chǔ)的目的。云存儲(chǔ)是一種網(wǎng)絡(luò)在線存儲(chǔ)模式,即把信息存放在第三方托管的虛擬服務(wù)器上。分布式云存儲(chǔ)則是結(jié)合兩者的優(yōu)勢(shì),使不同類型的存儲(chǔ)設(shè)備集合起來(lái)協(xié)同工作,共同對(duì)外提供數(shù)據(jù)存儲(chǔ)服務(wù),形成“物理分散,邏輯集中”的高效協(xié)同系統(tǒng),系統(tǒng)架構(gòu)如圖1 所示。分布式云存儲(chǔ)可以實(shí)現(xiàn)存儲(chǔ)資源的有效利用,避免存儲(chǔ)資源浪費(fèi),也可以將存儲(chǔ)文件保存在特定位置,提高安全性,是當(dāng)下主流的存儲(chǔ)應(yīng)用方式。
現(xiàn)有大型分布式云存儲(chǔ)系統(tǒng)的重要工作之一是數(shù)據(jù)保護(hù)[3],為了防止節(jié)點(diǎn)故障造成的數(shù)據(jù)丟失,選擇合適的數(shù)據(jù)冗余保護(hù)策略尤為重要。多副本和糾刪碼是目前分布式云存儲(chǔ)系統(tǒng)中常用的兩種數(shù)據(jù)冗余保護(hù)策略。多副本策略中,最常用的是三副本技術(shù),即將原始數(shù)據(jù)鏡像復(fù)制到3 個(gè)存儲(chǔ)節(jié)點(diǎn)上,文件恢復(fù)速度快,但存儲(chǔ)成本非常高[4]。糾刪碼策略是通過(guò)糾刪碼算法將原始的數(shù)據(jù)編碼得到冗余,并將數(shù)據(jù)和冗余一并存儲(chǔ)起來(lái),以達(dá)到容錯(cuò)的目的。它與傳統(tǒng)的多副本策略相比,具有冗余度低,磁盤(pán)利用率高等優(yōu)點(diǎn)[5]。現(xiàn)有大型分布式云存儲(chǔ)系統(tǒng),如Swift、Ceph 大多將里德-所羅門(mén)(Reed Solomon,RS)碼作為糾刪碼[6],但諸如RS 碼之類的最大距離可分碼存在編譯碼復(fù)雜度高、修復(fù)帶寬開(kāi)銷大的問(wèn)題。因此,近年來(lái)又有學(xué)者陸續(xù)提出將低密度奇偶校驗(yàn)(Low Density Parity Check,LDPC)碼、局部修復(fù)碼等作為新的糾刪碼應(yīng)用到分布式云存儲(chǔ)系統(tǒng)中[7],旨在降低編譯碼復(fù)雜度與修復(fù)帶寬開(kāi)銷,但固定碼率的糾刪碼(如LDPC 碼)在多播廣播等傳輸場(chǎng)景下存在效率低下的問(wèn)題。
噴泉碼是一類新穎且碼率不受限的線性糾刪碼,最初是為解決可靠多播廣播問(wèn)題而提出。盧比變換(Luby Transform,LT)碼和Raptor 碼是目前主要的兩類噴泉碼,其中一種系統(tǒng)Raptor碼已被多個(gè)主流標(biāo)準(zhǔn)所采用,如用于多媒體廣播和組播業(yè)務(wù)的MBMS(Multimedia Broadcast Multicast Service)標(biāo)準(zhǔn)[8]。發(fā)送方通過(guò)對(duì)信息進(jìn)行噴泉編碼,可以產(chǎn)生任意多的噴泉編碼包。接收方只要接收到略大于信息數(shù)目的噴泉編碼包,即可通過(guò)譯碼算法以高概率成功恢復(fù)原始數(shù)據(jù)。噴泉碼具有較低的編譯碼復(fù)雜度,通過(guò)與UDP協(xié)議相結(jié)合,可實(shí)現(xiàn)快速可靠地?cái)?shù)據(jù)分發(fā),尤為適合可靠多播廣播傳輸場(chǎng)景[9]。目前,噴泉碼除了在通信領(lǐng)域獲得了成功,在分布式云存儲(chǔ)領(lǐng)域中其作為糾刪碼數(shù)據(jù)保護(hù)策略也受到了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注,如文獻(xiàn)[10-11]中研究了基于LT 碼的分布式云存儲(chǔ)系統(tǒng)性能,美國(guó)昆騰公司的Lattus 對(duì)象存儲(chǔ)系統(tǒng)也采用了噴泉碼作為糾刪碼,文獻(xiàn)[12]中提出利用噴泉碼構(gòu)造液態(tài)云存儲(chǔ)(Liquid Cloud Storage)系統(tǒng)的新概念。
基于噴泉碼的分布式云存儲(chǔ)系統(tǒng)結(jié)合了噴泉碼優(yōu)勢(shì),創(chuàng)新構(gòu)建多元化分層次實(shí)驗(yàn)教學(xué)體系,系統(tǒng)創(chuàng)新架構(gòu)如圖2 所示,其創(chuàng)新點(diǎn)如下:

圖2 系統(tǒng)創(chuàng)新架構(gòu)
(1)教學(xué)內(nèi)容豐富。遵循RFC5053 標(biāo)準(zhǔn)的系統(tǒng)噴泉碼(即R10 碼)[13]引入分布式存儲(chǔ)教學(xué)系統(tǒng)中,增強(qiáng)學(xué)生學(xué)習(xí)實(shí)際標(biāo)準(zhǔn)的意識(shí)。此外,該系統(tǒng)采用具有跨平臺(tái)特性的Qt 框架開(kāi)發(fā),方便跨平臺(tái)移植,學(xué)生也可以根據(jù)自己的興趣自主進(jìn)行系統(tǒng)的圖形用戶界面(Graphical User Interface,GUI)設(shè)計(jì)。通過(guò)系統(tǒng)實(shí)驗(yàn),學(xué)生還可以有效學(xué)習(xí)C ++、網(wǎng)絡(luò)編程、數(shù)據(jù)庫(kù)、通信傳輸協(xié)議等物聯(lián)網(wǎng)課程基礎(chǔ)知識(shí),加深了學(xué)生對(duì)物聯(lián)網(wǎng)課程系統(tǒng)層次結(jié)構(gòu)的理解,增強(qiáng)了學(xué)生的實(shí)踐能力。
(2)靈活使用傳輸層協(xié)議。傳統(tǒng)分布式存儲(chǔ)系統(tǒng)采用TCP協(xié)議作為傳輸層協(xié)議,其可靠性高,但也存在傳輸時(shí)延高、無(wú)法適應(yīng)多播廣播傳輸?shù)葐?wèn)題。2016年,谷歌提出基于UDP 的快速UDP 互聯(lián)網(wǎng)連接(Quick UDP Internet Connection,QUIC)協(xié)議取代傳統(tǒng)基于TCP 的超文本傳輸協(xié)議2.0(Hyper Text Transfer Protocol 2.0),以此提升傳輸效率[14]。UDP 協(xié)議具有快速、高效、適合多播廣播場(chǎng)景傳輸?shù)忍攸c(diǎn),但其無(wú)法保證可靠傳輸,因此QUIC 協(xié)議采用了糾刪碼技術(shù)來(lái)保證UDP傳輸?shù)目煽啃浴娙a作為新近出現(xiàn)的糾刪碼方法,具有傳統(tǒng)糾刪碼所不具備的“無(wú)率”和“獨(dú)立”特性。有鑒于此,該教學(xué)系統(tǒng)靈活選擇兩種傳輸層協(xié)議,對(duì)傳輸信息量相對(duì)較少的控制流信息,使用TCP協(xié)議傳輸;對(duì)傳輸信息量較大的數(shù)據(jù)信息,采用UDP協(xié)議傳輸,將噴泉碼無(wú)碼率和動(dòng)態(tài)生成獨(dú)立編碼包的特點(diǎn)與UDP 協(xié)議相結(jié)合,實(shí)現(xiàn)文件的快速可靠分發(fā)。
(3)分層次實(shí)驗(yàn)教學(xué)。按實(shí)驗(yàn)的難易程度和綜合知識(shí)量,建立了一套注重培養(yǎng)學(xué)生實(shí)際動(dòng)手能力的分層次實(shí)驗(yàn)教學(xué)體系。①在驗(yàn)證型實(shí)驗(yàn)中,注重系統(tǒng)的“實(shí)現(xiàn)+驗(yàn)證”,學(xué)生以小組為單位通過(guò)Qt 開(kāi)發(fā)平臺(tái),自主開(kāi)發(fā)基于傳統(tǒng)三副本+TCP模式的分布式存儲(chǔ)系統(tǒng)。在單用戶下載文件的場(chǎng)景下,通過(guò)模擬存儲(chǔ)節(jié)點(diǎn)宕機(jī)后文件能否正常恢復(fù),驗(yàn)證系統(tǒng)的存儲(chǔ)可靠性。②在綜合型實(shí)驗(yàn)中,注重系統(tǒng)的“可靠+高效”,學(xué)生通過(guò)實(shí)驗(yàn)熟悉噴泉碼+UDP 協(xié)議在其典型多用戶下載場(chǎng)景下所擁有的傳輸優(yōu)勢(shì)。同時(shí),學(xué)生可以自主實(shí)現(xiàn)不同難度的噴泉編譯碼算法,將其作為編譯碼模塊加入系統(tǒng)中,從而有效鍛煉自身編程能力。
基于噴泉碼的分布式云存儲(chǔ)教學(xué)系統(tǒng)由噴泉編譯碼模塊、分布式存儲(chǔ)系統(tǒng)模塊兩部分組成。噴泉碼模塊貫穿于整個(gè)系統(tǒng)中,負(fù)責(zé)文件的編譯碼實(shí)現(xiàn)。本系統(tǒng)采用了兩種噴泉碼,即LT 碼、R10 碼。分布式云存儲(chǔ)系統(tǒng)模塊則主要負(fù)責(zé)系統(tǒng)架構(gòu)與實(shí)現(xiàn),其由客戶端、云服務(wù)器和云存儲(chǔ)節(jié)點(diǎn)三部分組成,具體模塊設(shè)計(jì)如下。
2.1.1 LT碼
LT碼是第1 個(gè)實(shí)用噴泉碼設(shè)計(jì)方案,其編碼過(guò)程如圖3 所示,首先將源文件劃分為k個(gè)等長(zhǎng)輸入符號(hào)塊,然后利用度分布函數(shù)隨機(jī)均勻選取d(d≤k)個(gè)不同的符號(hào)塊,將這d個(gè)符號(hào)塊異或得到一個(gè)編碼符號(hào)塊。重復(fù)以上步驟n次,即可得到n個(gè)輸出編碼符號(hào)塊。

圖3 LT編碼過(guò)程
LT碼在刪除信道下的譯碼算法主要為置信傳播譯碼算法(Belief Propagation,BP)和及時(shí)高斯消元譯碼算法(On the Fly Gaussian Elimination,OFG)[15]兩種。在接收到一定數(shù)量的噴泉編碼符號(hào)塊后開(kāi)始執(zhí)行譯碼算法,如果文件恢復(fù)成功,則譯碼結(jié)束,否則繼續(xù)接收一定量的編碼符號(hào)塊,直到譯碼成功為止。BP譯碼的主要過(guò)程為首先在每一輪迭代中尋找度值為1 的編碼符號(hào),將該編碼符號(hào)的值賦予與其連接的信息符號(hào),再通過(guò)異或操作更新對(duì)應(yīng)的編碼符號(hào),重復(fù)步驟直到所有文件塊恢復(fù)成功。BP譯碼雖然譯碼簡(jiǎn)單,但其譯碼性能比最優(yōu)的極大似然譯碼算法差。OFG 譯碼算法則是一種快速極大似然譯碼算法實(shí)現(xiàn),其通過(guò)將矩陣三角化操作分散到了譯碼器每一次接收編碼符號(hào)的過(guò)程中,有效地降低了譯碼復(fù)雜度,將譯碼復(fù)雜度控制在O(k2)。表1 給出了LT 碼的BP 和OFG 譯碼算法在不同譯碼開(kāi)銷下的文件錯(cuò)誤率(File Error Rate,F(xiàn)ER),即源文件譯碼失敗概率,源文件大小k為200,度分布采用了參數(shù)c=0,03,ε =0.5 的魯棒孤波度分布(Robust Soliton Degree Distribution)[18],譯碼開(kāi)銷定義為n/k-1。

表1 LT碼的BP和OFG的FER比較
2.1.2 R10 碼
相比于LT碼,Raptor碼具有更好的性能,其在LT碼的基礎(chǔ)上級(jí)聯(lián)了一個(gè)線性分組碼作為外碼,先將原始信息進(jìn)行預(yù)編碼再將外碼的碼字作為L(zhǎng)T 碼的輸入。
R10 碼是一種二進(jìn)制的系統(tǒng)Raptor碼。RFC5053標(biāo)準(zhǔn)詳細(xì)規(guī)定了R10 碼的編譯碼算法,如圖4 所示。R10 碼的編碼過(guò)程是由k個(gè)源符號(hào)編碼產(chǎn)生修復(fù)符號(hào)的過(guò)程,分為兩個(gè)階段,第1 個(gè)階段由源符號(hào)預(yù)編碼產(chǎn)生中間符號(hào);第2 個(gè)階段由中間符號(hào)進(jìn)行LT 編碼,產(chǎn)生修復(fù)符號(hào),其譯碼過(guò)程采用失活譯碼高斯消元(Inactivation Decoding Gaussian Elimination)算法。

圖4 R10碼編譯過(guò)程
2.2.1 主要功能
客戶端是用戶操作及文件恢復(fù)的終端,在系統(tǒng)工作過(guò)程中的主要功能包括:①與云服務(wù)器交互控制信息及文件元數(shù)據(jù)信息(如文件名、文件大小和文件存儲(chǔ)位置等);②與云服務(wù)器交互存儲(chǔ)文件;③與云存儲(chǔ)節(jié)點(diǎn)交互副本及噴泉編碼包;④譯碼恢復(fù)源文件。
云服務(wù)器是綜合調(diào)度整個(gè)系統(tǒng)的服務(wù)終端,主要功能包括:①與客戶端及云存儲(chǔ)節(jié)點(diǎn)交互控制信號(hào),利用Qt支持的結(jié)構(gòu)化查詢語(yǔ)言數(shù)據(jù)庫(kù)功能完成控制信號(hào)數(shù)據(jù)的組織和記錄;②與云存儲(chǔ)節(jié)點(diǎn)交互副本及噴泉編碼包。
云存儲(chǔ)節(jié)點(diǎn)用來(lái)存儲(chǔ)和傳輸副本及噴泉編碼包,其在系統(tǒng)工作過(guò)程中的主要功能包括:①存儲(chǔ)副本及噴泉編碼包;②與云服務(wù)器及客戶端交互副本及噴泉編碼包。
2.2.2 工作過(guò)程
系統(tǒng)工作模式分為傳統(tǒng)三副本+TCP模式和噴泉碼+UDP模式兩種,由云服務(wù)器選擇工作模式。傳輸層協(xié)議采用TCP 與UDP 協(xié)議:其中TCP 協(xié)議主要用于傳輸文件的控制流,以及在三副本模式下傳輸數(shù)據(jù)流,保證數(shù)據(jù)的可靠傳輸;UDP 協(xié)議主要用于在噴泉碼模式中傳輸數(shù)據(jù)流,將其與無(wú)須反饋的噴泉碼特性結(jié)合,可以實(shí)現(xiàn)快速可靠的文件分發(fā),其工作過(guò)程如圖5 所示。

圖5 分布式云存儲(chǔ)系統(tǒng)模塊工作流程圖
文件上傳時(shí),客戶端將要存儲(chǔ)的文件上傳到云服務(wù)器,其通過(guò)TCP 協(xié)議傳輸存儲(chǔ)控制信息、文件元數(shù)據(jù)信息及文件數(shù)據(jù)信息,其后云服務(wù)器采用TCP協(xié)議將文件數(shù)據(jù)信息傳輸?shù)皆拼鎯?chǔ)節(jié)點(diǎn)。在三副本模式中,云服務(wù)器將3 份文件數(shù)據(jù)信息存儲(chǔ)在不同的云存儲(chǔ)節(jié)點(diǎn)上。在噴泉碼模式中,云服務(wù)器將文件數(shù)據(jù)信息進(jìn)行噴泉編碼,然后將編碼后的不同編碼包存儲(chǔ)在多個(gè)云存儲(chǔ)節(jié)點(diǎn)上。
文件下載時(shí),客戶端和云服務(wù)器確定下載方式后,由云存儲(chǔ)節(jié)點(diǎn)向客戶端提供下載服務(wù)。在單用戶下載文件的場(chǎng)景下,三副本模式中n個(gè)存儲(chǔ)節(jié)點(diǎn)分別與客戶端建立TCP連接,分別傳輸文件的n分之一數(shù)據(jù)信息,達(dá)到并行下載的目的。在多用戶下載相同文件的場(chǎng)景下,噴泉碼模式中的云存儲(chǔ)節(jié)點(diǎn)利用UDP協(xié)議向客戶端廣播噴泉編碼包,客戶端接收到足夠的編碼包即可進(jìn)行文件的譯碼恢復(fù),如未譯碼成功,客戶端會(huì)繼續(xù)接收噴泉編碼包,直到文件恢復(fù),達(dá)到可靠多播的目的。
傳統(tǒng)三副本分布式存儲(chǔ)通過(guò)跨節(jié)點(diǎn)的副本保護(hù),可有效防止存儲(chǔ)節(jié)點(diǎn)宕機(jī)或磁盤(pán)損壞對(duì)數(shù)據(jù)恢復(fù)的影響。在單用戶下載文件的場(chǎng)景下,基于三副本機(jī)制的分布式云存儲(chǔ)系統(tǒng)可以有效保證文件數(shù)據(jù)恢復(fù)的可靠性。實(shí)驗(yàn)在此基礎(chǔ)上設(shè)計(jì)而成,由以下三步組成。
(1)系統(tǒng)初步搭建。教師在課堂上給學(xué)生講解該系統(tǒng)的設(shè)計(jì)流程、工作原理,搭建流程后。學(xué)生以小組(4 或5 人)的形式,合理分配客戶端、云服務(wù)器、云存儲(chǔ)節(jié)點(diǎn)個(gè)數(shù),安裝Qt開(kāi)發(fā)環(huán)境,自主進(jìn)行GUI設(shè)計(jì),結(jié)合給定的參考偽代碼,初步搭建三副本分布式云存儲(chǔ)系統(tǒng)。
(2)系統(tǒng)功能開(kāi)發(fā)。學(xué)生開(kāi)發(fā)系統(tǒng)的主要功能,并通過(guò)文件的上傳和下載進(jìn)行功能驗(yàn)證。以5 人小組為例,分配1 個(gè)客戶端,1 個(gè)云服務(wù)器,3 個(gè)云存儲(chǔ)節(jié)點(diǎn)。客戶端將文件上傳后,云服務(wù)器與3 個(gè)云存儲(chǔ)節(jié)點(diǎn)建立TCP連接,將文件的副本分別存儲(chǔ)在3 個(gè)云存儲(chǔ)節(jié)點(diǎn)。下載時(shí),3 個(gè)云存儲(chǔ)節(jié)點(diǎn)與客戶端建立TCP連接,并行傳輸文件的1/3 數(shù)據(jù)信息,在客戶端進(jìn)行文件恢復(fù),實(shí)現(xiàn)并行下載功能。
(3)模擬節(jié)點(diǎn)宕機(jī)。以5 人小組為例,學(xué)生在存儲(chǔ)文件后,使其中一個(gè)云存儲(chǔ)節(jié)點(diǎn)宕機(jī),模擬存儲(chǔ)數(shù)據(jù)丟失情景。學(xué)生小組開(kāi)發(fā)功能,使剩余的兩個(gè)云存儲(chǔ)節(jié)點(diǎn)通過(guò)TCP 連接向客戶端傳輸文件的1/2 數(shù)據(jù)信息,如文件可以正常恢復(fù),則三副本分布式云存儲(chǔ)系統(tǒng)搭建成功。
在驗(yàn)證型實(shí)驗(yàn)中,通過(guò)利用三副本機(jī)制的分布式云存儲(chǔ)系統(tǒng)輔助教學(xué),學(xué)生在搭建和使用的過(guò)程中可以形象、直觀地學(xué)習(xí)系統(tǒng)工作流程及存儲(chǔ)領(lǐng)域的前沿知識(shí),同時(shí)提高學(xué)生的編程能力,極大地調(diào)動(dòng)了學(xué)生的學(xué)習(xí)積極性。
多用戶下載場(chǎng)景為噴泉碼+UDP 協(xié)議的典型優(yōu)勢(shì)應(yīng)用場(chǎng)景。以5 客戶端下載為例,傳統(tǒng)三副本+TCP方式中的3 個(gè)云存儲(chǔ)節(jié)點(diǎn)需要分別建立5 個(gè)TCP連接,為用戶發(fā)送副本信息,存在傳輸效率低下的問(wèn)題。基于噴泉碼的分布式云存儲(chǔ)系統(tǒng)通過(guò)利用噴泉碼+UDP廣播的優(yōu)勢(shì),只需要3 個(gè)云存儲(chǔ)節(jié)點(diǎn)分別建立1 個(gè)UDP連接向5 個(gè)客戶端廣播足夠的編碼包,多個(gè)用戶即可恢復(fù)源文件。學(xué)生小組配合進(jìn)行實(shí)驗(yàn),實(shí)現(xiàn)該場(chǎng)景下基于噴泉碼的分布式云存儲(chǔ)系統(tǒng),實(shí)驗(yàn)由以下步驟組成。
(1)噴泉編譯碼算法實(shí)現(xiàn)。供學(xué)生選擇實(shí)現(xiàn)的編譯碼算法分為兩類:①LT 碼編碼+BP 譯碼/OFG 譯碼;②遵循RFC5053 標(biāo)準(zhǔn)的R10 噴泉編譯碼,學(xué)生小組可根據(jù)能力自主選擇不同難度的兩種編譯碼算法。教師講解兩種編譯碼方案原理,提供設(shè)計(jì)文檔,教師在一段時(shí)間后提供文件編譯碼算法的偽代碼,學(xué)生小組通過(guò)Qt開(kāi)發(fā)框架用C ++語(yǔ)言實(shí)現(xiàn)文件的編譯碼。
(2)系統(tǒng)功能開(kāi)發(fā)。學(xué)生將多臺(tái)客戶端加入系統(tǒng),建立廣播組。同時(shí)在實(shí)驗(yàn)1 實(shí)現(xiàn)系統(tǒng)的基礎(chǔ)上,開(kāi)發(fā)云存儲(chǔ)節(jié)點(diǎn)的UDP廣播功能,通過(guò)文件能否正常恢復(fù)測(cè)試噴泉編譯碼模塊開(kāi)發(fā)是否成功。文件上傳后,云服務(wù)器通過(guò)步驟1 實(shí)現(xiàn)的噴泉編譯碼模塊進(jìn)行編碼,隨后將噴泉編碼包存儲(chǔ)在云存儲(chǔ)節(jié)點(diǎn)。文件下載時(shí),多個(gè)客戶端接收云存儲(chǔ)節(jié)點(diǎn)UDP 廣播的編碼包,測(cè)試接收足夠多的編碼包后能否譯碼成功,如果譯碼成功,則噴泉碼+UDP 廣播功能開(kāi)發(fā)成功,完整系統(tǒng)如圖6 所示。

圖6 基于噴泉碼的分布式云存儲(chǔ)系統(tǒng)
通過(guò)綜合型實(shí)驗(yàn),學(xué)生不僅可以通過(guò)噴泉編譯碼算法的實(shí)現(xiàn)鍛煉編程能力和理解糾刪碼知識(shí),還可以在理解網(wǎng)絡(luò)傳輸協(xié)議的基礎(chǔ)上,鍛煉知識(shí)遷移能力和工程實(shí)踐能力。
本文設(shè)計(jì)的基于噴泉碼的分布式云存儲(chǔ)系統(tǒng)及教學(xué)實(shí)驗(yàn)對(duì)標(biāo)我校實(shí)踐教學(xué)的人才培養(yǎng)目標(biāo),具有極大的研究意義與價(jià)值。通過(guò)讓學(xué)生將理論學(xué)習(xí)與實(shí)際應(yīng)用相結(jié)合,激發(fā)學(xué)生的學(xué)習(xí)興趣,充分發(fā)揮了學(xué)生的主觀能動(dòng)性。該系統(tǒng)專業(yè)綜合程度高,知識(shí)覆蓋面廣,能夠有效培養(yǎng)電子信息類學(xué)生軟件開(kāi)發(fā)的思維能力,鍛煉學(xué)生的編程能力,經(jīng)過(guò)實(shí)踐取到了較好的教學(xué)效果,為理論學(xué)習(xí)與工程案例應(yīng)用相結(jié)合提供了新的思路。在以后的研究中,可以嘗試把噴泉編譯碼算法換成性能更為優(yōu)秀的RaptorQ 碼,譯碼程序中運(yùn)算量較大的部分可以考慮放在圖形處理器上并行實(shí)現(xiàn),從而提高編譯碼的性能,同時(shí)考慮將存儲(chǔ)節(jié)點(diǎn)從云端轉(zhuǎn)到邊緣,用以提高數(shù)據(jù)傳輸性能及降低網(wǎng)絡(luò)帶寬。