亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于分布式文件系統(tǒng)的文件讀取、寫入方法及節(jié)點(diǎn)服務(wù)器的制造方法

文檔序號(hào):9865533閱讀:607來(lái)源:國(guó)知局
基于分布式文件系統(tǒng)的文件讀取、寫入方法及節(jié)點(diǎn)服務(wù)器的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種文件處理的技術(shù)領(lǐng)域,具體涉及一種基于分布式文件系統(tǒng)的文件 讀取方法、一種基于分布式文件系統(tǒng)的文件寫入方法、W及一種節(jié)點(diǎn)服務(wù)器。
【背景技術(shù)】
[0002] 隨著信息技術(shù)的快速發(fā)展,海量的信息需要被可靠存儲(chǔ)的同時(shí),還要滿足被大量 的使用者快速訪問(wèn)的需求。傳統(tǒng)的存儲(chǔ)方案已經(jīng)從構(gòu)架上越來(lái)越難W適應(yīng)近幾年來(lái)的 業(yè)務(wù)的飛速發(fā)展,成為了業(yè)務(wù)發(fā)展的瓶頸和障礙,此時(shí)皿FS化adoop Distributed File System,化doop分布式文件系統(tǒng))應(yīng)運(yùn)而生。
[0003] 皿FS是通過(guò)一個(gè)高效的分布式算法,將數(shù)據(jù)的訪問(wèn)和存儲(chǔ)分布在大量服務(wù)器之 中,在可靠地多備份存儲(chǔ)的同時(shí)還能將訪問(wèn)分布在集群中的各個(gè)服務(wù)器之上,是傳統(tǒng)存儲(chǔ) 構(gòu)架的一個(gè)顛覆性的發(fā)展。
[0004] 皿FS對(duì)數(shù)據(jù)存儲(chǔ)的最小單位為塊化lock),皿FS會(huì)將其存儲(chǔ)的大文件打散成很 多block。皿FS在進(jìn)行block讀寫的時(shí)候是W packet為單位進(jìn)行的,每一個(gè)packet由若 干個(gè)chunk (chunk是進(jìn)行數(shù)據(jù)校驗(yàn)的基本單位)組成,對(duì)每一個(gè)chunk生成一個(gè)校驗(yàn)和 (checksum)并將校驗(yàn)和進(jìn)行存儲(chǔ)(在默認(rèn)情況下一個(gè)chunk的大小是5^byte,生成的校 驗(yàn)和是4byte)。參考圖1所示的block存儲(chǔ)方式,每個(gè)block分為數(shù)據(jù)塊文件化lock文 件)W及其對(duì)應(yīng)的數(shù)據(jù)塊驗(yàn)證文件(meta文件),讀取block文件中的數(shù)據(jù)時(shí),首先從meta 文件的checksum header中確定校驗(yàn)算法等信息,繼而讀取block文件對(duì)應(yīng)的內(nèi)容,最后讀 取meta文件中的校驗(yàn)和信息。
[0005] 從上述流程中可W看出,一次block文件的讀取過(guò)程,涉及到3次磁盤1/0(輸入 輸出)。在隨機(jī)讀取過(guò)程中,若每次磁盤操作需要約10ms,3次就是30ms,性能非常低下。

【發(fā)明內(nèi)容】

