国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種海量數(shù)據(jù)管理中動態(tài)一致性控制方法

      文檔序號:6438916閱讀:198來源:國知局
      專利名稱:一種海量數(shù)據(jù)管理中動態(tài)一致性控制方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于海量數(shù)據(jù)環(huán)境下副本放置方法領(lǐng)域,提出一種當(dāng)數(shù)據(jù)存在多個副本時對數(shù)據(jù)進(jìn)行合理放置的方法,即海量數(shù)據(jù)管理中動態(tài)一致性控制方法。它綜合考慮了影響副本放置方法的各種因素,在滿足每條數(shù)據(jù)記錄一致性要求的前提下,為用戶提供一種靈活的一致性控制方法。
      背景技術(shù)
      近些年來,伴隨著社交網(wǎng)站,在線視頻,網(wǎng)絡(luò)相冊共享,微博等為典型應(yīng)用的互聯(lián)網(wǎng)應(yīng)用的涌現(xiàn),web 2.0時代隨之來臨。面對信息爆炸的互聯(lián)網(wǎng),如何來處理和存儲大規(guī)模的數(shù)據(jù)給業(yè)界和學(xué)術(shù)界帶來了極大的挑戰(zhàn)。在海量數(shù)據(jù)出現(xiàn)之前,如果說集中式的架構(gòu)由于其簡便性,暫且還有其存在的理由,那么當(dāng)用戶規(guī)模和數(shù)據(jù)量大幅提升的時候,由于其先天所存在的諸如單點失效,可擴(kuò)展性差,對高并發(fā)的處理能力低下等致命缺陷,導(dǎo)致這些系統(tǒng)必須從集中式架構(gòu)向分布式架構(gòu)做轉(zhuǎn)化。而提到分布式系統(tǒng),不得不提到Eric Brewer教授提出的CAP理論。該理論指出 在一個分布式的系統(tǒng)中,不可能同時滿足一致性(Consistency),可用性(Availability) 和分區(qū)容錯性(Partition Tolerance)這三個需求,最多只能同時滿足其中兩個。而對于上文中所提到的這些大型的應(yīng)用,由于其對數(shù)據(jù)的實時性要求不像金融領(lǐng)域系統(tǒng)那么高, 可用性和分區(qū)容錯性的優(yōu)先級要高于數(shù)據(jù)一致性,因此往往采用放棄強(qiáng)一致性的做法來提升系統(tǒng)的高可用性與分區(qū)容錯性,在一致性需求上取而代之的是采用最終一致性。由于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在處理高并發(fā)的讀寫請求上,性能相對較差,因此國內(nèi)外各大企業(yè)都在開發(fā)適合自己業(yè)務(wù)需求的鍵值型數(shù)據(jù)庫,例如國外的企業(yè)Google開發(fā)的 Big Table,F(xiàn)acebook主導(dǎo)開發(fā)的Cassandra,國內(nèi)的如淘寶網(wǎng)研發(fā)的OceanBase,豆瓣網(wǎng)開發(fā)的DoubanDB。雖然健值型數(shù)據(jù)庫在性能上與關(guān)系型數(shù)據(jù)庫相比有了非常明顯的提升,但是這些數(shù)據(jù)庫在處理數(shù)據(jù)一致性問題上往往都是根據(jù)自己特定的業(yè)務(wù)需求而開發(fā)的,而不像關(guān)系型數(shù)據(jù)庫那樣,可以適用于任何業(yè)務(wù)類型。這就會產(chǎn)生以下兩個問題1)不同的企業(yè)都需要開發(fā)滿足自己業(yè)務(wù)需求的鍵值型數(shù)據(jù)庫來解決傳統(tǒng)的關(guān)系型數(shù)據(jù)庫所引起的高并發(fā)問題等一系列問題。2)在一個應(yīng)用內(nèi)部不同的數(shù)據(jù)類型對于一致性要求也會有差異, 例如圖片與文字相比,其一致性要求顯然沒后者高,那么當(dāng)兩者采用同一種一致性方法時, 肯定是通過采用提升前者一致性要求的方式來滿足系統(tǒng)整體的一致性要求,那么對于系統(tǒng)整體而言,性能就會有所下降。從目前的情況來看,對于以上兩個問題,無論是業(yè)界還是學(xué)術(shù)界,都還沒有一個很好的解決方案?;谝陨系姆治?,出于以下兩點需求1)滿足不同的應(yīng)用對副本一致性所提出的不同需求;2)同一應(yīng)用中不同的數(shù)據(jù)類型之間區(qū)別對待一致性的要求,需要一種靈活而又動態(tài)的一致性控制方法。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于提供一種海量數(shù)據(jù)環(huán)境下動態(tài)的一致性控制方法。該發(fā)明方法是在不需要開發(fā)一套新的鍵值型數(shù)據(jù)庫的前提下,提供一種靈活的一致性控制方法。它不僅可以滿足不同的應(yīng)用對數(shù)據(jù)一致性的差異性需求,還可以對同一個應(yīng)用中不同的數(shù)據(jù)類型提供針對性的一致性控制方法。本發(fā)明提供的一種海量數(shù)據(jù)管理中動態(tài)一致性控制方法,其特征在于,該方法包括以下步驟(1)主線程對環(huán)境做初始化工作,包括以下五個步驟(1. 1)創(chuàng)建三個空置隊列,按照創(chuàng)建的先后順序,分別命名為高優(yōu)先級隊列,表示為HQ ;中優(yōu)先級隊列,表示為MQ ;低優(yōu)先級隊列,表示為LQ ;(1. 2)創(chuàng)建三個變量NS、VS、PS,分別用來保存所有的任務(wù)隊列中所有的任務(wù)的數(shù)據(jù)條目偏差總和,數(shù)值偏差總和以及新舊程度偏差總和,并將初始值均設(shè)為0 ;(1. 3)創(chuàng)建三個計數(shù)器NC、VC、PC,分別用來保存當(dāng)前所有的任務(wù)隊列中關(guān)于數(shù)據(jù)條目偏差的任務(wù)總數(shù),數(shù)值偏差的任務(wù)總數(shù)以及新舊程度偏差的任務(wù)總數(shù),并將初始值均設(shè)為0;(1. 4)創(chuàng)建并啟動一個子線程Tl,用于逐個處理三個任務(wù)隊列中的任務(wù);(1. 5)創(chuàng)建并啟動兩個子線程T2和T3,用于定期調(diào)度三個任務(wù)隊列中的任務(wù),避免因較高優(yōu)先級任務(wù)隊列中的任務(wù)長時間擁堵,導(dǎo)致較低優(yōu)先級隊列中的任務(wù)沒有機(jī)會處理的情況發(fā)生;(2)服務(wù)節(jié)點開始監(jiān)聽來自客戶端發(fā)來的讀寫請求;(3)當(dāng)服務(wù)節(jié)點接收到一個來自客戶端發(fā)來的數(shù)據(jù)讀寫請求任務(wù)后,首先讀取該請求任務(wù)的操作類型;(4)讀取該請求任務(wù)的偏差類型,并讀取該請求任務(wù)的偏差值,并將讀取結(jié)果與當(dāng)前的閾值比較后放到相應(yīng)的隊列尾部;(5)回退到步驟O),繼續(xù)監(jiān)聽來自客戶端發(fā)來的請求。本發(fā)明是在不需要開發(fā)一套新的鍵值型數(shù)據(jù)庫的前提下,通過用不同的數(shù)據(jù)偏差類型和偏差值來描述任意的一致性要求,從而提供一種靈活的一致性控制方法。可以將此發(fā)明方法應(yīng)用到任何鍵值型數(shù)據(jù)庫上,并將該數(shù)據(jù)庫部署到物理機(jī)或是虛擬機(jī)上,形成一個服務(wù)節(jié)點。若干個服務(wù)節(jié)點統(tǒng)一對外提供數(shù)據(jù)訪問服務(wù),形成一個分布式的數(shù)據(jù)庫環(huán)境。 它不僅可以滿足不同的應(yīng)用對數(shù)據(jù)一致性的差異性需求,還可以對同一個應(yīng)用中不同的數(shù)據(jù)類型提供針對性的一致性控制方法。具體而言,本發(fā)明具有以下幾個優(yōu)點(1)減少冗余工作。目前在海量數(shù)據(jù)環(huán)境下為了解決數(shù)據(jù)一致性的問題,各機(jī)構(gòu)的做法往往是投入大量的人力對所有的業(yè)務(wù)邏輯做詳盡的分析后開發(fā)出一套只能適合該業(yè)務(wù)本身的鍵值型數(shù)據(jù)庫。不難看出,從調(diào)研到迭代開發(fā),以及后期的各項測試,其所消耗的開發(fā)周期將會非常之長,而且各個解決方案的相似性非常大,這對于投入資源的浪費程度可想而知。而本發(fā)明的前提就是不需要單獨開發(fā)一套鍵值型數(shù)據(jù)庫,只需要選取任意一套開源的數(shù)據(jù)庫,將本發(fā)明方法運用到此即可。由此可見,可以大大地減少冗余的工作,提高開發(fā)效率。(2)靈活控制。傳統(tǒng)的解決方案在開發(fā)之前會有非常詳盡的前期需求分析,因此在正常情況下開發(fā)出來的數(shù)據(jù)庫可以滿足該需求。如果后期出現(xiàn)了增加新需求等情況,則有可能會出現(xiàn)已經(jīng)開發(fā)完成的數(shù)據(jù)庫不能解決該需求,不得不進(jìn)行后期的迭代開發(fā)。而本發(fā)明方法所提出的通過對不同的數(shù)據(jù)設(shè)置相應(yīng)的一致性偏差類型和偏差值的方式,可以靈活地對各種一致性要求進(jìn)行描述,完全不需要額外的再開發(fā)工作。(3)保證所有任務(wù)在有限的時間內(nèi)得到處理。當(dāng)數(shù)據(jù)庫受到來自于客戶端的高負(fù)載請求時,對于一致性要求較高的請求可能會出現(xiàn)得不到及時處理的情況。本發(fā)明中設(shè)置了三個不同優(yōu)先級的任務(wù)隊列,在盡可能保證較高優(yōu)先級任務(wù)率先處理的前提下,通過對定時器的引入,保證較低優(yōu)先級的任務(wù)在設(shè)置的時間間隔內(nèi)肯定能夠得到處理。本發(fā)明可以克服不同的應(yīng)用由于其業(yè)務(wù)數(shù)據(jù)對于一致性要求的差異性而不能使用現(xiàn)成的鍵值型數(shù)據(jù)庫的困難。使得用戶只需要關(guān)心所操作的數(shù)據(jù)對于一致性的指標(biāo)及其取值,而完全不需要花大量的精力重新開發(fā)一套只能滿足自己業(yè)務(wù)需求的鍵值型數(shù)據(jù)庫。


      圖1為本發(fā)明方法的流程圖;圖2為任務(wù)調(diào)度隊列的示意圖。
      具體實施例方式本發(fā)明的主要原理是通過分析用戶請求任務(wù)中一致性指標(biāo)的偏差取值,并將其與該指標(biāo)類型所對應(yīng)的當(dāng)前任務(wù)隊列中所有任務(wù)偏差平均值的一半值與兩倍值(在下文中將這兩個值統(tǒng)稱為當(dāng)前閾值)進(jìn)行比較后分發(fā)到相應(yīng)優(yōu)先級的任務(wù)處理隊列中。根據(jù)對任務(wù)隊列中任務(wù)的先后處理順序,來體現(xiàn)對一致性差異化的需求。下面結(jié)合附圖和實例,對本發(fā)明的具體實施步驟作詳細(xì)說明。(1)主線程對環(huán)境做初始化工作,這包括以下5點內(nèi)容(1. 1)創(chuàng)建三個空置隊列,按照創(chuàng)建的先后順序,分別命名為高優(yōu)先級隊列(在下文中用HQ表示),中優(yōu)先級隊列(在下文中用MQ表示),低優(yōu)先級隊列(在下文中用LQ表示)°(1. 2)創(chuàng)建三個變量NS、VS、PS,分別用來保存所有的任務(wù)隊列中所有的任務(wù)的數(shù)據(jù)條目偏差總和,數(shù)值偏差總和以及新舊程度偏差總和,并將初始值均設(shè)為0。(1. 3)創(chuàng)建三個計數(shù)器NC、VC、PC,分別用來保存當(dāng)前所有的任務(wù)隊列中關(guān)于數(shù)據(jù)條目偏差的任務(wù)總數(shù),數(shù)值偏差的任務(wù)總數(shù)以及新舊程度偏差的任務(wù)總數(shù),并將初始值均設(shè)為0。(1.4)創(chuàng)建并啟動一個子線程Tl,其目的是逐個處理三個任務(wù)隊列中的任務(wù)。該線程的具體實施內(nèi)容將在下文中詳細(xì)說明。(1. 5)創(chuàng)建并啟動兩個子線程T2和T3,其目的是定期調(diào)度三個任務(wù)隊列中的任務(wù),避免因較高優(yōu)先級任務(wù)隊列中的任務(wù)長時間擁堵,導(dǎo)致較低優(yōu)先級隊列中的任務(wù)沒有機(jī)會處理的情況發(fā)生。該線程的具體實施內(nèi)容將在下文中詳細(xì)說明。(2)服務(wù)節(jié)點開始監(jiān)聽來自客戶端發(fā)來的讀寫請求。(3)當(dāng)服務(wù)節(jié)點接收到一個來自客戶端發(fā)來的數(shù)據(jù)讀寫請求任務(wù)后,首先讀取該請求任務(wù)的操作類型,具體為讀、寫、刪三者中的其中一種。
      (4)然后讀取該請求任務(wù)的偏差類型,具體為數(shù)據(jù)條目偏差、數(shù)值偏差、新舊程度偏差三者中的其中一種。并讀取該請求任務(wù)的偏差值。(4. 1)對于偏差類型為數(shù)據(jù)條目偏差的情況若NC興0,當(dāng)偏差值小于NS/ (2*NC),則將該請求任務(wù)放到HQ尾部;當(dāng)偏差值介于NS/ (2*NC)與2*NS/NC之間時,將該請求任務(wù)放到MQ尾部;當(dāng)偏差值大于2*NS/NC時,將該請求任務(wù)放到LQ尾部。若NC = 0,則直接將請求任務(wù)放到HQ尾部。然后將數(shù)據(jù)條目偏差任務(wù)計數(shù)器NC自增1,數(shù)據(jù)條目偏差累加器NS與該請求任務(wù)的偏差之和作為新的NS的值。(4. 2)對于偏差類型為數(shù)值偏差的情況若VC Φ 0,當(dāng)偏差值小于VS/ (2*VC),則將該請求任務(wù)放到HQ尾部;當(dāng)偏差值介于VS/ (2*VC)與2*VS/VC之間時,將該請求任務(wù)放到MQ尾部;當(dāng)偏差值大于2*VS/VC時,將該請求任務(wù)放到LQ尾部。若VC = 0,則直接將請求任務(wù)放到HQ尾部。然后將數(shù)據(jù)條目偏差任務(wù)計數(shù)器VC自增1,數(shù)據(jù)條目偏差累加器VS 與該請求任務(wù)的偏差之和作為新的VS的值。(4.3)對于偏差類型為新舊程度偏差的情況若PC興0,當(dāng)偏差值小于PS/ (2*PC),則將該請求任務(wù)放到HQ尾部;當(dāng)偏差值介于PS/(2*PC)與2*PS/PC之間時,將該請求任務(wù)放到MQ尾部;當(dāng)偏差值大于2*PS/PC時,將該請求任務(wù)放到LQ尾部。若PC = 0,則直接將請求任務(wù)放到HQ尾部。然后將新舊程度偏差任務(wù)計數(shù)器PC自增1,新舊程度偏差累加器PS與該請求任務(wù)的偏差之和作為新的PS的值。(5)回退到步驟O),繼續(xù)監(jiān)聽來自客戶端發(fā)來的請求。由線程的特性可知,在同一個進(jìn)程中的不同線程是并發(fā)執(zhí)行的,因此子線程Tl與主線程是同時并發(fā)執(zhí)行任務(wù)的。下面對Tl的工作過程作詳細(xì)闡述。(Al)判斷HQ是否為空,若不為空,則從該隊列頭部獲取一個請求任務(wù),并跳轉(zhuǎn)到步驟(A4);否則轉(zhuǎn)到步驟(A2);(A2)判斷MQ是否為空,若不為空,則從該隊列頭部獲取一個請求任務(wù),并跳轉(zhuǎn)到步驟(A4);否則轉(zhuǎn)到步驟(A3);(A3)判斷LQ是否為空,若不為空,則從該隊列頭部獲取一個請求任務(wù),并跳轉(zhuǎn)到步驟(A4);否則跳回到步驟(Al);(A4)讀取該請求任務(wù)的數(shù)據(jù)操作類型。(A5)讀取該請求任務(wù)的偏差類型,具體為數(shù)據(jù)條目偏差,數(shù)值偏差,新舊程度偏差。并讀取該請求任務(wù)的偏差值。(A5. 1)對于偏差類型為數(shù)據(jù)條目偏差的情況,將數(shù)據(jù)條目偏差計數(shù)器NC自減1, 數(shù)據(jù)條目偏差累加器NS與該任務(wù)的偏差值之差作為新的NS的值。(A5. 2)對于偏差類型為數(shù)值偏差的情況,將數(shù)值偏差計數(shù)器VC自減1,數(shù)值偏差累加器VS與該任務(wù)的偏差值之差作為新的VS的值。(A5. 3)對于偏差類型為新舊程度偏差的情況,將新舊程度偏差計數(shù)器PC自減1, 新舊程度偏差累加器PS與該任務(wù)的偏差值之差作為新的PS值。(A6)將請求交給相應(yīng)的操作類型函數(shù)進(jìn)行處理。并將處理結(jié)果返回給客戶端。對于讀操作而言,返回結(jié)果為一個結(jié)果集;對于寫操作與刪除操作,則返回結(jié)果為是否操作成功。(A7)回退到步驟(Al),繼續(xù)處理隊列中的任務(wù)。
      在線程Tl處理任務(wù)的過程中,會有請求任務(wù)源源不斷地從客戶端發(fā)來,并根據(jù)請求任務(wù)的偏差取值,被主線程放到不同優(yōu)先級的任務(wù)隊列中。因此就會出現(xiàn)以下這種情況 請求任務(wù)的接收速度比處理速度要快,而且大部分的任務(wù)都被放到HQ,那么將會導(dǎo)致HQ中的任務(wù)會越來越多,從而使得MQ與LQ中的任務(wù)始終沒有機(jī)會處理;對于客戶端而言,則表明一個請求發(fā)過去之后,始終沒有得到響應(yīng)。為了避免這種情況產(chǎn)生,則需要引入任務(wù)調(diào)度線程T2與T3。下面對這兩個線程的工作過程作詳細(xì)闡述其中T2線程的工作過程包括以下步驟(Bi)每隔預(yù)先設(shè)定的計時周期ΔΤ1的時間,檢查HQ隊列是否為空,如果為空,則說明HQ中沒有阻塞的任務(wù),并跳轉(zhuǎn)到步驟(B5);否則轉(zhuǎn)到步驟(B2)。這里ΔΤ1的取值和請求的壓力有一定的關(guān)系,如果請求壓力大,則可以選取較小的值;如果請求壓力小,可以選取較大的值。建議的取值范圍為10秒至50秒之間。(B2)檢查MQ隊列是否為空,如果為空,則跳轉(zhuǎn)到步驟(B5);否則,創(chuàng)建一個計數(shù)器 Cl,并初始化為0,然后轉(zhuǎn)到步驟(B3)。(B3)從MQ的頭部獲取一個任務(wù),并交給主線程處理該任務(wù),并將Cl自增1。(B4)如果Cl小于一次調(diào)度過程中處理任務(wù)的最大數(shù)目N,并且MQ不為空,則返回到步驟(B3),否則轉(zhuǎn)到步驟(5)。和ΔΤ1的取值規(guī)則類似,N也受請求的壓力影響,建議的取值范圍為5至20之間。(BO T2當(dāng)前的任務(wù)結(jié)束。T3線程的工作過程包括以下步驟(El)每隔另一個預(yù)先設(shè)定的計時周期ΔΤ2的時間,檢查MQ隊列是否為空,如果為空,則說明MQ中沒有阻塞的任務(wù),并跳轉(zhuǎn)到步驟(E5);否則轉(zhuǎn)到步驟(E2)。一般情況下, ΔΤ2取十倍于Δ Tl的值。(Ε2)檢查LQ隊列是否為空,如果為空,則跳轉(zhuǎn)到步驟(Ε5);否則,創(chuàng)建一個計數(shù)器 C2,并初始化為0,然后跳轉(zhuǎn)到步驟(Ε3)。(Ε3)從LQ的頭部獲得一個任務(wù),并交給主線程處理任務(wù),并將C2自增1。(Ε4)如果C2小于N并且LQ不為空,則返回到步驟(Ε3),否則轉(zhuǎn)到步驟(Ε5)。(EQ Τ3當(dāng)前的任務(wù)結(jié)束。這樣就保證了隊列中所有的任務(wù)都有機(jī)會在有限的時間內(nèi)被處理。本發(fā)明不僅局限于上述具體實施方式
      ,本領(lǐng)域一般技術(shù)人員根據(jù)本發(fā)明公開的內(nèi)容,可以采用其它多種具體實施方式
      實施本發(fā)明,因此,凡是采用本發(fā)明的設(shè)計結(jié)構(gòu)和思路,做一些簡單的變化或更改的設(shè)計,都落入本發(fā)明保護(hù)的范圍。
      權(quán)利要求
      1.一種海量數(shù)據(jù)管理中動態(tài)一致性控制方法,其特征在于,該方法包括以下步驟(1)主線程對環(huán)境做初始化工作,包括以下五個步驟(1.1)創(chuàng)建三個空置隊列,按照創(chuàng)建的先后順序,分別命名為高優(yōu)先級隊列,表示為 HQ ;中優(yōu)先級隊列,表示為MQ ;低優(yōu)先級隊列,表示為LQ ;(1. 2)創(chuàng)建三個變量NS、VS、PS,分別用來保存所有的任務(wù)隊列中所有的任務(wù)的數(shù)據(jù)條目偏差總和,數(shù)值偏差總和以及新舊程度偏差總和,并將初始值均設(shè)為0 ;(1. 3)創(chuàng)建三個計數(shù)器NC、VC、PC,分別用來保存當(dāng)前所有的任務(wù)隊列中關(guān)于數(shù)據(jù)條目偏差的任務(wù)總數(shù),數(shù)值偏差的任務(wù)總數(shù)以及新舊程度偏差的任務(wù)總數(shù),并將初始值均設(shè)為 0 ;(1.4)創(chuàng)建并啟動一個子線程Tl,用于逐個處理三個任務(wù)隊列中的任務(wù); (1. 5)創(chuàng)建并啟動兩個子線程T2和T3,用于定期調(diào)度三個任務(wù)隊列中的任務(wù),避免因較高優(yōu)先級任務(wù)隊列中的任務(wù)長時間擁堵,導(dǎo)致較低優(yōu)先級隊列中的任務(wù)沒有機(jī)會處理的情況發(fā)生;(2)服務(wù)節(jié)點開始監(jiān)聽來自客戶端發(fā)來的讀寫請求;(3)當(dāng)服務(wù)節(jié)點接收到一個來自客戶端發(fā)來的數(shù)據(jù)讀寫請求任務(wù)后,首先讀取該請求任務(wù)的操作類型;(4)讀取該請求任務(wù)的偏差類型,并讀取該請求任務(wù)的偏差值,并將讀取結(jié)果與當(dāng)前的閾值比較后放到相應(yīng)的隊列尾部;(5)回退到步驟O),繼續(xù)監(jiān)聽來自客戶端發(fā)來的請求。
      2.根據(jù)權(quán)利要求1所述的海量數(shù)據(jù)管理中動態(tài)一致性控制方法,其特征在于,子線程 Tl的處理流程如下(Al)判斷HQ是否為空,若不為空,則從該隊列頭部獲取一個請求任務(wù),并跳轉(zhuǎn)到步驟 (A4);否則轉(zhuǎn)到步驟(A2);(A2)判斷MQ是否為空,若不為空,則從該隊列頭部獲取一個請求任務(wù),并跳轉(zhuǎn)到步驟 (A4);否則轉(zhuǎn)到步驟(A3);(A3)判斷LQ是否為空,若不為空,則從該隊列頭部獲取一個請求任務(wù),并跳轉(zhuǎn)到步驟 (A4);否則跳回到步驟(Al);(A4)讀取該請求任務(wù)的數(shù)據(jù)操作類型;(A5)讀取該請求任務(wù)的偏差類型,并讀取該請求任務(wù)的偏差值;(A6)將請求交給相應(yīng)的操作類型函數(shù)進(jìn)行處理;并將處理結(jié)果返回給客戶端;(A7)回退到步驟(Al),繼續(xù)處理隊列中的任務(wù)。
      3.根據(jù)權(quán)利要求2所述的海量數(shù)據(jù)管理中動態(tài)一致性控制方法,其特征在于,步驟(A5)中,對于偏差類型為數(shù)據(jù)條目偏差的情況,將數(shù)據(jù)條目偏差計數(shù)器NC自減1, 數(shù)據(jù)條目偏差累加器NS與該任務(wù)的偏差值之差作為新的NS的值;對于偏差類型為數(shù)值偏差的情況,將數(shù)值偏差計數(shù)器VC自減1,數(shù)值偏差累加器VS與該任務(wù)的偏差值之差作為新的VS的值;對于偏差類型為新舊程度偏差的情況,將新舊程度偏差計數(shù)器PC自減1,新舊程度偏差累加器PS與該任務(wù)的偏差值之差作為新的PS值。
      4.根據(jù)權(quán)利要求1、2或3所述的海量數(shù)據(jù)管理中動態(tài)一致性控制方法,其特征在于,子線程T2的處理步驟為(Bi)每隔一個預(yù)先設(shè)定的計時周期,檢查HQ隊列是否為空,如果為空,則說明HQ中沒有阻塞的任務(wù),并跳轉(zhuǎn)到步驟(B5);否則轉(zhuǎn)到步驟(B2);(B2)檢查MQ隊列是否為空,如果為空,則跳轉(zhuǎn)到步驟(B5);否則,創(chuàng)建一個計數(shù)器Cl, 并初始化為0,然后轉(zhuǎn)到步驟(B3);(B3)從MQ的頭部獲取一個任務(wù),并交給主線程處理該任務(wù),并將Cl自增1 ; (B4)如果Cl小于一次調(diào)度過程中處理任務(wù)的最大數(shù)目、并且MQ不為空,則返回到步驟 (B3),否則進(jìn)入步驟(B5); (B5)當(dāng)前的任務(wù)結(jié)束。
      5.根據(jù)權(quán)利要求1、2或3所述的海量數(shù)據(jù)管理中動態(tài)一致性控制方法,其特征在于,子線程T3的處理步驟為(El)每隔另一個預(yù)先設(shè)定的計時周期,檢查MQ隊列是否為空,如果為空,則說明MQ中沒有阻塞的任務(wù),并跳轉(zhuǎn)到步驟(E5);否則轉(zhuǎn)到步驟(E2);(E2)檢查LQ隊列是否為空,如果為空,則跳轉(zhuǎn)到步驟(E5);否則,創(chuàng)建一個計數(shù)器C2, 并初始化為0,然后跳轉(zhuǎn)到步驟(E3);(E3)從LQ的頭部獲得一個任務(wù),并交給主線程處理任務(wù),并將C2自增1 ; (E4)如果C2小于一次調(diào)度過程中處理任務(wù)的最大數(shù)目、并且LQ不為空,則返回到步驟 (E3),否則轉(zhuǎn)到步驟(E5); (E5)T3當(dāng)前的任務(wù)結(jié)束。
      6.根據(jù)權(quán)利要求1、2或3所述的海量數(shù)據(jù)管理中動態(tài)一致性控制方法,其特征在于,步驟(4)按下述流程進(jìn)行處理(4. 1)對于偏差類型為數(shù)據(jù)條目偏差的情況若NC Φ 0,當(dāng)偏差值小于NS/(2*NC),則將該請求任務(wù)放到HQ尾部;當(dāng)偏差值介于NS/(2*NC)與2*NS/NC之間時,將該請求任務(wù)放到MQ尾部;當(dāng)偏差值大于2*NS/NC時,將該請求任務(wù)放到LQ尾部;若NC = 0,則直接將請求任務(wù)放到HQ尾部;然后將數(shù)據(jù)條目偏差任務(wù)計數(shù)器NC自增1,數(shù)據(jù)條目偏差累加器NS與該請求任務(wù)的偏差之和作為新的NS的值;(4. 2)對于偏差類型為數(shù)值偏差的情況若VC Φ 0,當(dāng)偏差值小于VS/ (2*VC),則將該請求任務(wù)放到HQ尾部;當(dāng)偏差值介于VS/ (2*VC)與2*VS/VC之間時,將該請求任務(wù)放到MQ 尾部;當(dāng)偏差值大于2*VS/VC時,將該請求任務(wù)放到LQ尾部;若VC = 0,則直接將請求任務(wù)放到HQ尾部;然后將數(shù)據(jù)條目偏差任務(wù)計數(shù)器VC自增1,數(shù)據(jù)條目偏差累加器VS與該請求任務(wù)的偏差之和作為新的VS的值;(4. 3)對于偏差類型為新舊程度偏差的情況若PC Φ 0,當(dāng)偏差值小于PSA2*PC),則將該請求任務(wù)放到HQ尾部;當(dāng)偏差值介于PSA2*PC)與2*PS/PC之間時,將該請求任務(wù)放到MQ尾部;當(dāng)偏差值大于2*PS/PC時,將該請求任務(wù)放到LQ尾部;若PC = 0,則直接將請求任務(wù)放到HQ尾部;然后將新舊程度偏差任務(wù)計數(shù)器PC自增1,新舊程度偏差累加器PS與該請求任務(wù)的偏差之和作為新的PS的值。
      全文摘要
      本發(fā)明公開了一種海量數(shù)據(jù)環(huán)境下動態(tài)的一致性控制方法,步驟為①主線程對環(huán)境做初始化工作;②服務(wù)節(jié)點開始監(jiān)聽來自客戶端發(fā)來的讀寫請求;③當(dāng)服務(wù)節(jié)點接收到一個來自客戶端發(fā)來的數(shù)據(jù)讀寫請求任務(wù)后,首先讀取該請求任務(wù)的操作類型;④讀取該請求任務(wù)的偏差類型,并讀取該請求任務(wù)的偏差值,并將讀取結(jié)果與當(dāng)前的閾值比較后放到相應(yīng)的隊列尾部;⑤回退到②,繼續(xù)監(jiān)聽來自客戶端發(fā)來的請求。本發(fā)明可以克服不同的應(yīng)用由于其業(yè)務(wù)數(shù)據(jù)對于一致性要求的差異性而不能使用現(xiàn)成的鍵值型數(shù)據(jù)庫的困難。使得用戶只需要關(guān)心所操作的數(shù)據(jù)對于一致性的指標(biāo)及其取值,而完全不需要花大量的精力重新開發(fā)一套只能滿足自己業(yè)務(wù)需求的鍵值型數(shù)據(jù)庫。
      文檔編號G06F17/30GK102521265SQ20111037194
      公開日2012年6月27日 申請日期2011年11月21日 優(yōu)先權(quán)日2011年11月21日
      發(fā)明者岑文峰, 柯西江, 謝夏, 金海 申請人:華中科技大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1