一種讀取分布式數(shù)據(jù)的方法、系統(tǒng)和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種讀取分布式數(shù)據(jù)的方法、系統(tǒng)和設(shè)備。
【背景技術(shù)】
[0002]分布式文件系統(tǒng)(Distributed File System)是指文件系統(tǒng)管理的物理存儲資源不一定直接連接在本地節(jié)點上,而是通過計算機網(wǎng)絡(luò)與節(jié)點相連,比如云存儲系統(tǒng)。
[0003]當云計算系統(tǒng)運算和處理的核心是大量數(shù)據(jù)的存儲和管理時,云計算系統(tǒng)中就需要配置大量的存儲設(shè)備,那么云計算系統(tǒng)就轉(zhuǎn)變成為一個云存儲系統(tǒng),所以云存儲是一個以數(shù)據(jù)存儲和管理為核心的云計算系統(tǒng)。簡單來說,云存儲就是將儲存資源放到云上供人存取的一種新興方案。使用者可以在任何時間、任何地方,透過任何可連網(wǎng)的裝置連接到云上方便地存取數(shù)據(jù)
[0004]現(xiàn)有的基于Raid (Redundant Arrays of Inexpensive Disks,磁盤陣列)的分布式存儲系統(tǒng)中,以O(shè)bject (對象)為單位寫入讀取數(shù)據(jù)。讀取端在需要讀取數(shù)據(jù)時,會向存儲端讀取對應的數(shù)據(jù)。
[0005]目前的讀取端只能從存儲端讀取寫入端已經(jīng)寫入存儲端的Object。如果寫入端正在對存儲端寫入Object,而讀取端需要讀取這個Object,讀取端必須等到寫入端將Object寫入存儲端后,才能讀取這個Object。無法實時讀取正在存儲的Object,因此會導致讀取數(shù)據(jù)的實時性整整少一個Object大小,讀取數(shù)據(jù)的實時性比較低。
[0006]綜上所述,目前讀取分布式數(shù)據(jù)的方案實時性比較低。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提供一種讀取分布式數(shù)據(jù)的方法、系統(tǒng)和設(shè)備,用以解決現(xiàn)有技術(shù)中存在的讀取分布式數(shù)據(jù)的方案實時性比較低的問題。
[0008]本發(fā)明實施例提供一種讀取分布式數(shù)據(jù)的方法,包括:
[0009]讀取端確定需要讀取的對象Object的數(shù)據(jù)分片的存儲位置信息;
[0010]所述讀取端根據(jù)所述存儲位置信息向至少一個存儲節(jié)點請求數(shù)據(jù)分片,并接收來自所述至少一個存儲節(jié)點的數(shù)據(jù)分片。
[0011]較佳地,所述讀取端根據(jù)所述存儲位置信息向至少一個存儲節(jié)點請求數(shù)據(jù)分片,包括:
[0012]所述讀取端根據(jù)所述存儲位置信息,確定存儲需要讀取的Object的數(shù)據(jù)分片的至少一個存儲節(jié)點;
[0013]所述讀取端同時向確定的所述至少一個存儲節(jié)點請求數(shù)據(jù)分片。
[0014]較佳地,所述讀取端接收來自所述至少一個存儲節(jié)點的數(shù)據(jù)分片之后,還包括:
[0015]若接收到所述至少一個存儲節(jié)點返回的讀取失敗消息或在讀取Object時長內(nèi)需要讀取的Object的所有數(shù)據(jù)分片未接收完成,所述讀取端在確定需要繼續(xù)接收后,確定未接收的數(shù)據(jù)分片;
[0016]所述讀取端根據(jù)所述存儲位置信息向存儲未接收的數(shù)據(jù)分片的存儲節(jié)點請求數(shù)據(jù)分片。
[0017]較佳地,所述Object由多個條帶組成,每個條帶由多個數(shù)據(jù)分片組成;
[0018]所述讀取端接收來自所述至少一個存儲節(jié)點的數(shù)據(jù)分片之后,還包括:
[0019]所述讀取端在讀取條帶時長內(nèi)對應的條帶的所有數(shù)據(jù)分片未接收完成,所述讀取端在確定需要繼續(xù)接收后,確定對應的條帶中未接收的數(shù)據(jù)分片;
[0020]所述讀取端根據(jù)所述存儲位置信息向存儲未接收的數(shù)據(jù)分片的存儲節(jié)點請求數(shù)據(jù)分片。
[0021]較佳地,所述讀取端接收來自所述至少一個存儲節(jié)點的數(shù)據(jù)分片之后,還包括:
[0022]所述讀取端在接收到一個條帶的所有數(shù)據(jù)分片后,判斷所述Object中位于該條帶之前的所有條帶是否已存儲;
[0023]若是,則將該條帶進行存儲,否則等待所述Object中位于該條帶之前的所有條帶已存儲后,將該條帶進行存儲。
[0024]較佳地,所述讀取端根據(jù)下列方式判斷是否需要繼續(xù)接收:
[0025]所述讀取端判斷接收命令時長內(nèi)是否接收到停止命令,若接收到,則確定不需要繼續(xù)接收;否則,確定需要繼續(xù)接收;或
[0026]所述讀取端判斷接收命令時長內(nèi)是否接收到繼續(xù)命令,若接收到,則確定需要繼續(xù)接收;否則,確定不需要繼續(xù)接收。
[0027]本發(fā)明實施例提供的一種讀取分布式數(shù)據(jù)的方法,包括:
[0028]存儲節(jié)點根據(jù)接收到的來自讀取端的請求,確定所述讀取端需要讀取的Ob j e c t的數(shù)據(jù)分片;
[0029]所述存儲節(jié)點將確定的數(shù)據(jù)分片發(fā)送給所述讀取端。
[0030]較佳地,所述存儲節(jié)點將確定的數(shù)據(jù)分片發(fā)送給所述讀取端,包括:
[0031]所述存儲節(jié)點將確定的、且已存儲的數(shù)據(jù)分片發(fā)送給所述讀取端。
[0032]較佳地,所述存儲節(jié)點將確定的、且已存儲的數(shù)據(jù)分片發(fā)送給所述讀取端之后,還包括:
[0033]若確定的數(shù)據(jù)分片中有未存儲的數(shù)據(jù)分片,所述存儲節(jié)點保存收到的所述請求,并在所述未存儲的數(shù)據(jù)分片存儲到所述存儲節(jié)點后,向所述讀取端返回存儲到所述存儲節(jié)點的數(shù)據(jù)分片。
[0034]較佳地,所述存儲節(jié)點保存收到的所述請求,并在所述未存儲的數(shù)據(jù)分片存儲到所述存儲節(jié)點后,向所述讀取端返回存儲到所述存儲節(jié)點的數(shù)據(jù)分片之前,還包括:
[0035]所述存儲節(jié)點確定在所述未存儲的數(shù)據(jù)分片存儲到所述存儲節(jié)點時,未超過存儲時長。
[0036]較佳地,所述存儲節(jié)點保存收到的所述請求,并在所述未存儲的數(shù)據(jù)分片存儲到所述存儲節(jié)點后,還包括:
[0037]若在所述未存儲的數(shù)據(jù)分片存儲到所述存儲節(jié)點時,超過存儲時長,所述存儲節(jié)點向所述讀取端返回讀取失敗消息。
[0038]本發(fā)明實施例提供的一種讀取分布式數(shù)據(jù)的讀取設(shè)備,包括:
[0039]位置確定模塊,用于確定需要讀取的Object的數(shù)據(jù)分片的存儲位置信息;
[0040]處理模塊,用于根據(jù)所述存儲位置信息向至少一個存儲設(shè)備請求數(shù)據(jù)分片,并接收來自所述至少一個存儲設(shè)備的數(shù)據(jù)分片。
[0041]較佳地,所述處理模塊具體用于:
[0042]根據(jù)所述存儲位置信息,確定存儲需要讀取的Object的數(shù)據(jù)分片的至少一個存儲設(shè)備;同時向確定的所述至少一個存儲設(shè)備請求數(shù)據(jù)分片。
[0043]較佳地,所述處理模塊還用于:
[0044]接收來自所述至少一個存儲設(shè)備的數(shù)據(jù)分片之后,若接收到所述至少一個存儲設(shè)備返回的讀取失敗消息或在讀取Object時長內(nèi)需要讀取的Object的所有數(shù)據(jù)分片未接收完成,在確定需要繼續(xù)接收后,確定未接收的數(shù)據(jù)分片;根據(jù)所述存儲位置信息向存儲未接收的數(shù)據(jù)分片的存儲設(shè)備請求數(shù)據(jù)分片。
[0045]較佳地,所述Object由多個條帶組成,每個條帶由多個數(shù)據(jù)分片組成;
[0046]所述處理模塊還用于:
[0047]接收來自所述至少一個存儲設(shè)備的數(shù)據(jù)分片之后,若在讀取條帶時長內(nèi)對應的條帶的所有數(shù)據(jù)分片未接收完成,在確定需要繼續(xù)接收后,確定對應的條帶中未接收的數(shù)據(jù)分片;根據(jù)所述存儲位置信息向存儲未接收的數(shù)據(jù)分片的存儲節(jié)點請求數(shù)據(jù)分片。
[0048]較佳地,所述處理模塊還用于:
[0049]在接收到一個條帶的所有數(shù)據(jù)分片后,判斷所述Object中位于該條帶之前的所有條帶是否已存儲;若是,則將該條帶進行存儲,否則等待所述Object中位于該條帶之前的所有條帶已存儲后,將該條帶進行存儲。
[0050]較佳地,所述處理模塊具體用于,根據(jù)下列方式判斷是否需要繼續(xù)接收:
[0051]判斷接收命令時長內(nèi)是否接收到停止命令,若接收到,則確定不需要繼續(xù)接收;否貝1J,確定需要繼續(xù)接收;或
[0052]判斷接收命令時長內(nèi)是否接收到繼續(xù)命令,若接收到,則確定需要繼續(xù)接收;否貝U,確定不需要繼續(xù)接收。
[0053]本發(fā)明實施例提供的一種讀取分布式數(shù)據(jù)的存儲設(shè)備,包括:
[0054]數(shù)據(jù)分片確定模塊,用于根據(jù)接收到的來自讀取設(shè)備的請求,確定所述讀取設(shè)備需要讀取的Object的數(shù)據(jù)分片;
[0055]發(fā)送模塊,用于將確定的數(shù)據(jù)分片發(fā)送給所述讀取設(shè)備。
[0056]較佳地,所述發(fā)送模塊具體用于:
[0057]將