午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種基于預(yù)測的鍵值存儲數(shù)據(jù)庫副本選擇方法與流程

文檔序號:11215981閱讀:385來源:國知局
一種基于預(yù)測的鍵值存儲數(shù)據(jù)庫副本選擇方法與流程

本發(fā)明涉及一種基于預(yù)測的鍵值存儲數(shù)據(jù)庫副本選擇方法。



背景技術(shù):

在分布式鍵值存儲系統(tǒng)中,一個終端請求可以生成大量的鍵值,需要幾十個甚至幾百個服務(wù)器來進(jìn)行服務(wù)。這些鍵值請求的延遲直接影響終端請求的響應(yīng)時間。響應(yīng)時間過長一直是影響用戶體驗(yàn)和收益的重要因素之一,降低鍵值請求的尾延遲具有重要意義。其中,為鍵值請求選擇合適的副本服務(wù)器是降低尾延遲的有效方法之一。

由于服務(wù)器的性能波動等原因,選到合適的副本服務(wù)器并非易事。首先,如果所有的客戶端都選擇最快的副本服務(wù)器,高并發(fā)會導(dǎo)致副本服務(wù)器性能的急劇下降。因此,副本選擇算法必須能夠避免這樣的羊群效應(yīng)。其次,由于鍵值存取的輕量級特性,副本選擇算法必須足夠簡單。為解決以上問題,適應(yīng)服務(wù)器的性能變化,副本選擇算法c3應(yīng)運(yùn)而生。c3的主要思想是,將服務(wù)器的等待隊列長度信息及鍵值的服務(wù)時間隨返回值一起反饋給客戶端,并通過這些反饋信息對副本服務(wù)器進(jìn)行打分排序,從而選出最快的副本服務(wù)器。

在鍵值存儲數(shù)據(jù)庫中,副本選擇算法決定了每一鍵值存取操作的副本服務(wù)器,極大地影響每一個鍵值存取操作的延時,是降低應(yīng)用請求的響應(yīng)時間(亦即所有鍵值操作的尾延時)的重要方法之一。雖然c3在降低尾延遲方面表現(xiàn)良好,但是我們發(fā)現(xiàn)c3依然存在進(jìn)一步的改進(jìn)空間。當(dāng)收到反饋信息時,c3對反饋信息進(jìn)行指數(shù)加權(quán)平滑(ewma)計算來估計服務(wù)器端的等待隊列長度和服務(wù)器的服務(wù)速度。然而,副本排序操作與收到反饋信息之間存在時間差,一旦這個等待時間(τw)較長,服務(wù)器的性能波動會導(dǎo)致服務(wù)器的狀態(tài)發(fā)生變化,而之前的等待隊列長度估計值將無法反應(yīng)此時的服務(wù)器狀態(tài)。我們把這種情況稱之為時效性問題。雖然當(dāng)前的副本選擇算法c3創(chuàng)造性的引入反饋信息指導(dǎo)副本選擇,并獲得了良好的性能表現(xiàn),但是其存在反饋信息的時效性經(jīng)常會變得很差。當(dāng)時效性很差(τw≥100ms)時,c3不準(zhǔn)確的等待隊列長度估計,將直接影響副本服務(wù)器的選擇,致使等待隊列長度增長迅速,進(jìn)而導(dǎo)致排隊延遲劇增。



技術(shù)實(shí)現(xiàn)要素:

為了解決上述c3副本選擇算法的時效性問題,本發(fā)明提出了一種基于預(yù)測的鍵值存儲數(shù)據(jù)庫副本選擇方法,即predication-basedreplicaselectionalgorithm,簡稱為prs。在反饋信息不具有時效性時,即τw≥100ms時,prs方法使用預(yù)測方法代替簡單的指數(shù)加權(quán)平滑估計服務(wù)器的等待隊列長度。通過更準(zhǔn)確的等待隊列長度估計,選擇更合適的副本服務(wù)器。

為了實(shí)現(xiàn)上述技術(shù)目的,本發(fā)明的技術(shù)方案是,

