本發(fā)明屬于大數(shù)據(jù)存儲(chǔ)系統(tǒng)技領(lǐng)域,具體是一種動(dòng)態(tài)副本文件訪問方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)用戶的增多,“大數(shù)據(jù)”挑戰(zhàn)也隨之而來。目前數(shù)據(jù)的規(guī)模已經(jīng)達(dá)到了TB級甚至是PB級,這使得數(shù)據(jù)的維護(hù)以及處理變得越來越困難。云計(jì)算作為一種新興的商業(yè)計(jì)算模式順應(yīng)產(chǎn)生,被廣泛應(yīng)用于大數(shù)據(jù)領(lǐng)域,為用戶提供基礎(chǔ)設(shè)施即服務(wù)(IaaS)、平臺(tái)即服務(wù)(PaaS)、軟件即服務(wù)(SaaS)等各種服務(wù)。其中云儲(chǔ)存是云計(jì)算的存儲(chǔ)部分,它將大量類型各異的廉價(jià)的存儲(chǔ)設(shè)備通過網(wǎng)絡(luò)連接成存儲(chǔ)資源池,并將存儲(chǔ)和數(shù)據(jù)服務(wù)以統(tǒng)一的接口按需提供給授權(quán)用戶,具有超大規(guī)模、高可擴(kuò)展性等特點(diǎn)。
在存儲(chǔ)系統(tǒng)中,常使用多副本技術(shù)以及節(jié)點(diǎn)故障自動(dòng)容錯(cuò)技術(shù)來保證文件的高可靠性和可用性。多副本技術(shù)是指將一個(gè)文件復(fù)制多份,并分別存放在不同的存儲(chǔ)節(jié)點(diǎn),既避免了由于存儲(chǔ)節(jié)點(diǎn)發(fā)生故障導(dǎo)致文件無法訪問的情況,同時(shí)也避免由于高訪問量造成用戶訪問延遲的增加。目前副本技術(shù)策略大致可以分為靜態(tài)副本技術(shù)和動(dòng)態(tài)副本技術(shù)。采用靜態(tài)副本技術(shù)時(shí),每個(gè)文件副本數(shù)都是固定的,HDFS中通常為3。在靜態(tài)副本技術(shù)中,在高訪問量的時(shí)候,過少的副本會(huì)增加文件的訪問延遲;而在低訪問量的時(shí)候,過多的閑置副本又會(huì)導(dǎo)致資源的浪費(fèi)。動(dòng)態(tài)副本技術(shù)則根據(jù)用戶的需求、帶寬等變化來動(dòng)態(tài)地改變文件的副本數(shù)。因此相比于靜態(tài)副本技術(shù),動(dòng)態(tài)副本技術(shù)更為常用。
盡管很多科研人員都在研究如何有效的動(dòng)態(tài)的控制文件副本數(shù),才能有效地實(shí)現(xiàn)提高文件的可用性、降低文件訪問時(shí)延以及均衡系統(tǒng)負(fù)載等目標(biāo),但他們往往忽略了在磁盤上頻繁增刪文件帶來的后果:存在在某一周期時(shí),系統(tǒng)為文件增加了多個(gè)副本,而在下一周期時(shí)需要?jiǎng)h除文件的多個(gè)副本,或者先刪后增,頻繁刪除過大的文件時(shí),會(huì)對磁盤造成一定的損害。為了降低文件創(chuàng)建和刪除的頻率,本發(fā)明將動(dòng)態(tài)副本技術(shù)和預(yù)測機(jī)制結(jié)合在一起,降低文件的訪問延遲,同時(shí)減少文件的增刪頻率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明旨在解決以上現(xiàn)有技術(shù)的問題。提出了一種降低文件的訪問延遲,同時(shí)減少文件的增刪頻率,提高大數(shù)據(jù)文件的處理效率的基于用戶訪問量以及預(yù)測機(jī)制的動(dòng)態(tài)副本文件訪問方法。本發(fā)明的技術(shù)方案如下:
一種基于用戶訪問量以及預(yù)測機(jī)制的動(dòng)態(tài)副本文件訪問方法,其包括以下步驟:
101、預(yù)先設(shè)置一個(gè)文件訪問的響應(yīng)時(shí)間閾值td,求取出在響應(yīng)時(shí)間閾值td下存儲(chǔ)節(jié)點(diǎn)所能處理的文件的最大訪問量,從而求取出當(dāng)前周期文件的副本個(gè)數(shù);
102、根據(jù)文件的歷史訪問記錄,預(yù)測出文件下一周期的訪問量,并根據(jù)步驟101動(dòng)態(tài)求取出文件當(dāng)前周期與下一周期的副本個(gè)數(shù),并求取出文件的最佳副本個(gè)數(shù);
103、在選取存儲(chǔ)節(jié)點(diǎn)集合進(jìn)行副本添加或刪除時(shí),動(dòng)態(tài)地通過粒子群算法,選取最優(yōu)的節(jié)點(diǎn)集合來放置文件副本的位置。
進(jìn)一步的,步驟101中求取出在響應(yīng)時(shí)間閾值td下存儲(chǔ)節(jié)點(diǎn)所能處理的文件的最大訪問量包括步驟:
(1)設(shè)置響應(yīng)時(shí)間閾值td;
(2)根據(jù)文件發(fā)送時(shí)間公式計(jì)算出節(jié)點(diǎn)所能處理的文件的最大訪問量;
(3)根據(jù)用戶訪問量,求取文件的副本個(gè)數(shù)。
進(jìn)一步的,所述步驟(2)具體為:要求訪問的響應(yīng)時(shí)間tresponse不超過td,即tresponse≤td,因此,單個(gè)存儲(chǔ)節(jié)點(diǎn)上處理單個(gè)文件的訪問量不得超過:
tresponse表示訪問文件的響應(yīng)時(shí)間;ttransfer表示文件的發(fā)送時(shí)間;s(i)表示文件i的大??;v(j)表示存儲(chǔ)節(jié)點(diǎn)j的發(fā)送速度;k的最大值為:
其中,td表示某文件上單個(gè)訪問發(fā)送時(shí)延的最大值,由用戶設(shè)定;kmax表示文件在節(jié)點(diǎn)上的最大訪問量;
假設(shè)某文件在存儲(chǔ)系統(tǒng)上包含原文件本身在內(nèi)及副本的個(gè)數(shù)為Ncurrent,則為了滿足每個(gè)訪問的發(fā)送時(shí)延不超過td,則文件的最大訪問量應(yīng)為:
Amax=Ncurrent×kmax
其中,Ncurrent表示一文件在存儲(chǔ)系統(tǒng)中的副本個(gè)數(shù);Amax表示一文件在存儲(chǔ)系統(tǒng)中的最大訪問量。
進(jìn)一步的,所述步驟102根據(jù)文件的歷史訪問記錄,預(yù)測出文件下一周期的訪問量采用指數(shù)平滑模型預(yù)測公式其中,α表示平滑系數(shù);A(t)表示的是第t個(gè)周期文件的實(shí)際訪問量;表示的是第t個(gè)周期文件的預(yù)測訪問量,若當(dāng)前訪問量使得文件需要增加副本數(shù),而由預(yù)測得到的下一個(gè)周期的訪問量使得文件需要?jiǎng)h除副本數(shù)時(shí),則將不會(huì)為文件創(chuàng)建副本,,此時(shí)文件的最佳副本數(shù)仍保持不變;若當(dāng)前的與下一個(gè)周期的訪問量同時(shí)使得文件增加或者刪除副本數(shù),則取當(dāng)前的與下一個(gè)周期的副本數(shù)得平均值作為最佳副本數(shù)。
進(jìn)一步的,所述步驟103通過多目標(biāo)優(yōu)化策略選取合理的節(jié)點(diǎn)集,包括實(shí)現(xiàn)系統(tǒng)的可靠性以及系統(tǒng)負(fù)載均衡的雙目標(biāo)優(yōu)化。
進(jìn)一步的,衡量實(shí)現(xiàn)系統(tǒng)的可靠性為:
其中,SR表示系統(tǒng)的可靠性;R(i)表示文件i的可用性;φ(i,j)表示文件i是否在節(jié)點(diǎn)j上,1表示存在,0則表示不存在;pj表示節(jié)點(diǎn)j的失效率。
衡量系統(tǒng)負(fù)載是否均衡可使用負(fù)載變化幅度即標(biāo)準(zhǔn)差SL來描述:
其中,m表示存儲(chǔ)節(jié)點(diǎn)的個(gè)數(shù);SL系統(tǒng)負(fù)載變化幅度的標(biāo)準(zhǔn)差值;表示系統(tǒng)中負(fù)載的平均值;A(i,j)表示文件i在節(jié)點(diǎn)j上的訪問量。
進(jìn)一步的,將目標(biāo)函數(shù)按線性加權(quán)法得到一個(gè)優(yōu)化的目標(biāo)函數(shù)以及其約束條件:
其中,S表示目標(biāo)函數(shù);θ表示目標(biāo)所占權(quán)重,由用戶確定;C表示存儲(chǔ)節(jié)點(diǎn)的最大容量。
本發(fā)明的優(yōu)點(diǎn)及有益效果如下:
1.本發(fā)明由用戶設(shè)定一個(gè)響應(yīng)時(shí)間閾值td,要求用戶對文件的訪問響應(yīng)時(shí)間不得超過td,根據(jù)此要求增刪文件副本個(gè)數(shù),降低文件的發(fā)送時(shí)延從而滿足用戶的需求。
2.采用預(yù)測機(jī)制預(yù)測文件未來的訪問量,根據(jù)當(dāng)前的以及未來的文件訪問量來確定文件增刪的副本個(gè)數(shù),避免文件增加副本后在下一周期會(huì)出現(xiàn)減少副本的情況,減少頻繁改動(dòng)文件副本帶來的巨大開銷。
3.在選取刪除或增加文件副本的存儲(chǔ)節(jié)點(diǎn)集合時(shí),本發(fā)明考慮了文件可用性以及系統(tǒng)負(fù)載變化兩個(gè)因素,保證系統(tǒng)處于文件高可用性,節(jié)點(diǎn)負(fù)載變化均衡的狀態(tài)。
附圖說明
圖1是本發(fā)明提供優(yōu)選實(shí)施例的動(dòng)態(tài)副本模型圖;
圖2為存儲(chǔ)系統(tǒng)中的文件訪問模型;
圖3為本發(fā)明的動(dòng)態(tài)副本策略的流程圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、詳細(xì)地描述。所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例。
本發(fā)明的技術(shù)方案如下:
(1)節(jié)點(diǎn)處理文件的最大訪問量
用戶對文件的訪問時(shí)延,包括文件的響應(yīng)時(shí)間(發(fā)送時(shí)延)以及傳輸時(shí)延。傳輸時(shí)延的長短通常只與鏈路的帶寬有關(guān),帶寬高則傳輸時(shí)延小,現(xiàn)有的帶寬能夠快速地發(fā)送一個(gè)文件,因此在本發(fā)明中不作考慮。而文件的響應(yīng)時(shí)間通常與多種因素相關(guān)。
文件的響應(yīng)時(shí)間由查找時(shí)間、旋轉(zhuǎn)時(shí)間、發(fā)送時(shí)間以及等待時(shí)間組成。由于現(xiàn)在的文件規(guī)模比較大,查找時(shí)間和旋轉(zhuǎn)時(shí)間遠(yuǎn)小于發(fā)送時(shí)間,往往可以忽略不計(jì)。因此,第k個(gè)訪問的響應(yīng)時(shí)間由發(fā)送時(shí)間以及等待時(shí)間兩個(gè)部分組成:
其中,s(i)表示文件i的大?。?/p>
v(j)表示存儲(chǔ)節(jié)點(diǎn)j的發(fā)送速度;
ttransfer表示文件的發(fā)送時(shí)間;
twaiting(k-1)表示第k個(gè)訪問在處理前,需等待前k-1個(gè)訪問處理完成;
tresponse(k)表示某文件上的第k訪問的響應(yīng)時(shí)間;
通過DMA或RDMA技術(shù)對文件進(jìn)行發(fā)送,可以不需要CPU的參與,不同文件上其訪問的等待時(shí)間是相對獨(dú)立的。因此第k個(gè)訪問的等待時(shí)間為:
第k個(gè)訪問的響應(yīng)時(shí)間可表示為:
本發(fā)明設(shè)置一個(gè)由用戶設(shè)定的響應(yīng)時(shí)間閾值td,要求訪問的響應(yīng)時(shí)間不超過td,即tresponse≤td。因此,單個(gè)存儲(chǔ)節(jié)點(diǎn)上處理對單個(gè)文件的訪問量不得超過:
k的最大值為:
其中,td表示某文件上單個(gè)訪問發(fā)送時(shí)延的最大值,由用戶設(shè)定;
kmax表示文件在節(jié)點(diǎn)上的最大訪問量;
假設(shè)某文件在存儲(chǔ)系統(tǒng)上的副本個(gè)數(shù)(包含原文件本身)為Ncurrent,則為了滿足每個(gè)訪問的發(fā)送時(shí)延不超過td,則文件的最大訪問量應(yīng)為:
Amax=Ncurrent×kmax
其中,Ncurrent表示一文件在存儲(chǔ)系統(tǒng)中的副本個(gè)數(shù);
Amax表示一文件在存儲(chǔ)系統(tǒng)中的最大訪問量;
因此,文件在節(jié)點(diǎn)上的訪問量不得超過Amax。當(dāng)文件的訪問量過高,現(xiàn)有的文件副本數(shù)無法滿足時(shí),需要為文件增加副本;當(dāng)訪問量過低時(shí),刪除多余的文件,減少資源的浪費(fèi)。
(2)文件的最佳副本個(gè)數(shù)
本發(fā)明在動(dòng)態(tài)副本策略中加入預(yù)測機(jī)制,在每次增刪文件副本時(shí),根據(jù)文件當(dāng)前以及未來的訪問量來確定副本增刪的個(gè)數(shù),避免文件增加副本后在下一周期會(huì)出現(xiàn)減少副本的情況,降低文件的增刪頻率。指數(shù)平滑模型預(yù)測公式被用于根據(jù)文件的訪問歷史記錄來計(jì)算出文件未來的文件訪問量:
其中,α表示平滑系數(shù);
A(t)表示的是第t個(gè)周期文件的實(shí)際訪問量;
表示的是第t個(gè)周期文件的預(yù)測訪問量;
若當(dāng)前訪問量使得文件需要增加副本數(shù),而由預(yù)測得到的未來的訪問量使得文件需要?jiǎng)h除副本數(shù)時(shí),則本發(fā)明將不會(huì)為文件創(chuàng)建副本;若當(dāng)前的與未來的訪問量同時(shí)使得文件增加或者刪除副本數(shù),則考慮取其平均值作為最佳副本數(shù)。
(3)文件副本放置位置的選取
為一組文件增加或刪除副本數(shù)時(shí),本發(fā)明通過多目標(biāo)優(yōu)化策略選取合理的節(jié)點(diǎn)集。本發(fā)明重點(diǎn)考慮實(shí)現(xiàn)系統(tǒng)的可靠性以及系統(tǒng)負(fù)載均衡的雙目標(biāo)優(yōu)化。
系統(tǒng)的可靠性為:
其中,SR表示系統(tǒng)的可靠性;
R(i)表示文件i的可用性;
φ(i,j)表示文件i是否在節(jié)點(diǎn)j上,1表示存在,0則表示不存在;
pj表示節(jié)點(diǎn)j的失效率;
衡量系統(tǒng)負(fù)載是否均衡可使用負(fù)載變化幅度(標(biāo)準(zhǔn)差)來描述:
其中,SL系統(tǒng)負(fù)載變化幅度的標(biāo)準(zhǔn)差值;
表示系統(tǒng)中負(fù)載的平均值;
A(i,j)表示文件i在節(jié)點(diǎn)j上的訪問量;
當(dāng)SR值越大時(shí),表示文件的可靠性越高;當(dāng)SL值越小時(shí),表示節(jié)點(diǎn)的負(fù)載較均衡穩(wěn)定。將目標(biāo)函數(shù)按線性加權(quán)法得到一個(gè)優(yōu)化的目標(biāo)函數(shù)以及其約束條件:
其中,S表示目標(biāo)函數(shù);
θ表示目標(biāo)所占權(quán)重,由用戶確定;
C表示存儲(chǔ)節(jié)點(diǎn)的最大容量;
本發(fā)明采用粒子群算法動(dòng)態(tài)地選取副本放置的集合,使得S取得最優(yōu)值。
圖1展示了動(dòng)態(tài)副本策略的模型,將云存儲(chǔ)的結(jié)構(gòu)抽象成由多個(gè)性能相同的存儲(chǔ)節(jié)點(diǎn)集合組成,單個(gè)文件在云存儲(chǔ)系統(tǒng)中均有多個(gè)副本分別分布在不同的節(jié)點(diǎn)上,以保證文件的高可用性并減少用戶的訪問延遲。
參考圖2,給出了文件在存儲(chǔ)系統(tǒng)中的訪問模型。由于DMA與RDMA技術(shù)的發(fā)展,使得文件的傳輸不再需要CPU的介入。因此每個(gè)訪問請求的文件傳輸按照訪問到達(dá)的先后順序進(jìn)行排列,如圖中的隊(duì)列,第k個(gè)訪問需等待前k-1訪問處理完畢才可以進(jìn)行處理。
參考圖3,本發(fā)明所述的動(dòng)態(tài)副本策略流程圖。首先,本發(fā)明設(shè)置一個(gè)用戶閾值,根據(jù)當(dāng)前的文件訪問量,計(jì)算出文件當(dāng)前所需要增加或者刪除的副本數(shù)N*;然后根據(jù)文件的歷史訪問記錄,預(yù)測文件下一周期的訪問量,并計(jì)算相應(yīng)增加或者刪除的副本數(shù)Np;其次,當(dāng)文件在前后兩周期都需要增加副本時(shí),即N*>0,Np>0,為文件增加副本;或者當(dāng)文件在前后兩周期都需要?jiǎng)h除副本時(shí),即N*<0,Np<0,為文件刪除副本。取這個(gè)數(shù)的平均值作為文件應(yīng)增加或刪除的副本數(shù);最后,采用粒子群算法來求取副本存儲(chǔ)的最佳結(jié)點(diǎn)集合,以提高文件可用性以及平衡節(jié)點(diǎn)的負(fù)載為目的,根據(jù)用戶需求來設(shè)置這兩個(gè)目標(biāo)的權(quán)重。
本發(fā)明在大數(shù)據(jù)存儲(chǔ)系統(tǒng)中,采用動(dòng)態(tài)副本技術(shù)以及有效的預(yù)測機(jī)制,從而實(shí)現(xiàn)降低文件的訪問延遲、減少文件的增刪頻率等目標(biāo)。同時(shí)利用粒子群算法動(dòng)態(tài)確定副本增刪的存儲(chǔ)結(jié)點(diǎn)集合,使得增刪文件后,系統(tǒng)處于負(fù)載均衡以及文件高可靠性的狀態(tài)。
以上這些實(shí)施例應(yīng)理解為僅用于說明本發(fā)明而不用于限制本發(fā)明的保護(hù)范圍。在閱讀了本發(fā)明的記載的內(nèi)容之后,技術(shù)人員可以對本發(fā)明作各種改動(dòng)或修改,這些等效變化和修飾同樣落入本發(fā)明權(quán)利要求所限定的范圍。