一種數(shù)據(jù)讀取方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)庫處理技術(shù)領(lǐng)域,更具體的說,尤其涉及一種數(shù)據(jù)讀取方法及裝置。
【背景技術(shù)】
[0002]Couchbase Server簡稱為Couchbase,其作為一個服務(wù)器集群,形成了一個集群化的、基于文檔的數(shù)據(jù)庫系統(tǒng),通常情況下,Couchbase將大部分數(shù)據(jù)都存儲在RAM(Random-Access Memory,隨機存取存儲器)中,并使用一個緩存層來為電子設(shè)備中的各項進程提供較快的數(shù)據(jù)訪問。其中緩存層是服務(wù)器集群中的多個服務(wù)器或一個服務(wù)器的緩存層,這樣在使用Couchbase時可以按照實際需求擴大或者緊縮服務(wù)器集群,以便于利用更多的RAM來提升系統(tǒng)性能。
[0003]但是在使用Couchbase時,由于其內(nèi)存儲的鍵(key)的值(value)比較大,因此會導(dǎo)致Couchbase對網(wǎng)絡(luò)要求較高,一旦網(wǎng)絡(luò)異常就會引起數(shù)據(jù)讀取的超時。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明的目的在于提供一種數(shù)據(jù)讀取方法及裝置,用于降低對某一種服務(wù)器的依賴,從而降低某一種服務(wù)器異常時數(shù)據(jù)讀取異常情況的發(fā)生。技術(shù)方案如下:
[0005]本發(fā)明提供一種數(shù)據(jù)讀取方法,應(yīng)用于第一服務(wù)器中,所述方法包括:
[0006]接收數(shù)據(jù)讀取請求,其中所述數(shù)據(jù)讀取請求中攜帶有至少一個鍵,所述鍵用于指示所述數(shù)據(jù)讀取請求所要請求的數(shù)據(jù);
[0007]依據(jù)所述數(shù)據(jù)讀取請求,判斷所述第一服務(wù)器中是否命中所述鍵對應(yīng)的值,所述值為所述數(shù)據(jù)讀取請求所要請求的數(shù)據(jù),且每個鍵所對應(yīng)的值分別具有第一有效時間,所述第一服務(wù)器具有第二有效時間,所述第一有效時間小于等于所述第二有效時間,所述第一有效時間用于指示所述鍵所對應(yīng)的值在所述第一服務(wù)器中的存儲時長,第二有效時間用于指示所述第一服務(wù)器中存儲的所述鍵對應(yīng)的值的最大存儲時長;
[0008]當所述第一服務(wù)器命中所述鍵對應(yīng)的值時,返回所述鍵對應(yīng)的值;
[0009]當所述第一服務(wù)器未命中所述鍵對應(yīng)的值時,向第二服務(wù)器轉(zhuǎn)發(fā)所述數(shù)據(jù)讀取請求,用于觸發(fā)所述第二服務(wù)器返回所述數(shù)據(jù)讀取請求中攜帶的所述鍵對應(yīng)的值;
[0010]其中所述第一有效時間依據(jù)所述第二服務(wù)器的情況動態(tài)調(diào)整。
[0011]優(yōu)選的,所述第一有效時間依據(jù)所述第二服務(wù)器的情況動態(tài)調(diào)整包括:在所述第二服務(wù)器異常的情況下,依據(jù)所述第二服務(wù)器查找到所述鍵對應(yīng)的值的情況,提高所述第一有效時間,其中調(diào)整后的第一有效時間小于等于所述第二有效時間;
[0012]在所述第二服務(wù)器正常的情況下,將所述第一有效時間逐漸恢復(fù)至所述第一有效時間的初始值。
[0013]優(yōu)選的,所述方法還包括:在所述第二服務(wù)器中存儲有所述鍵對應(yīng)的值的情況下,寫入所述第二服務(wù)器發(fā)送的所述鍵對應(yīng)的值,并將寫入所述鍵對應(yīng)的值的時間確定為所述值的第一有效時間。
[0014]優(yōu)選的,所述判斷所述第一服務(wù)器中是否命中所述鍵對應(yīng)的值包括以下任意一種方式:
[0015]判斷所述第一服務(wù)器中是否有所述鍵對應(yīng)的值;
[0016]當所述第一服務(wù)器中有所述鍵對應(yīng)的值時,判斷所述鍵對應(yīng)的值的第一有效時間與當前時間的差值是否大于預(yù)設(shè)時間差;
[0017]當所述第一服務(wù)器中有所述鍵對應(yīng)的值時,判斷所述鍵對應(yīng)的值的讀取是否異常;
[0018]當所述第一服務(wù)器中有所述鍵對應(yīng)的值時,判斷所述鍵對應(yīng)的值的第一有效時間的類型轉(zhuǎn)換是否正確。
[0019]優(yōu)選的,所述第一有效時間記錄在所述鍵對應(yīng)的值后,且所述第一有效時間和所述鍵對應(yīng)的值間間隔一空格。
[0020]本發(fā)明還提供一種數(shù)據(jù)讀取裝置,應(yīng)用于第一服務(wù)器中,所述裝置包括:
[0021]接收單元,用于接收數(shù)據(jù)讀取請求,其中所述數(shù)據(jù)讀取請求中攜帶有至少一個鍵,所述鍵用于指示所述數(shù)據(jù)讀取請求所要請求的數(shù)據(jù);
[0022]判斷單元,用于依據(jù)所述數(shù)據(jù)讀取請求,判斷所述第一服務(wù)器中是否命中所述鍵對應(yīng)的值,所述值為所述數(shù)據(jù)讀取請求所要請求的數(shù)據(jù),且每個鍵所對應(yīng)的值分別具有第一有效時間,所述第一服務(wù)器具有第二有效時間,所述第一有效時間小于等于所述第二有效時間,所述第一有效時間用于指示所述鍵所對應(yīng)的值在所述第一服務(wù)器中的存儲時長,第二有效時間用于指示所述第一服務(wù)器中存儲的所述鍵對應(yīng)的值的最大存儲時長;
[0023]返回單元,用于當所述第一服務(wù)器命中所述鍵對應(yīng)的值時,返回所述鍵對應(yīng)的值;
[0024]轉(zhuǎn)發(fā)單元,用于當所述第一服務(wù)器未命中所述鍵對應(yīng)的值時,向第二服務(wù)器轉(zhuǎn)發(fā)所述數(shù)據(jù)讀取請求,用于觸發(fā)所述第二服務(wù)器返回所述數(shù)據(jù)讀取請求中攜帶的所述鍵對應(yīng)的值;
[0025]其中所述第一有效時間依據(jù)所述第二服務(wù)器的情況動態(tài)調(diào)整。
[0026]優(yōu)選的,所述裝置還包括:調(diào)整單元,用于在所述第二服務(wù)器異常的情況下,依據(jù)所述第二服務(wù)器查找到所述鍵對應(yīng)的值的情況,提高所述第一有效時間,其中調(diào)整后的第一有效時間小于等于所述第二有效時間,以及用于在所述第二服務(wù)器正常的情況下,將所述第一有效時間逐漸恢復(fù)至所述第一有效時間的初始值。
[0027]優(yōu)選的,所述裝置還包括:寫入單元,用于在所述第二服務(wù)器中存儲有所述鍵對應(yīng)的值的情況下,寫入所述第二服務(wù)器發(fā)送的所述鍵對應(yīng)的值,并將寫入所述鍵對應(yīng)的值的時間確定為所述值的第一有效時間。
[0028]優(yōu)選的,所述判斷單元通過以下任意一種方式判斷所述第一服務(wù)器中是否命中所述鍵對應(yīng)的值:
[0029]判斷所述第一服務(wù)器中是否有所述鍵對應(yīng)的值;
[0030]當所述第一服務(wù)器中有所述鍵對應(yīng)的值時,判斷所述鍵對應(yīng)的值的第一有效時間與當前時間的差值是否大于預(yù)設(shè)時間差;
[0031]當所述第一服務(wù)器中有所述鍵對應(yīng)的值時,判斷所述鍵對應(yīng)的值的讀取是否異常;
[0032]當所述第一服務(wù)器中有所述鍵對應(yīng)的值時,判斷所述鍵對應(yīng)的值的第一有效時間的類型轉(zhuǎn)換是否正確。
[0033]優(yōu)選的,所述第一有效時間記錄在所述鍵對應(yīng)的值后,且所述第一有效時間和所述鍵對應(yīng)的值間間隔一空格。
[0034]與現(xiàn)有技術(shù)相比,本發(fā)明提供的上述技術(shù)方案具有如下優(yōu)點:
[0035]本發(fā)明提供的上述技術(shù)方案,第一服務(wù)器中每個鍵對應(yīng)的值的第一有效時間依據(jù)第二服務(wù)器的情況進行動態(tài)調(diào)整,例如可以在第二服務(wù)器異常的情況下提高第一有效時間,在第二服務(wù)器正常的情況下,將第一有效時間逐漸恢復(fù)至初始值。即在第二服務(wù)器異常的情況下提高第一服務(wù)器中每個鍵對應(yīng)的值的存儲時長,這樣在第二服務(wù)器異常的情況下,仍可以從第一服務(wù)器中讀取每個鍵對應(yīng)的值,以降低對第二服務(wù)器的依賴,從而降低第二服務(wù)器異常時數(shù)據(jù)讀取異常情況的發(fā)生。在第二服務(wù)器正常的情況下逐漸將第一有效時間恢復(fù)至初始值,使第一服務(wù)器中每個鍵對應(yīng)的值的存儲時長逐漸降低,這樣當?shù)诙?wù)器中的某個鍵對應(yīng)的值發(fā)生變更時,第一服務(wù)器中某個鍵對應(yīng)的值可以在盡可能短的時間內(nèi)變更為與第二服務(wù)器中相同鍵對應(yīng)的值,從而在盡可能短的時間內(nèi)實現(xiàn)第一服務(wù)器和第二服務(wù)器內(nèi)的數(shù)據(jù)同步。
【附圖說明】
[0036]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0037]圖1是本發(fā)明實施例提供的數(shù)據(jù)讀取方法的一種流程圖;
[0038]圖2是本發(fā)明實施例提供的數(shù)據(jù)讀取方法的另一種流程圖;
[0039]圖3是本發(fā)明實施例提供的數(shù)據(jù)讀取裝置的一種結(jié)構(gòu)示意圖;
[0040]圖4是本發(fā)明實施例提供的數(shù)據(jù)讀取裝置的另一種結(jié)構(gòu)示意圖;
[0041]圖5是本發(fā)明實施例提供的數(shù)據(jù)讀取裝置的再一種結(jié)構(gòu)示意圖。
【具體實施方式】
[0042]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0043]請參閱圖1,其示出了本發(fā)明實施例提供的數(shù)據(jù)讀取方法的一種流程圖,其應(yīng)用于第一服務(wù)器中,可以包括以下步驟:
[0044]101:接收數(shù)據(jù)讀取請求,其中數(shù)據(jù)讀取請求中攜帶有至少一個鍵,鍵用于指示數(shù)據(jù)讀取請求所要請求的數(shù)據(jù)??梢岳斫獾氖?數(shù)據(jù)讀取請求是由客戶端上的任一進程運行時發(fā)送的請求,比如客戶端上運行的某個搜索進程,用戶在搜索進