一種基于預(yù)測的鍵值存儲數(shù)據(jù)庫副本選擇方法,包括依次執(zhí)行的等待隊列長度變化趨勢判斷、預(yù)測等待隊列長度和副本排序三個步驟;

其中等待隊列長度趨勢判斷包含以下三個步驟:

步驟一:通過鍵值訪問操作的返回值攜帶的方式將包括等待隊列長度變化量在內(nèi)的信息反饋給客戶端,客戶端收到反饋信息時,執(zhí)行步驟二;

步驟二:根據(jù)反饋信息判斷當(dāng)前副本服務(wù)器的等待隊列長度的變化趨勢;

步驟三:如果等待隊列長度變化趨勢未改變,存儲當(dāng)前反饋信息及其時間戳,如果等待隊列長度變化趨勢發(fā)生變化,存儲當(dāng)前反饋信息及其時間戳,同時刪除上一個等待隊列長度變化趨勢內(nèi)所有存儲的反饋信息;

預(yù)測服務(wù)器等待隊列長度分為以下三個步驟:

步驟1:判斷步驟三中新存儲的反饋信息的時效性的強(qiáng)弱,如果是強(qiáng)時效性執(zhí)行步驟2,如果是弱時效性執(zhí)行步驟3;

步驟2:取這個強(qiáng)時效性的反饋信息中的等待隊列長度,與之前所有收到的反饋信息中等待隊列長度進(jìn)行指數(shù)加權(quán)平滑的歷史記錄結(jié)果再進(jìn)行指數(shù)加權(quán)平滑,以作為服務(wù)器端的等待隊列長度估計,并將結(jié)果存儲為新的指數(shù)加權(quán)平滑的歷史記錄結(jié)果,然后執(zhí)行副本排序操作;

步驟3:根據(jù)步驟二的等待隊列長度變化趨勢以及步驟三存儲的信息,對服務(wù)器端的等待隊列長度進(jìn)行預(yù)測,執(zhí)行副本排序操作;

副本排序操作:根據(jù)步驟2或步驟3算出的估計等待隊列長度對服務(wù)器副本進(jìn)行性能評估,最后選取性能評估結(jié)果最好的副本服務(wù)器。

所述的方法,步驟一中,反饋信息包括每5ms內(nèi)的等待隊列長度的變化量δqs,等待隊列長度以及當(dāng)前鍵值訪問的服務(wù)時間μs。

所述的方法,步驟二中,根據(jù)等待隊列長度的變化量δqs和等待隊列長度將等待隊列長度的變化趨勢分為三種狀態(tài),平穩(wěn)、上升和下降;初始狀態(tài)設(shè)置為平穩(wěn)狀態(tài),三種狀態(tài)之間轉(zhuǎn)換的判斷條件如下:任何情況下如果則判斷為平穩(wěn)狀態(tài);從平穩(wěn)狀態(tài)轉(zhuǎn)換為上升狀態(tài)需滿足δqs>0與同時從平穩(wěn)狀態(tài)轉(zhuǎn)換為下降狀態(tài)需滿足δqs<0與同時從上升狀態(tài)轉(zhuǎn)換為下降狀態(tài)需滿足δqs<0或同時從下降狀態(tài)轉(zhuǎn)換為上升狀態(tài)需滿足δqs>0或同時

所述的方法,步驟三中,如果等待隊列長度變化趨勢發(fā)生變化,則通過以下步驟來判斷上一個反饋信息是否保留:使用上一個反饋信息中的等待隊列長度減去新的反饋信息中等待隊列長度,如果結(jié)果為正,且當(dāng)前等待隊列長度變化趨勢為下降,該反饋信息需要保留;如果結(jié)果為負(fù),且當(dāng)前等待隊列長度變化趨勢為上升,該反饋信息也需要保留,否則不保留。

所述的方法,步驟1中,判斷反饋信息是否時效性的強(qiáng)弱是用反饋信息的時間戳與當(dāng)前時間比對,閾值設(shè)定為100ms,如果小于等于100ms,反饋信息具有強(qiáng)時效性,如果大于100ms,反饋信息具有弱時效性。

