數(shù)據(jù)傳輸方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)通信技術(shù),尤其涉及一種數(shù)據(jù)傳輸方法及裝置。
【背景技術(shù)】
[0002] 傳統(tǒng)的無中心分布式存儲(chǔ)系統(tǒng)在分配存儲(chǔ)控件和查找數(shù)據(jù)時(shí)較為常用的是一致 性哈希算法。
[0003] -致性哈希算法對數(shù)據(jù)的鍵值(KEY)進(jìn)行一致性哈希后輸出的值域在一個(gè)固定 的環(huán)空間中(即最大哈希值緊鄰最小哈希值)。對于數(shù)據(jù)節(jié)點(diǎn)而言,通過對各個(gè)節(jié)點(diǎn)隨機(jī)賦 予一定值,標(biāo)定它在環(huán)空間中的位置,來劃分各節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)的哈希值范圍,通常每個(gè)節(jié)點(diǎn) 負(fù)責(zé)該節(jié)點(diǎn)與該節(jié)點(diǎn)之間的節(jié)點(diǎn)區(qū)編號區(qū)域之間的存儲(chǔ)。在分配存儲(chǔ)空間和查詢數(shù)據(jù)時(shí), 直接對數(shù)據(jù)鍵值進(jìn)行一致性哈希,通過哈希值來分配或者定位存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn)。
[0004] 這種方法可以實(shí)現(xiàn)通過數(shù)據(jù)鍵值存儲(chǔ)路由,快速的查詢和分配空間,但是由于存 儲(chǔ)空間的分配直接與數(shù)據(jù)鍵值相關(guān),必須依賴數(shù)據(jù)鍵值進(jìn)行一致性哈希算法來隨機(jī)挑選存 儲(chǔ)節(jié)點(diǎn),導(dǎo)致數(shù)據(jù)節(jié)點(diǎn)的負(fù)載和存儲(chǔ)分配不均衡。
【發(fā)明內(nèi)容】
[0005] 有鑒于此,本發(fā)明提供一種數(shù)據(jù)傳輸方法及裝置,可以避免依賴數(shù)據(jù)鍵值進(jìn)行隨 機(jī)分配存儲(chǔ)節(jié)點(diǎn)可能帶來的負(fù)載不均的情況。
[0006] 本發(fā)明實(shí)施例提供一種數(shù)據(jù)傳輸方法,包括:分布式存儲(chǔ)系統(tǒng)接收客戶端發(fā)送的 數(shù)據(jù)以及所述數(shù)據(jù)的鍵值;根據(jù)各節(jié)點(diǎn)的負(fù)載情況為所述數(shù)據(jù)分配對應(yīng)的節(jié)點(diǎn)、將所述數(shù) 據(jù)存儲(chǔ)在對應(yīng)的節(jié)點(diǎn)中;生成與所述數(shù)據(jù)對應(yīng)的構(gòu)造鍵值,所述構(gòu)造鍵值中包括所述數(shù)據(jù) 的鍵值以及與所述數(shù)據(jù)對應(yīng)的節(jié)點(diǎn)路由信息;以及將所述數(shù)據(jù)對應(yīng)的構(gòu)造鍵值返回所述客 戶端。
[0007] 本發(fā)明實(shí)施例提供另一種數(shù)據(jù)傳輸方法,包括:客戶端獲取待傳輸?shù)臄?shù)據(jù)以及所 述數(shù)據(jù)的鍵值;將所述數(shù)據(jù)以及所述數(shù)據(jù)的鍵值發(fā)送給分布式存儲(chǔ)系統(tǒng),以使所述分布式 存儲(chǔ)系統(tǒng)根據(jù)各節(jié)點(diǎn)的負(fù)載情況為所述數(shù)據(jù)分配對應(yīng)的節(jié)點(diǎn)、將所述數(shù)據(jù)存儲(chǔ)在對應(yīng)的節(jié) 點(diǎn)中、并生成與所述數(shù)據(jù)對應(yīng)的構(gòu)造鍵值,所述構(gòu)造鍵值中包括所述數(shù)據(jù)的鍵值以及與所 述數(shù)據(jù)對應(yīng)的節(jié)點(diǎn)路由信息;以及接收所述分布式存儲(chǔ)系統(tǒng)所返回的、與所述數(shù)據(jù)對應(yīng)的 構(gòu)造鍵值。
[0008] 本發(fā)明實(shí)施例提供一種數(shù)據(jù)傳輸裝置,運(yùn)行于分布式存儲(chǔ)系統(tǒng),包括:數(shù)據(jù)接收模 塊,用于接收客戶端發(fā)送的數(shù)據(jù)以及所述數(shù)據(jù)的鍵值;節(jié)點(diǎn)管理模塊,用于根據(jù)各節(jié)點(diǎn)的負(fù) 載情況為所述數(shù)據(jù)分配對應(yīng)的節(jié)點(diǎn)、將所述數(shù)據(jù)存儲(chǔ)在對應(yīng)的節(jié)點(diǎn)中;構(gòu)造鍵值生成模塊, 用于生成與所述數(shù)據(jù)對應(yīng)的構(gòu)造鍵值,所述構(gòu)造鍵值中包括所述數(shù)據(jù)的鍵值以及與所述數(shù) 據(jù)對應(yīng)的節(jié)點(diǎn)路由信息;以及數(shù)據(jù)返回模塊,用于將所述數(shù)據(jù)對應(yīng)的構(gòu)造鍵值返回所述客 戶端。
[0009] 本發(fā)明實(shí)施例提供另一種數(shù)據(jù)傳輸裝置,應(yīng)用于客戶端,包括:數(shù)據(jù)獲取模塊,用 于獲取待傳輸?shù)臄?shù)據(jù)以及所述數(shù)據(jù)的鍵值;數(shù)據(jù)發(fā)送模塊,用于將所述數(shù)據(jù)以及所述數(shù)據(jù) 的鍵值發(fā)送給分布式存儲(chǔ)系統(tǒng),以使所述分布式存儲(chǔ)系統(tǒng)根據(jù)各節(jié)點(diǎn)的負(fù)載情況為所述數(shù) 據(jù)分配對應(yīng)的節(jié)點(diǎn)、將所述數(shù)據(jù)存儲(chǔ)在對應(yīng)的節(jié)點(diǎn)中、并生成與所述數(shù)據(jù)對應(yīng)的構(gòu)造鍵值, 所述構(gòu)造鍵值中包括所述數(shù)據(jù)的鍵值以及與所述數(shù)據(jù)對應(yīng)的節(jié)點(diǎn)路由信息;以及數(shù)據(jù)接收 模塊,用于接收所述分布式存儲(chǔ)系統(tǒng)所返回的、與所述數(shù)據(jù)對應(yīng)的構(gòu)造鍵值。
[0010] 本發(fā)明實(shí)施例提供的數(shù)據(jù)傳輸方法及裝置,根據(jù)各節(jié)點(diǎn)的負(fù)載情況為客戶端發(fā)送 的數(shù)據(jù)分配對應(yīng)的節(jié)點(diǎn),規(guī)避了現(xiàn)有技術(shù)中依賴數(shù)據(jù)鍵值進(jìn)行存儲(chǔ)分配的方式,從而避免 了因此導(dǎo)致的負(fù)載不均的問題;將實(shí)際存儲(chǔ)所述數(shù)據(jù)的節(jié)點(diǎn)路由信息以及所述數(shù)據(jù)的鍵 值,主動(dòng)構(gòu)造在一個(gè)新的全局唯一的構(gòu)造鍵值中,規(guī)避了現(xiàn)有技術(shù)中查詢數(shù)據(jù)需要依賴數(shù) 據(jù)鍵值的問題,可以允許重復(fù)的數(shù)據(jù)鍵值存在,不用擔(dān)心數(shù)據(jù)沖突,此外,由于構(gòu)造鍵值為 結(jié)構(gòu)化數(shù)據(jù),因此可以向其中寫入更多的數(shù)據(jù)信息,使客戶端在不與分布式存儲(chǔ)系統(tǒng)進(jìn)行 通信的情況下就可以取得對應(yīng)數(shù)據(jù)的一些屬性;同時(shí)該構(gòu)造鍵值也可以作為客戶端后續(xù)讀 取數(shù)據(jù)的憑證,構(gòu)造鍵值中包含的節(jié)點(diǎn)路由信息可以保證存儲(chǔ)系統(tǒng)可以快速定位數(shù)據(jù)的存 儲(chǔ)位置,無需進(jìn)行過多的查詢。因此,本發(fā)明實(shí)施例提供的數(shù)據(jù)傳輸方法可以避免現(xiàn)有技術(shù) 中負(fù)載不均的問題,實(shí)現(xiàn)負(fù)載均衡的分配存儲(chǔ)空間,同時(shí)又不會(huì)影響數(shù)據(jù)的快速訪問。
[0011] 為讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例, 并配合所附圖式,作詳細(xì)說明如下。
【附圖說明】
[0012] 圖1為本發(fā)明實(shí)施例提供的數(shù)據(jù)傳輸方法的具體應(yīng)用環(huán)境。
[0013] 圖2為一種可應(yīng)用于本發(fā)明實(shí)施例的用戶終端的結(jié)構(gòu)框圖。
[0014] 圖3是一種可應(yīng)用于本發(fā)明實(shí)施例的服務(wù)器的結(jié)構(gòu)框圖。
[0015] 圖4為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)傳輸方法的流程圖。
[0016] 圖5為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)傳輸方法的流程圖。
[0017] 圖6為圖5中根據(jù)所述構(gòu)造鍵值中的節(jié)點(diǎn)路由信息、由對應(yīng)節(jié)點(diǎn)中讀取數(shù)據(jù)的具 體流程圖。
[0018] 圖7為本發(fā)明實(shí)施例提供的再一種數(shù)據(jù)傳輸方法的流程圖。
[0019] 圖8為本發(fā)明實(shí)施例提供的又一種數(shù)據(jù)傳輸方法的流程圖。
[0020] 圖9為客戶端向分布式存儲(chǔ)系統(tǒng)上傳數(shù)據(jù)時(shí)的流程示意圖。
[0021] 圖10為客戶端由分布式存儲(chǔ)系統(tǒng)下載數(shù)據(jù)時(shí)的流程示意圖。
[0022] 圖11為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)傳輸裝置的結(jié)構(gòu)示意圖。
[0023] 圖12為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)傳輸裝置的結(jié)構(gòu)示意圖。
[0024] 圖13為本發(fā)明實(shí)施例提供的再一種數(shù)據(jù)傳輸裝置的結(jié)構(gòu)示意圖。
[0025] 圖14為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0026] 為更進(jìn)一步闡述本發(fā)明為實(shí)現(xiàn)預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合 附圖及較佳實(shí)施例,對依據(jù)本發(fā)明的【具體實(shí)施方式】、結(jié)構(gòu)、特征及其功效,詳細(xì)說明如后。
[0027]本發(fā)明實(shí)施例所提供的數(shù)據(jù)傳輸方法可應(yīng)用于實(shí)現(xiàn)客戶端與分布式存儲(chǔ)系統(tǒng)之 間的數(shù)據(jù)傳輸。請參照圖1,圖1為本發(fā)明實(shí)施例提供的數(shù)據(jù)傳輸方法的具體應(yīng)用環(huán)境,包 括客戶端10以及分布式存儲(chǔ)系統(tǒng)20??蛻舳?0與分布式存儲(chǔ)系統(tǒng)20之間通過網(wǎng)絡(luò)進(jìn)行 數(shù)據(jù)傳輸,例如通過互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、無線網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸。
[0028] 其中,客戶端10可以包括用戶終端或服務(wù)器,分布式存儲(chǔ)系統(tǒng)20可以包括多個(gè)進(jìn) 行具體數(shù)據(jù)存儲(chǔ)和/或處理的節(jié)點(diǎn),其中節(jié)點(diǎn)是虛擬概念而非局限于實(shí)體,例如用戶終端 或服務(wù)器等設(shè)備都可以作為一個(gè)節(jié)點(diǎn)。上述客戶端以及分布式存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)都具有存 儲(chǔ)器和處理器,存儲(chǔ)器可用于存儲(chǔ)軟件程序以及模塊,如本發(fā)明實(shí)施例中的數(shù)據(jù)傳輸方法 及裝置對應(yīng)的程序指令/模塊,處理器通過運(yùn)行存儲(chǔ)在存儲(chǔ)器內(nèi)的軟件程序以及模塊,從 而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即在上述的客戶端或分布式存儲(chǔ)系統(tǒng)的幾點(diǎn)內(nèi)實(shí)現(xiàn)數(shù) 據(jù)傳輸。
[0029] 用戶終端具體可以包括智能手機(jī)、平板電腦、電子書閱讀器、MP3播放器(Moving PictureExpertsGroupAudioLayerIII,動(dòng)態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面3)、 MP4(MovingPictureExpertsGroupAudioLayerIV,動(dòng)態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面 4) 播放器、膝上型便攜計(jì)算機(jī)、車載終端等等。
[0030] 圖2示出了一種可應(yīng)用于本發(fā)明實(shí)施例中的用戶終端的結(jié)構(gòu)框圖。如圖2所示,用 戶終端100包括存儲(chǔ)器102、存儲(chǔ)控制器104, 一個(gè)或多個(gè)(圖中僅示出一個(gè))處理器106、 外設(shè)接口 108、射頻模塊110、定位模塊112、圖像采集模塊114、音頻模塊116、觸控屏幕118 以及按鍵模塊120。這些組件通過一條或多條通訊總線/信號線122相互通訊。
[0031] 可以理解,圖2所示的結(jié)構(gòu)僅為示意,用戶終端100還可包括比圖2中所示更多或 者更少的組件,或者具有與圖2所示不同的配置。圖2中所示的各組件可以采用硬件、軟件 或其組合實(shí)現(xiàn)。
[0032] 存儲(chǔ)器102可用于存儲(chǔ)軟件程序以及模塊,如本發(fā)明實(shí)施例中的數(shù)據(jù)傳輸方法及 裝置對應(yīng)的程序指令/模塊,處理器102通過運(yùn)行存儲(chǔ)在存儲(chǔ)器104內(nèi)的軟件程序以及模 塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,如本發(fā)明實(shí)施例提供的數(shù)據(jù)傳輸方法。
[0033] 存儲(chǔ)器102可包括高速隨機(jī)存儲(chǔ)器,還可包括非易失性存儲(chǔ)器,如一個(gè)或者多個(gè) 磁性存儲(chǔ)裝置、閃存、或者其他非易失性固態(tài)存儲(chǔ)器。在一些實(shí)例中,存儲(chǔ)器102可進(jìn)一步 包括相對于處理器106遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過網(wǎng)絡(luò)連接至用戶終端 100。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。處 理器106以及其他可能的組件對存儲(chǔ)器102的訪問可在存儲(chǔ)控制器104的控制下進(jìn)行。
[0034] 外設(shè)接口 108將各種輸入/輸入裝置耦合至CPU以及存儲(chǔ)器102。處理器106運(yùn) 行存儲(chǔ)器102內(nèi)的各種軟件、指令以執(zhí)行用戶終端100的各種功能以及進(jìn)行數(shù)據(jù)處理。
[0035] 在一些實(shí)施例中,外設(shè)接口 108,處理器106以及存儲(chǔ)控制器104可以在單個(gè)芯片 中實(shí)現(xiàn)。在其他一些實(shí)例中,他們可以分別由獨(dú)立的芯片實(shí)現(xiàn)。
[0036] 射頻模塊110用于接收以及發(fā)送電磁波,實(shí)現(xiàn)電磁波與電信號的相互轉(zhuǎn)換,從而 與通訊網(wǎng)絡(luò)或者其他設(shè)備進(jìn)行通訊。射頻模塊110可包括各種現(xiàn)有的用于執(zhí)行這些功能的 電路元件,例如,天線、射頻收發(fā)器、數(shù)字信號處理器、加密/解密芯片、用戶身份模塊(SM) 卡、存儲(chǔ)器等等。射頻模塊11