專(zhuān)利名稱(chēng):一種分布式系統(tǒng)中的海量文件存儲(chǔ)和訪(fǎng)問(wèn)方法
一種分布式系統(tǒng)中的海量文件存儲(chǔ)和訪(fǎng)問(wèn)方法技術(shù)領(lǐng)域
本發(fā)明專(zhuān)利申請(qǐng)公開(kāi)一種信息技術(shù)領(lǐng)域的海量文件的存儲(chǔ)、組織和訪(fǎng)問(wèn)方法。
技術(shù)背景
在信息技術(shù)領(lǐng)域,經(jīng)常需要處理大量的數(shù)據(jù),特別是在處理一些流式數(shù)據(jù)的時(shí)候, 往往需要將數(shù)據(jù)保存在文件系統(tǒng)里面。但是文件系統(tǒng)的節(jié)點(diǎn)下的文件數(shù)量太多會(huì)導(dǎo)致IO 瓶頸。在為了保持低成本而使用多個(gè)廉價(jià)存儲(chǔ)服務(wù)器構(gòu)成的分布式集群的時(shí)候,需要保證分布式存儲(chǔ)方法的有效性和簡(jiǎn)潔性。因此針對(duì)應(yīng)用的海量數(shù)據(jù)特性來(lái)組織和存儲(chǔ)文件,會(huì)提高海量文件服務(wù)的響應(yīng)性能。特別地,如果這些文件系統(tǒng)還需要響應(yīng)應(yīng)用程序不同維度的數(shù)據(jù)訪(fǎng)問(wèn)的時(shí)候,需要對(duì)這些文件進(jìn)行遍歷訪(fǎng)問(wèn),因此采用何種方式來(lái)組織和存儲(chǔ)文件有可能會(huì)對(duì)應(yīng)用的反應(yīng)時(shí)間產(chǎn)生較大的影響。
比如在搜索引擎的文件存儲(chǔ)系統(tǒng)里面,搜索引擎接收和解析的各種文件體存放在本地文件系統(tǒng)里面,在搜索引擎按照不同的方法對(duì)文件進(jìn)行檢索的時(shí)候,經(jīng)常會(huì)遍歷這些文件的索引,同時(shí)還會(huì)訪(fǎng)問(wèn)這些文件體及相關(guān)的凈文本。在一類(lèi)特殊應(yīng)用里面,時(shí)間維度或者數(shù)據(jù)的業(yè)務(wù)類(lèi)型可能是需要檢索的一個(gè)關(guān)鍵特性。百度、谷歌提供了對(duì)最新文件的檢索功能,但是其主要文件檢索過(guò)程則是在關(guān)鍵詞的字符基礎(chǔ)上發(fā)生的。因此,除非對(duì)百度、谷歌等商業(yè)化引擎進(jìn)行改造,使其能夠支持時(shí)間特性的檢索。還有其他的一些特性的檢索方式,百度、谷歌對(duì)其的支持也不好,這是因?yàn)槠溥M(jìn)行通用的搜索方面走的太遠(yuǎn)了的緣故。
本專(zhuān)利提出一種分布式系統(tǒng)中的海量文件存儲(chǔ)、組織和訪(fǎng)問(wèn)方法,其利用分布式并行架構(gòu)和維度分割特性來(lái)對(duì)海量的文件進(jìn)行組織,使得對(duì)某些維度的數(shù)據(jù)訪(fǎng)問(wèn)非??旖?。對(duì)于搜索引擎來(lái)講,由于限定訪(fǎng)問(wèn)的維度和文件組織一致,只需要訪(fǎng)問(wèn)指定節(jié)點(diǎn)所代表的維度即可完成應(yīng)用的要求,因此沒(méi)有額外的訪(fǎng)問(wèn)開(kāi)銷(xiāo)。發(fā)明內(nèi)容
通過(guò)對(duì)文件按照各種維度來(lái)組織文件的存放,可以加速文件的訪(fǎng)問(wèn)過(guò)程,針對(duì)應(yīng)用的要求減少不必要的文件訪(fǎng)問(wèn),是本發(fā)明申請(qǐng)的出發(fā)點(diǎn)。
比如文件對(duì)象有3個(gè)維度,時(shí)間、協(xié)議類(lèi)型、業(yè)務(wù)類(lèi)型等等,時(shí)間維度還可以細(xì)分為年月日、時(shí)、分等維度。如果應(yīng)用程序想訪(fǎng)問(wèn)某一業(yè)務(wù)在某一時(shí)間段內(nèi)的數(shù)據(jù)時(shí),只需要訪(fǎng)問(wèn)對(duì)應(yīng)的文件夾下的目錄里面的文件即可,即一個(gè)層次的目錄代表了一個(gè)維度。該層目錄下某個(gè)文件夾的文件名即代表了一個(gè)維度的一個(gè)實(shí)例。
常見(jiàn)的集群式分布式系統(tǒng),可以采用多臺(tái)節(jié)點(diǎn)來(lái)進(jìn)行文件的組織和存放,只需要將各個(gè)節(jié)點(diǎn)間的文件都按照一致的維度分割方法和秩序來(lái)進(jìn)行,即可使用訪(fǎng)問(wèn)代理來(lái)對(duì)節(jié)點(diǎn)中的文件按照維度進(jìn)行同步的訪(fǎng)問(wèn),加快整個(gè)分布式系統(tǒng)的數(shù)據(jù)吞吐量。
當(dāng)上層應(yīng)用選擇某一個(gè)維度的文件訪(fǎng)問(wèn)時(shí),訪(fǎng)問(wèn)代理會(huì)將訪(fǎng)問(wèn)轉(zhuǎn)化為對(duì)分布式節(jié)點(diǎn)的同步訪(fǎng)問(wèn),節(jié)點(diǎn)上的本地代理會(huì)將某個(gè)維度的訪(fǎng)問(wèn)轉(zhuǎn)換為對(duì)相應(yīng)維度的文件夾內(nèi)文件的訪(fǎng)問(wèn),再由本地的訪(fǎng)問(wèn)引擎對(duì)文件進(jìn)行處理并將處理結(jié)果反饋給訪(fǎng)問(wèn)代理。
也就是說(shuō)在多個(gè)分布式節(jié)點(diǎn)上使用相同的方式來(lái)組織和保存文件,即將海量數(shù)據(jù)按照多個(gè)維度存儲(chǔ),每一個(gè)維度為文件系統(tǒng)中的一個(gè)層次的目錄,目錄的名稱(chēng)即該維度的一個(gè)實(shí)例。系統(tǒng)將訪(fǎng)問(wèn)指令中的維度信息提取出來(lái),轉(zhuǎn)化為對(duì)文件夾的訪(fǎng)問(wèn),可以提高數(shù)據(jù)訪(fǎng)問(wèn)的效率,減小不必要的數(shù)據(jù)訪(fǎng)問(wèn)開(kāi)銷(xiāo)。
附圖1是不同節(jié)點(diǎn)間的文件存儲(chǔ)和組織方式。各個(gè)節(jié)點(diǎn)采用相同的方式按照不同的維度來(lái)組織和存儲(chǔ)文件。
附圖2是通過(guò)訪(fǎng)問(wèn)代理對(duì)不同節(jié)點(diǎn)的數(shù)據(jù)訪(fǎng)問(wèn)和分布式節(jié)點(diǎn)的本地代理進(jìn)行數(shù)據(jù)訪(fǎng)問(wèn)的流程。
具體實(shí)施方式
按照?qǐng)D1所示,文件組織為多個(gè)層次結(jié)構(gòu),一個(gè)維度為一個(gè)層次的目錄,目錄的名稱(chēng)為該維度的一個(gè)實(shí)例,比如日期為20111215。將最常用的維度放在最靠近根的層次下,比如附圖1所示的維度A。不同的節(jié)點(diǎn)采用相同的文件組織模式,
如圖2所示,具體的訪(fǎng)問(wèn)步驟如下
①應(yīng)用向訪(fǎng)問(wèn)代理下發(fā)訪(fǎng)問(wèn)指令,對(duì)某些維度的具體實(shí)例進(jìn)行訪(fǎng)問(wèn)請(qǐng)求;
②訪(fǎng)問(wèn)代理將指令轉(zhuǎn)化為對(duì)分布式節(jié)點(diǎn)的訪(fǎng)問(wèn),將訪(fǎng)問(wèn)指令同步下發(fā)給各個(gè)分布式節(jié)點(diǎn)上的本地代理;
③分布式節(jié)點(diǎn)的本地代理將訪(fǎng)問(wèn)指令分解為不同的維度實(shí)例集合,將訪(fǎng)問(wèn)指令加載到訪(fǎng)問(wèn)引擎;
④分布式節(jié)點(diǎn)的訪(fǎng)問(wèn)引擎將訪(fǎng)問(wèn)指令中的維度實(shí)例集合轉(zhuǎn)化為具體的文件夾,并對(duì)文件夾內(nèi)的數(shù)據(jù)進(jìn)行加載;
⑤分布式節(jié)點(diǎn)的訪(fǎng)問(wèn)引擎對(duì)加載的數(shù)據(jù)按照指令進(jìn)行訪(fǎng)問(wèn)后將結(jié)果返回給本地代理;
⑥分布式節(jié)點(diǎn)的本地代理將本分布式節(jié)點(diǎn)的結(jié)果返回給訪(fǎng)問(wèn)代理;
⑦訪(fǎng)問(wèn)代理綜合各個(gè)分布式節(jié)點(diǎn)的結(jié)果后返回給應(yīng)用。
比如用戶(hù)選擇了某一段時(shí)間內(nèi)的某種業(yè)務(wù)進(jìn)行關(guān)鍵詞查詢(xún),查詢(xún)?cè)L問(wèn)代理會(huì)將查詢(xún)分解到分布式節(jié)點(diǎn),節(jié)點(diǎn)的本地代理會(huì)對(duì)關(guān)鍵詞查詢(xún)按照業(yè)務(wù)類(lèi)型、時(shí)間的維度,按照具體命中的維度實(shí)例來(lái)對(duì)表示該實(shí)例的文件夾下的內(nèi)容進(jìn)行訪(fǎng)問(wèn),從而減少不必要的磁盤(pán)訪(fǎng)問(wèn)和計(jì)算開(kāi)銷(xiāo)。本分布式節(jié)點(diǎn)的查詢(xún)結(jié)果由本地代理返回給查詢(xún)?cè)L問(wèn)代理,再由查詢(xún)?cè)L問(wèn)代理綜合各節(jié)點(diǎn)的查詢(xún)結(jié)果后返回給用戶(hù)。
本發(fā)明申請(qǐng)能夠利用廉價(jià)的PC服務(wù)器來(lái)打造分布式節(jié)點(diǎn)集群,同時(shí)能夠快速對(duì)指定維度的數(shù)據(jù)進(jìn)行快速訪(fǎng)問(wèn),減少對(duì)不相關(guān)數(shù)據(jù)的訪(fǎng)問(wèn)和計(jì)算,極大地降低了系統(tǒng)的總體擁有成本。在不采用昂貴的磁盤(pán)陣列或者磁盤(pán)柜的時(shí)候,本發(fā)明申請(qǐng)的方案也能夠提供非常優(yōu)秀的訪(fǎng)問(wèn)性能。
權(quán)利要求
1.一種分布式系統(tǒng)中的海量文件存儲(chǔ)和訪(fǎng)問(wèn)方法,其特征在于在多個(gè)分布式節(jié)點(diǎn)上使用相同的方式來(lái)組織和保存文件,即將海量數(shù)據(jù)按照多個(gè)維度存儲(chǔ),每一個(gè)維度為文件系統(tǒng)中的一個(gè)層次的目錄,目錄的名稱(chēng)即該維度的一個(gè)實(shí)例。
2.一種分布式系統(tǒng)中的海量文件存儲(chǔ)和訪(fǎng)問(wèn)方法,其特征在于系統(tǒng)將訪(fǎng)問(wèn)指令中的維度信息提取出來(lái),轉(zhuǎn)化為對(duì)文件夾的訪(fǎng)問(wèn)。
全文摘要
本發(fā)明申請(qǐng)公開(kāi)一種信息技術(shù)領(lǐng)域內(nèi)的海量文件存儲(chǔ)和訪(fǎng)問(wèn)方法。分布式系統(tǒng)內(nèi)各節(jié)點(diǎn)均按照此方式來(lái)組織和保存文件其通過(guò)對(duì)海量數(shù)據(jù)按照業(yè)務(wù)的要求分層多個(gè)維度來(lái)存儲(chǔ),每個(gè)維度對(duì)應(yīng)一個(gè)層次的文件夾,文件夾的名稱(chēng)即維度的實(shí)例。當(dāng)上層應(yīng)用選擇某一個(gè)維度的文件訪(fǎng)問(wèn)時(shí),訪(fǎng)問(wèn)代理會(huì)將訪(fǎng)問(wèn)轉(zhuǎn)化為對(duì)分布式節(jié)點(diǎn)的同步訪(fǎng)問(wèn),節(jié)點(diǎn)上的本地代理會(huì)將某個(gè)維度的訪(fǎng)問(wèn)轉(zhuǎn)換為對(duì)相應(yīng)維度的文件夾內(nèi)文件的訪(fǎng)問(wèn),再由本地的訪(fǎng)問(wèn)引擎對(duì)文件進(jìn)行處理并將處理結(jié)果反饋給訪(fǎng)問(wèn)代理,由訪(fǎng)問(wèn)代理將各個(gè)節(jié)點(diǎn)的處理結(jié)果匯總后返回給應(yīng)用。本申請(qǐng)能夠利用廉價(jià)的PC服務(wù)器來(lái)構(gòu)成分布式集群來(lái)實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的高速訪(fǎng)問(wèn),提供價(jià)格低廉但媲美于磁盤(pán)陣列和磁盤(pán)柜的訪(fǎng)問(wèn)性能。
文檔編號(hào)G06F17/30GK102521383SQ20111043348
公開(kāi)日2012年6月27日 申請(qǐng)日期2011年12月22日 優(yōu)先權(quán)日2011年12月22日
發(fā)明者倪良勝, 廖聞劍, 汪洋 申請(qǐng)人:南京烽火星空通信發(fā)展有限公司