所述的方法,步驟3中,如等待隊列長度變化趨勢為上升或下降狀態(tài),預(yù)測所使用的方法為最小二乘擬合方法,根據(jù)當(dāng)前存儲的反饋等待隊列長度及其時間戳,擬合出一個等待隊列長度對時間的線性函數(shù),代入當(dāng)前時間,計算結(jié)果即為預(yù)測的等待隊列長度;

如等待隊列長度變化趨勢為平穩(wěn)狀態(tài),使用指數(shù)加權(quán)平滑算法預(yù)測等待隊列長度計算公式如下:

其中為步驟三在目前所存儲的同一等待隊列長度變化趨勢中,使用指數(shù)加權(quán)平滑算法進(jìn)行預(yù)測等待隊列長度的歷史記錄。

所述的方法,副本排序操作中,對副本進(jìn)行排序的操作分為以下步驟:將步驟2或3算出的等待隊列長度值代入打分函數(shù),按照得分從小到大的順序?qū)Ω北具M(jìn)行排序,選取分?jǐn)?shù)最低的副本服務(wù)器。打分函數(shù)如下所示:

其中,rs為客戶端收集的響應(yīng)時間,為反饋信息的服務(wù)時間的ewma值,n為客戶端數(shù)目,osk為該客戶端對應(yīng)服務(wù)器s的已發(fā)送但未響應(yīng)的鍵值存取請求數(shù)。

本發(fā)明解決上述時效性問題的技術(shù)方案包含以下幾個步驟:首先,將等待隊列長度的變化趨勢分為三種狀態(tài):平穩(wěn)狀態(tài),上升狀態(tài)和下降狀態(tài)。在收到反饋信息時,通過反饋信息判斷服務(wù)器當(dāng)前的等待隊列長度變化的趨勢,并將處于當(dāng)前趨勢的反饋信息及其時間戳存儲下來,除位于邊界的有用的反饋信息外將上一個等待隊列長度變化趨勢的反饋信息刪除。其次,把反饋信息按時效性分為τw超過100ms和不超過100ms兩個部分。實(shí)驗(yàn)證明τw不超過100ms的反饋信息為具有時效性的可用反饋信息,因此,在τw不超過100ms時,依然采用與c3相同的等待隊列長度估計方法。在τw超過100ms時,通過當(dāng)前的等待隊列長度的變化趨勢以及在等待隊列長度變化趨勢判斷后存儲的反饋信息對服務(wù)器的等待隊列長度進(jìn)行預(yù)測。在對服務(wù)器端等待隊列長度進(jìn)行預(yù)估后,prs依舊選用與c3相同的打分函數(shù)進(jìn)行副本排序,但是由于prs的等待隊列長度預(yù)測更準(zhǔn)確,因此prs的性能優(yōu)于c3。

下面結(jié)合附圖對本發(fā)明作進(jìn)一步說明。

附圖說明

圖1為鍵值存儲系統(tǒng)的副本選擇架構(gòu)圖。

圖2為c3的等待隊列長度,反饋等待隊列長度以及估計等待隊列長度,上圖為τw≥100ms的情況,下圖為τw<100ms的情況。

圖3為c3的等待隊列長度及其反饋的等待隊列長度。

圖4為prs的等待隊列長度趨勢及其判斷條件示意圖。

圖5當(dāng)?shù)却犃虚L度變化趨勢發(fā)生變化時,位于邊界的反饋信息不需刪除的情況的示意圖。

圖6為prs的預(yù)測等待隊列長度以及等待隊列長度趨勢判斷的效果圖。

圖7為prs算法與c3算法在不同客戶端數(shù)目環(huán)境下的延遲表現(xiàn)的測試效果圖。

圖8為prs算法與c3算法在20%的客戶端產(chǎn)生80%的請求的環(huán)境下的測試效果圖。

圖9為prs算法與c3算法在50%的客戶端產(chǎn)生80%的請求的環(huán)境下的測試效果圖。

圖10為prs算法與c3算法在不同副本數(shù)的環(huán)境下的延遲表現(xiàn)的測試效果圖。

具體實(shí)施方式

為使本發(fā)明的目的、內(nèi)容及優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明的實(shí)施方式進(jìn)行具體的闡述。