[0006] 鑒于上述問(wèn)題,提出了本發(fā)明W便提供一種克服上述問(wèn)題或者至少部分地解決上 述問(wèn)題的一種基于分布式文件系統(tǒng)的文件讀取方法、一種基于分布式文件系統(tǒng)的文件寫入 方法和相應(yīng)的一種節(jié)點(diǎn)服務(wù)器。
[0007] 依據(jù)本發(fā)明的一個(gè)方面,提供了一種基于分布式文件系統(tǒng)的文件讀取方法,所述 方法包括:
[0008] 數(shù)據(jù)節(jié)點(diǎn)服務(wù)器接收客戶端發(fā)送的數(shù)據(jù)訪問(wèn)請(qǐng)求,所述數(shù)據(jù)訪問(wèn)請(qǐng)求包括需要讀 取的目標(biāo)數(shù)據(jù)塊的信息;
[0009] 獲得與所述目標(biāo)數(shù)據(jù)塊的信息匹配的目標(biāo)數(shù)據(jù)塊,所述目標(biāo)數(shù)據(jù)塊包括標(biāo)識(shí)信息 W及第一數(shù)據(jù)信息,所述標(biāo)識(shí)信息包括校驗(yàn)屬性信息;
[0010] 將所述校驗(yàn)屬性信息W及所述第一數(shù)據(jù)信息發(fā)送至所述客戶端。
[0011] 可選地,所述第一數(shù)據(jù)信息包括分片數(shù)據(jù)chunk W及對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù) checksum,其中,所述分片數(shù)據(jù)chunk W及所述校驗(yàn)和數(shù)據(jù)checksum存儲(chǔ)在磁盤的同一個(gè) 存儲(chǔ)介質(zhì)中。
[0012] 可選地,將所述校驗(yàn)屬性信息W及所述第一數(shù)據(jù)信息發(fā)送至所述客戶端的步驟包 括:
[0013] 從所述目標(biāo)數(shù)據(jù)塊的標(biāo)識(shí)信息中讀取所述校驗(yàn)屬性信息發(fā)送至所述客戶端;
[0014] 從所述存儲(chǔ)介質(zhì)中讀取預(yù)設(shè)大小的分片數(shù)據(jù)chunk W及對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù) checksum發(fā)送至所述客戶端。
[0015] 可選地,所述目標(biāo)數(shù)據(jù)塊的信息包括目標(biāo)數(shù)據(jù)塊ID,目標(biāo)數(shù)據(jù)塊的時(shí)間戳 GenerationStamp,所述獲得與所述目標(biāo)數(shù)據(jù)塊的信息匹配的目標(biāo)數(shù)據(jù)塊的步驟包括:
[0016] 依據(jù)所述目標(biāo)數(shù)據(jù)塊ID W及所述目標(biāo)數(shù)據(jù)塊的時(shí)間戳GenerationStamp,遍歷磁 盤中存儲(chǔ)的數(shù)據(jù)塊,所述數(shù)據(jù)塊包括數(shù)據(jù)塊ID W及數(shù)據(jù)塊時(shí)間戳;
[0017] 查找所述數(shù)據(jù)塊ID與所述目標(biāo)數(shù)據(jù)塊ID相同,W及所述數(shù)據(jù)塊時(shí)間戳與所述目 標(biāo)數(shù)據(jù)塊的時(shí)間戳GenerationStamp相同的數(shù)據(jù)塊作為目標(biāo)數(shù)據(jù)塊。
[0018] 可選地,所述校驗(yàn)屬性信息包括校驗(yàn)和版本Inlinechecksumversion,校驗(yàn)和類型 checksumtype, W及每個(gè)校驗(yàn)和字節(jié)數(shù) bytesPerOiecksum。
[0019] 可選地,所述目標(biāo)數(shù)據(jù)塊的信息包括目標(biāo)數(shù)據(jù)塊的塊內(nèi)偏移量startOff set W及 目標(biāo)數(shù)據(jù)塊的長(zhǎng)度,所述預(yù)設(shè)大小為第一數(shù)據(jù)包packet的大小,所述從所述存儲(chǔ)介質(zhì)中讀 取預(yù)設(shè)大小的分片數(shù)據(jù)chunk W及對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù)checksum發(fā)送至所述客戶端的步驟 包括:
[0020] 子步驟S11,創(chuàng)建第一數(shù)據(jù)包packet ;
[0021] 子步驟S12,依據(jù)所述目標(biāo)數(shù)據(jù)塊的塊內(nèi)偏移量startOffset計(jì)算起始位置;
[0022] 子步驟S13,從所述起始位置開(kāi)始,在所述存儲(chǔ)介質(zhì)中依次讀取每個(gè)分片數(shù)據(jù) chunk W及與所述分片數(shù)據(jù)chunk對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù)checksum到所述第一數(shù)據(jù)包packet 中,直到填滿所述第一數(shù)據(jù)包packet ;
[0023] 子步驟S14,將所述第一數(shù)據(jù)包packet發(fā)送至客戶端中;
[0024] 子步驟S15,重復(fù)上述子步驟S11至子步驟S14,直到發(fā)送至客戶端的數(shù)據(jù)的大小 等于所述目標(biāo)數(shù)據(jù)塊的長(zhǎng)度。
[00巧]可選地,所述校驗(yàn)和數(shù)據(jù)checksum在所述存儲(chǔ)介質(zhì)中的位置位于對(duì)應(yīng)的分片數(shù) 據(jù)chunk的存儲(chǔ)位置之后,位于所述對(duì)應(yīng)的分片數(shù)據(jù)chunk的下一個(gè)分片數(shù)據(jù)chunk的存 儲(chǔ)位置之前。
[0026] 可選地,在所述獲得與所述目標(biāo)數(shù)據(jù)塊的信息匹配的目標(biāo)數(shù)據(jù)塊的步驟之前,還 包括:
[0027] 依據(jù)所述數(shù)據(jù)訪問(wèn)請(qǐng)求建立與所述客戶端的socket連接。
[0028] 根據(jù)本發(fā)明的另一方面,提供了一種基于分布式文件系統(tǒng)的文件寫入方法,所述 方法包括:
[0029] 數(shù)據(jù)節(jié)點(diǎn)服務(wù)器接收客戶端發(fā)送的第二數(shù)據(jù)包packet,所述第二數(shù)據(jù)包packet 中包括目標(biāo)數(shù)據(jù)塊ID、校驗(yàn)屬性信息W及第二數(shù)據(jù)信息;
[0030] 依據(jù)所述目標(biāo)數(shù)據(jù)塊ID定位對(duì)應(yīng)的目標(biāo)數(shù)據(jù)塊;
[0031] 在所述目標(biāo)數(shù)據(jù)塊ID中添加所述校驗(yàn)屬性信息,生成所述目標(biāo)數(shù)據(jù)塊的標(biāo)識(shí)信 息;
[0032] 將所述第二數(shù)據(jù)信息寫入所述目標(biāo)數(shù)據(jù)塊中。
[0033] 可選地,所述第二數(shù)據(jù)信息包括多個(gè)分片數(shù)據(jù)chunk, W及分別與所述多個(gè)分片數(shù) 據(jù)chunk對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù)checksum,所述將所述第二數(shù)據(jù)信息寫入所述目標(biāo)數(shù)據(jù)塊中的 步驟為:
[0034] 將所述分片數(shù)據(jù)chunk W及與所述分片數(shù)據(jù)chunk對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù)checksum 寫入所述目標(biāo)數(shù)據(jù)塊ID對(duì)應(yīng)的目標(biāo)數(shù)據(jù)塊中,其中,所述分片數(shù)據(jù)chunk W及與所述分片 數(shù)據(jù)chunk對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù)checksum存儲(chǔ)在磁盤的同一存儲(chǔ)介質(zhì)中。
[0035] 可選地,所述校驗(yàn)屬性信息包括校驗(yàn)和版本Inlinechecksumversion,校驗(yàn)和類型 checksumtype, W及每個(gè)校驗(yàn)和字節(jié)數(shù) bytesPerOiecksum。
[0036] 可選地,在所述將所述第二數(shù)據(jù)信息寫入所述目標(biāo)數(shù)據(jù)塊中的步驟之后,還包 括:
[0037] 當(dāng)前數(shù)據(jù)節(jié)點(diǎn)服務(wù)器將所述第二數(shù)據(jù)包packet傳遞至預(yù)先生成的節(jié)點(diǎn)隊(duì)列中的 下一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器中。
[0038] 可選地,所述方法還包括:
[0039] 生成響應(yīng)信息,所述響應(yīng)信息為告知所述客戶端當(dāng)前第二數(shù)據(jù)包packet處理完 成的信息;
[0040] 將所述響應(yīng)信息返回所述客戶端。
[0041] 根據(jù)本發(fā)明的另一方面,提供了一種節(jié)點(diǎn)服務(wù)器,所述服務(wù)器包括:
[0042] 請(qǐng)求接收模塊,適于接收客戶端發(fā)送的數(shù)據(jù)訪問(wèn)請(qǐng)求,所述數(shù)據(jù)訪問(wèn)請(qǐng)求包括需 要讀取的目標(biāo)數(shù)據(jù)塊的信息;
[0043] 定位模塊,適于獲得與所述目標(biāo)數(shù)據(jù)塊的信息匹配的目標(biāo)數(shù)據(jù)塊,所述目標(biāo)數(shù)據(jù) 塊包括標(biāo)識(shí)信息W及第一數(shù)據(jù)信息,所述標(biāo)識(shí)信息包括校驗(yàn)屬性信息;
[0044] 數(shù)據(jù)發(fā)送模塊,適于將所述校驗(yàn)屬性信息W及所述第一數(shù)據(jù)信息發(fā)送至所述客戶 端。
[0045] 可選地,所述第一數(shù)據(jù)信息包括分片數(shù)據(jù)chunk W及對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù) checksum,其中,所述分片數(shù)據(jù)chunk W及所述校驗(yàn)和數(shù)據(jù)checksum存儲(chǔ)在磁盤的同一個(gè) 存儲(chǔ)介質(zhì)中。
[0046] 可選地,數(shù)據(jù)發(fā)送模塊包括:
[0047] 屬性信息讀取子模塊,適于從所述目標(biāo)數(shù)據(jù)塊的標(biāo)識(shí)信息中讀取所述校驗(yàn)屬性信 息發(fā)送至所述客戶端;
[0048] 數(shù)據(jù)讀取子模塊,適于從所述存儲(chǔ)介質(zhì)中讀取預(yù)設(shè)大小的分片數(shù)據(jù)chunk W及對(duì) 應(yīng)的校驗(yàn)和數(shù)據(jù)checksum發(fā)送至所述客戶端。
[0049] 可選地,所述目標(biāo)數(shù)據(jù)塊的信息包括目標(biāo)數(shù)據(jù)塊ID,目標(biāo)數(shù)據(jù)塊的時(shí)間戳 GenerationStamp,所述定位模塊還適于:
[0050] 依據(jù)所述目標(biāo)數(shù)據(jù)塊ID W及所述目標(biāo)數(shù)據(jù)塊的時(shí)間戳GenerationStamp,遍歷磁 盤中存儲(chǔ)的數(shù)據(jù)塊,所述數(shù)據(jù)塊包括數(shù)據(jù)塊ID W及數(shù)據(jù)塊時(shí)間戳;
[0051] 查找所述數(shù)據(jù)塊ID與所述目標(biāo)數(shù)據(jù)塊ID相同,W及所述數(shù)據(jù)塊時(shí)間戳與所述目 標(biāo)數(shù)據(jù)塊的時(shí)間戳GenerationStamp相同的數(shù)據(jù)塊作為目標(biāo)數(shù)據(jù)塊。
[0052] 可選地,所述校驗(yàn)屬性信息包括校驗(yàn)和版本Inlinechecksumversion,校驗(yàn)和類型 checksumtype, W及每個(gè)校驗(yàn)和字節(jié)數(shù) bytesPerOiecksum。
[0053] 可選地,所述目標(biāo)數(shù)據(jù)塊的信息包括目標(biāo)數(shù)據(jù)塊的塊內(nèi)偏移量startOffset W及 目標(biāo)數(shù)據(jù)塊的長(zhǎng)度,所述預(yù)設(shè)大小為第一數(shù)據(jù)包packet的大小,所述數(shù)據(jù)讀取模塊還適 于:
[0054] 創(chuàng)建第一數(shù)據(jù)包packet ;
[00巧]依據(jù)所述目標(biāo)數(shù)據(jù)塊的塊內(nèi)偏移量startOffset計(jì)算起始位置;
[0056] 從所述起始位置開(kāi)始,在所述存儲(chǔ)介質(zhì)中依次讀取每個(gè)分片數(shù)據(jù)chunk W及與所 述分片數(shù)據(jù)chunk對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù)checksum到所述第一數(shù)據(jù)包packet中,直到填滿所 述第一數(shù)據(jù)包packet ;
[0057] 將所述第一數(shù)據(jù)包packet發(fā)送至客戶端中。
[0058] 可選地,所述校驗(yàn)和數(shù)據(jù)checksum在所述存儲(chǔ)介質(zhì)中的位置位于對(duì)應(yīng)的分片數(shù) 據(jù)chunk的存儲(chǔ)位置之后,位于所述對(duì)應(yīng)的分片數(shù)據(jù)chunk的下一個(gè)分片數(shù)據(jù)chunk的存 儲(chǔ)位置之前。
[0059] 可選地,所述節(jié)點(diǎn)服務(wù)器還包括:
[0060] 連接建立模塊,適于依據(jù)所述數(shù)據(jù)訪問(wèn)請(qǐng)求建立與所述客戶端的socket連接。
[0061] 根據(jù)本發(fā)明的另一方面,提供了一種節(jié)點(diǎn)服務(wù)器,所述節(jié)點(diǎn)服務(wù)器包括:
[0062] 數(shù)據(jù)接收模塊,適于接收客戶端發(fā)送的第二數(shù)據(jù)包packet,所述第二數(shù)據(jù)包 packet中包括目標(biāo)數(shù)據(jù)塊ID、校驗(yàn)屬性信息W及第二數(shù)據(jù)信息;
[0063] 數(shù)據(jù)塊定位模塊,適于依據(jù)所述目標(biāo)數(shù)據(jù)塊ID定位對(duì)應(yīng)的目標(biāo)數(shù)據(jù)塊;
[0064] 標(biāo)識(shí)信息生成模塊,適于在所述目標(biāo)數(shù)據(jù)塊ID中添加所述校驗(yàn)屬性信息,生成所 述目標(biāo)數(shù)據(jù)塊的標(biāo)識(shí)信息;
[0065] 寫入模塊,適于將所述第二數(shù)據(jù)信息寫入所述目標(biāo)數(shù)據(jù)塊中。
[0066] 可選地,所述第二數(shù)據(jù)信息包括多個(gè)分片數(shù)據(jù)chunk, W及分別與所述多個(gè)分片數(shù) 據(jù)chunk對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù)checksum,所述寫入模塊還適于:
[0067] 將所述分片數(shù)據(jù)chunk W及與所述分片數(shù)據(jù)chunk對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù)checksum 寫入所述目標(biāo)數(shù)據(jù)塊ID對(duì)應(yīng)的目標(biāo)數(shù)據(jù)塊中,其中,所述分片數(shù)據(jù)chunk W及與所述分片 數(shù)據(jù)chunk對(duì)應(yīng)的校驗(yàn)和數(shù)據(jù)checksum存儲(chǔ)在磁盤的同一存儲(chǔ)介質(zhì)中。
[0068] 可選地,所述校驗(yàn)屬性信息包括校驗(yàn)和版本Inlinechecksumversion,校驗(yàn)和類型 checksumtype, W及每個(gè)校驗(yàn)和字節(jié)數(shù) bytesPerOiecksum。
[0069] 可選地,所述節(jié)點(diǎn)服務(wù)器還包括:
[0070] 數(shù)據(jù)傳遞模塊,適于當(dāng)前數(shù)據(jù)節(jié)點(diǎn)服務(wù)器將所述第二數(shù)據(jù)包packet傳遞至預(yù)先 生成的節(jié)點(diǎn)隊(duì)列中的下一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器中。
[0071] 可選地,所述節(jié)點(diǎn)服務(wù)器還包括:
[0072] 響應(yīng)信息生成模塊,適于生成響應(yīng)信息,所述響應(yīng)信息為告知所述客戶端當(dāng)前第 二數(shù)據(jù)包packet處理完成的信息;
[0073] 響應(yīng)信息發(fā)送模塊,適于將所述響應(yīng)信息返回所述客戶端。
[0074] 在本發(fā)明實(shí)
當(dāng)前第1頁(yè)1 2 3 4 5 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1