本發(fā)明所述的prs算法,是針對副本選擇算法c3的時效性問題,進(jìn)行改進(jìn)。由于排隊延遲是尾延遲的重要組成部分,所以等待隊列長度估計是副本打分函數(shù)的核心所在。c3副本選擇算法在τw大于100毫秒時,會遇到嚴(yán)重的時效性問題。此時,使用過時的反饋信息加以指數(shù)加權(quán)平滑(ewma)獲得的估計等待隊列長度與服務(wù)器的等待隊列長度相差極大。如圖2所示,qs表示服務(wù)器端的真實(shí)等待隊列長度,表示經(jīng)過ewma后的反饋等待隊列長度。從圖2中可以看出ewma的估計值與真實(shí)值相差甚遠(yuǎn)。并且,由于反饋信息的缺失,可以在很長時間內(nèi)維持不變,而在幾百毫秒后,服務(wù)器等待隊列長度可能發(fā)生大范圍的變化。

為解決該時效性問題,我們對c3進(jìn)行了仿真復(fù)現(xiàn),發(fā)現(xiàn)在時效性較差時,等待隊列長度的變化趨勢存在一些規(guī)律。首先,服務(wù)器的等待隊列長度雖然變化頻繁,但其趨勢變化并不劇烈,甚至可以維持幾千毫秒不變化。其次,雖然反饋隊列長度不能表示當(dāng)前的服務(wù)器狀態(tài),但其依然可以反映等待隊列長度的變化趨勢。如圖3所示,表示一個隨機(jī)選出的服務(wù)器的反饋等待隊列長度?;谝陨习l(fā)現(xiàn),本發(fā)明提出了prs算法,在τw超過100毫秒時,利用反饋信息對服務(wù)器等待隊列長度進(jìn)行預(yù)測,以獲得更準(zhǔn)確的估計服務(wù)器排隊情況。

所述的prs算法對服務(wù)器端等待隊列長度的預(yù)測由判斷等待隊列長度變化趨勢和預(yù)測等待隊列長度兩個部分組成。

判斷等待隊列長度變化趨勢由以下三個步驟組成:

步驟一:將服務(wù)器的等待隊列長度對應(yīng)鍵值的服務(wù)速率μs以及等待隊列長度的變化量δqs(每20ms計算一次)隨返回值一起反饋給客戶端。

步驟二:根據(jù)反饋的等待隊列長度以及δqs判斷等待隊列長度的當(dāng)前變化趨勢。

圖4為等待隊列長度趨勢狀態(tài)及其轉(zhuǎn)換條件。prs將等待隊列長度的趨勢分為三種狀態(tài),平穩(wěn),上升和下降。判斷當(dāng)前等待隊列長度處于何種狀態(tài)的操作過程如下:

初始狀態(tài)設(shè)置為平穩(wěn)狀態(tài)。prs進(jìn)入或保持平穩(wěn)狀態(tài)的唯一條件為①,即反饋等待隊列長度小于等于30。只要滿足該條件,prs立即進(jìn)入平穩(wěn)狀態(tài)。

②和③為prs進(jìn)入到上升狀態(tài)的條件。如果prs是從平穩(wěn)狀態(tài)轉(zhuǎn)換為上升狀態(tài),說明等待隊列長度增長迅速,因此轉(zhuǎn)換條件為δqs>0與(表示上一個反饋回來的δqs)。如果prs是從下降狀態(tài)轉(zhuǎn)換為上升狀態(tài),等待隊列長度增長或者等待隊列長度的降速放緩都可以表明等待隊列長度的變化趨勢即將轉(zhuǎn)降為升,因此轉(zhuǎn)換條件為δqs>0或

④和⑤為prs進(jìn)入到下降狀態(tài)的條件。這兩種條件的設(shè)計與上述條件②和③類似。事實(shí)上prs不可能從平穩(wěn)狀態(tài)直接過渡到下降狀態(tài),但是上升狀態(tài)可能會有反饋信息缺失,因此,條件⑤也是必要的。

步驟三:對反饋信息進(jìn)行選擇,只保留同一趨勢內(nèi)的反饋信息用于預(yù)測等待隊列長度,之前所保存的上一個不同變化趨勢內(nèi)的反饋信息則刪除。其中,對于處于轉(zhuǎn)換邊界的反饋信息,需要對其進(jìn)行判斷,如果為可用信息則保留,否則,將之刪除。具體的判斷方法是使用上一個反饋信息中的等待隊列長度減去新的反饋信息中等待隊列長度,如果結(jié)果為正,且當(dāng)前等待隊列長度變化趨勢為下降,該反饋信息需要保留;如果結(jié)果為負(fù),且當(dāng)前等待隊列長度變化趨勢為上升,該反饋信息也需要保留,否則不保留。

圖5所示的三種情況的邊界反饋信息為可用的,需保留的信息。即只有該反饋可以作為下一趨勢的起點(diǎn)時,判定該反饋信息有用。

預(yù)測等待隊列長度由以下步驟組成:

步驟1:判斷反饋信息的時效性,即τw是否超過100ms。

步驟2:如果τw≤100ms,即認(rèn)為反饋信息具有強(qiáng)時效性,使用ewma方法估計等待隊列長度。取這個強(qiáng)時效性的反饋信息中的等待隊列長度,與之前所有收到的反饋信息中等待隊列長度進(jìn)行指數(shù)加權(quán)平滑的歷史記錄結(jié)果再進(jìn)行指數(shù)加權(quán)平滑,以作為服務(wù)器端的等待隊列長度估計,并將結(jié)果存儲為新的指數(shù)加權(quán)平滑的歷史記錄結(jié)果,然后執(zhí)行副本排序操作。此處執(zhí)行ewma方法所取的歷史記錄結(jié)果,是指從運(yùn)行prs開始,在執(zhí)行該步驟時,對反饋信息中等待隊列長度進(jìn)行指數(shù)加權(quán)平滑后,會得到一個指數(shù)加權(quán)平滑的結(jié)果,將這個結(jié)果保存,并在下一次運(yùn)行該步驟時作為指數(shù)加權(quán)平滑的其中一個輸入,與新的反饋信息中等待隊列長度再次執(zhí)行指數(shù)加權(quán)平滑后,將新的結(jié)果覆蓋原來的歷史記錄結(jié)果,如此循環(huán)運(yùn)行。

步驟3:如果τw>100ms,即認(rèn)為反饋信息具有弱時效性,利用判斷等待隊列長度變化趨勢操作收集的信息,進(jìn)行等待隊列長度預(yù)測。具體操作如下:

如果當(dāng)前等待隊列長度的變化趨勢為平穩(wěn),prs使用判斷等待隊列長度變化趨勢操作收集的反饋信息的ewma值作為預(yù)測等待隊列長度值。計算公式如下:

其中為步驟三在目前所存儲的同一等待隊列長度變化趨勢中,使用指數(shù)加權(quán)平滑算法進(jìn)行預(yù)測等待隊列長度的歷史記錄。這里所采用的歷史記錄,是在等待隊列長度趨勢判斷的步驟三中,存儲的同一個變化趨勢內(nèi)的反饋信息中等待隊列長度,而不采用之前其他的變化趨勢中的等待隊列長度。

如果當(dāng)前等待隊列長度的變化趨勢為上升或者下降,prs使用判斷等待隊列長度變化趨勢操作收集的信息進(jìn)行最小二乘擬合,在擬合函數(shù)中代入當(dāng)前時間計算出預(yù)測等待隊列長度值。

另外,在上升狀態(tài),如果同一個擬合函數(shù)被重復(fù)使用了4次,證明反饋信息已經(jīng)很久沒有更新,在這種情況下,prs增加了一個補(bǔ)充機(jī)制。如果這4次預(yù)測的osk(客戶端已發(fā)送但未收到反饋的請求數(shù))都等于0,那么第5次打分時,直接將預(yù)測等待隊列長度值置0,以確保該服務(wù)器能夠確定被選到。對于一個長時間沒有鍵值請求發(fā)送過去的服務(wù)器,需要嘗試發(fā)送請求以獲得其反饋信息。在下降狀態(tài),如果預(yù)測值小于0,直接將其置0。

根據(jù)步驟2或步驟3算出的估計等待隊列長度對服務(wù)器副本進(jìn)行性能評估,最后選取性能評估結(jié)果最好的副本服務(wù)器。具體是將步驟2或3算出的等待隊列長度值代入打分函數(shù),按照得分從小到大的順序?qū)Ω北具M(jìn)行排序,選取分?jǐn)?shù)最低的副本服務(wù)器。打分函數(shù)如下所示:

其中,rs為客戶端收集的響應(yīng)時間,為反饋信息的服務(wù)時間的ewma值,n為客戶端數(shù)目,osk為該客戶端對應(yīng)服務(wù)器s的已發(fā)送但未響應(yīng)的鍵值存取請求數(shù)。

為了驗(yàn)證本發(fā)明的性能表現(xiàn),對prs與c3進(jìn)行了仿真實(shí)驗(yàn)。

在仿真模擬實(shí)驗(yàn)中,終端請求的到達(dá)服從泊松分布。每個鍵值請求的服務(wù)時間服從均值為4的指數(shù)分布。為了模擬服務(wù)器的性能波動,每隔500毫秒每個服務(wù)器的服務(wù)速率有50%的概率在均值μ和μ*3之間波動。單程的網(wǎng)絡(luò)延遲為250微秒。系統(tǒng)共有200個請求生成器,50個服務(wù)器,默認(rèn)有150個客戶端。每次實(shí)驗(yàn)重復(fù)五次取平均值。鍵值請求總數(shù)為600000。

圖6為prs的預(yù)測等待隊列長度以及等待隊列長度變化趨勢判斷的效果圖。qp為使用prs方法預(yù)測的等待隊列長度,qe為c3使用的ewma等待隊列長度估計,此圖只展示了τw>100ms的情況。顯然,prs的預(yù)測等待隊列長度更加的準(zhǔn)確,尤其是在等待隊列長度的變化趨勢未改變的時候。等待隊列長度的變化趨勢的判斷的正確性直接的影響等待隊列長度預(yù)測的準(zhǔn)確程度。從圖6中也可以看出,prs對于等待隊列長度的變化趨勢判斷的先見之明。三種不同的線型表示等待隊列長度即將進(jìn)入對應(yīng)的三種狀態(tài)。圖6顯示出大部分的預(yù)判是正確的,而少部分的誤判,會在下次反饋到來時得到及時的修正。為了更有說服力,本發(fā)明統(tǒng)計了prs和ewma的估計值與真實(shí)等待隊列長度值的差值,結(jié)果顯示,prs比c3更接近真實(shí)等待隊列長度的預(yù)測結(jié)果占57%,兩者相似的結(jié)果占13%,剩下的30%c3較prs接近。其中,兩種方法的差值小于等于1的情況,在統(tǒng)計中認(rèn)為二者相似。總的來說,相比于c3,prs的預(yù)測等待隊列長度更加的準(zhǔn)確

圖7展示了prs算法與c3算法在不同客戶端數(shù)目環(huán)境下的99th%的延遲表現(xiàn)的測試效果圖??蛻舳藬?shù)目的變化可以直接影響鍵值請求的并發(fā)程度以及反饋信息的疏密,因此客戶端越多,延遲越大。從圖7中可以看出,prs算法是優(yōu)于c3算法的。

圖8和圖9展示了prs算法與c3算法在鍵值請求偏斜的情況下的99th%的延遲,分別為20%的客戶端生成80%的鍵值請求和50%的客戶端生成80%的鍵值請求。顯而易見地,prs的延遲遠(yuǎn)小于c3。在鍵值請求偏斜的情況下,反饋信息更加的密集,prs的性能更優(yōu)。

圖10展示了副本數(shù)目的變化對99th%的延遲的影響。在這里將副本數(shù)從3依次增加到5。由于副本數(shù)目的增加,選擇最快的副本服務(wù)器變得更難,尾延遲也隨著副本數(shù)增加而增加。從圖10中可以看出,在副本數(shù)增加時,prs在降低尾延遲方面依然優(yōu)于c3。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1