欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)管理方法及裝置與流程

文檔序號(hào):11519807閱讀:153來源:國知局
數(shù)據(jù)管理方法及裝置與流程

本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)管理方法及裝置。



背景技術(shù):

在分布式系統(tǒng)中通常設(shè)置有持久的數(shù)據(jù)庫(例如關(guān)系型數(shù)據(jù)庫)和緩存,數(shù)據(jù)庫和緩存中具有相同的數(shù)據(jù),數(shù)據(jù)庫用于安全持久的存儲(chǔ)數(shù)據(jù),緩存用于快速向客戶端提供數(shù)據(jù)。

在實(shí)際應(yīng)用過程中,當(dāng)客戶端向分布式系統(tǒng)發(fā)送數(shù)據(jù)獲取請(qǐng)求時(shí),分布式系統(tǒng)先判斷緩存中是否存在客戶端需要的數(shù)據(jù),若存在,則在緩存中獲取數(shù)據(jù),并向客戶端反饋獲取的數(shù)據(jù),若不存在,則分布式系統(tǒng)在數(shù)據(jù)庫中獲取數(shù)據(jù),將分布式系統(tǒng)中的數(shù)據(jù)寫入緩存,并向客戶端反饋獲取的數(shù)據(jù)。然而,在實(shí)際應(yīng)用過程中,當(dāng)緩存中不存在客戶端需要的數(shù)據(jù)、且大量客戶端同時(shí)請(qǐng)求該數(shù)據(jù)時(shí),則分布式系統(tǒng)根據(jù)大量的數(shù)據(jù)獲取請(qǐng)求,同時(shí)在數(shù)據(jù)庫中讀取數(shù)據(jù),進(jìn)而導(dǎo)致數(shù)據(jù)庫崩潰,由此可知,上述數(shù)據(jù)管理方法的可靠性較差。



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

本發(fā)明實(shí)施例提供一種數(shù)據(jù)管理方法及裝置,提高了數(shù)據(jù)管理的可靠性。

第一方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)管理方法,包括:

接收客戶端發(fā)送的數(shù)據(jù)獲取請(qǐng)求,所述數(shù)據(jù)獲取請(qǐng)求中包括目標(biāo)數(shù)據(jù)的標(biāo)識(shí);

根據(jù)所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí),判斷緩存中是否存在有效截止時(shí)刻在當(dāng)前時(shí)刻之后的所述目標(biāo)數(shù)據(jù);

若是,在所述緩存中獲取所述目標(biāo)數(shù)據(jù),并向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù);

若否,判斷所述目標(biāo)數(shù)據(jù)是否正在從數(shù)據(jù)庫向所述緩存中同步,若是,則在第一預(yù)設(shè)時(shí)長之后,在所述緩存中獲取所述目標(biāo)數(shù)據(jù),并向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù);若否,則在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)存儲(chǔ)至所述緩存,并向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù)。

在一種可能的實(shí)施方式中,判斷所述目標(biāo)數(shù)據(jù)是否正在從數(shù)據(jù)庫向所述緩存中同步,包括:

獲取所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的更新標(biāo)志,所述更新標(biāo)志用于指示所述目標(biāo)數(shù)據(jù)是否正在更新;

根據(jù)所述更新標(biāo)志,判斷所述目標(biāo)數(shù)據(jù)是否正在從所述數(shù)據(jù)庫向所述緩存中同步。

在另一種可能的實(shí)施方式中,在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù),包括:

確定所述數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的多個(gè)并發(fā)數(shù)據(jù)獲取請(qǐng)求,其中,接收到所述并發(fā)數(shù)據(jù)獲取請(qǐng)求的時(shí)刻與接收到所述數(shù)據(jù)獲取請(qǐng)求的時(shí)刻相同;

分別獲取所述數(shù)據(jù)獲取請(qǐng)求和各所述并發(fā)數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的請(qǐng)求線程;

在所述多個(gè)請(qǐng)求線程中確定處理線程,并通過所述處理線程在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)。

在另一種可能的實(shí)施方式中,所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)中包括所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的業(yè)務(wù)信息和參數(shù)信息,相應(yīng)的,通過所述處理線程在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù),包括:

根據(jù)所述目標(biāo)數(shù)據(jù)的業(yè)務(wù)信息,確定所述業(yè)務(wù)信息對(duì)應(yīng)的業(yè)務(wù)接口;

獲取所述業(yè)務(wù)接口對(duì)應(yīng)的業(yè)務(wù)統(tǒng)一資源定位符url地址前綴;

根據(jù)所述業(yè)務(wù)url地址前綴和所述參數(shù)信息,確定目標(biāo)url地址;

根據(jù)所述目標(biāo)url地址,通過所述處理線程在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)。

在另一種可能的實(shí)施方式中,通過所述處理線程在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)之后,還包括:

將所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的更新標(biāo)志設(shè)置為更新狀態(tài),所述更新狀態(tài)用于指示所述目標(biāo)數(shù)據(jù)正在從所述數(shù)據(jù)庫向所述緩存中同步。

在另一種可能的實(shí)施方式中,在所述緩存中獲取所述目標(biāo)數(shù)據(jù)之后,還包括:

獲取所述目標(biāo)數(shù)據(jù)的剩余有效時(shí)長;

判斷所述目標(biāo)數(shù)據(jù)的剩余有效時(shí)長是否小于第二預(yù)設(shè)時(shí)長;

若是,則在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的最新數(shù)據(jù),并通過所述最新數(shù)據(jù)更新所述目標(biāo)數(shù)據(jù)。

第二方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)管理裝置,包括接收模塊、判斷模塊、第一獲取模塊、發(fā)送模塊、第二獲取模塊及存儲(chǔ)模塊,其中,

所述接收模塊用于,接收客戶端發(fā)送的數(shù)據(jù)獲取請(qǐng)求,所述數(shù)據(jù)獲取請(qǐng)求中包括目標(biāo)數(shù)據(jù)的標(biāo)識(shí);

所述判斷模塊用于,根據(jù)所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí),判斷緩存中是否存在有效截止時(shí)刻在當(dāng)前時(shí)刻之后的目標(biāo)數(shù)據(jù);

在所述判斷模塊判斷緩存中存在有效的所述目標(biāo)數(shù)據(jù)時(shí),所述第一獲取模塊用于,在所述緩存中獲取所述目標(biāo)數(shù)據(jù),所述發(fā)送模塊用于,向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù);

在所述判斷模塊判斷緩存中不存在有效的所述目標(biāo)數(shù)據(jù)時(shí),所述判斷模塊還用于,判斷所述目標(biāo)數(shù)據(jù)是否正在從數(shù)據(jù)庫向所述緩存中同步,在所述判斷模塊判斷所述目標(biāo)數(shù)據(jù)正在從數(shù)據(jù)庫向所述緩存中同步時(shí),所述第一獲取模塊還用于,在第一預(yù)設(shè)時(shí)長之后,在所述緩存中獲取所述目標(biāo)數(shù)據(jù),所述發(fā)送模塊還用于,向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù);在所述判斷模塊判斷所述目標(biāo)數(shù)據(jù)未正在從數(shù)據(jù)庫向所述緩存中同步時(shí),所述第二獲取模塊用于,在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù),所述存儲(chǔ)模塊用于,將所述目標(biāo)數(shù)據(jù)存儲(chǔ)至所述緩存,所述發(fā)送模塊還用于,向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù)。

在一種可能的實(shí)施方式中,所述判斷模塊具體用于:

獲取所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的更新標(biāo)志,所述更新標(biāo)志用于指示所述目標(biāo)數(shù)據(jù)是否正在更新;

根據(jù)所述更新標(biāo)志,判斷所述目標(biāo)數(shù)據(jù)是否正在從所述數(shù)據(jù)庫向所述緩存中同步。

在另一種可能的實(shí)施方式中,所述第二獲取模塊包括確定單元、第一獲取單元和第二獲取單元,其中,

所述確定單元用于,確定所述數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的多個(gè)并發(fā)數(shù)據(jù)獲取請(qǐng)求,其中,接收到所述并發(fā)數(shù)據(jù)獲取請(qǐng)求的時(shí)刻與接收到所述數(shù)據(jù)獲取請(qǐng)求的時(shí)刻相同;

所述第一獲取單元用于,分別獲取所述數(shù)據(jù)獲取請(qǐng)求和各所述并發(fā)數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的請(qǐng)求線程;

所述第二獲取單元用于,在所述多個(gè)請(qǐng)求線程中確定處理線程,并通過所述處理線程在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)。

在另一種可能的實(shí)施方式中,所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)中包括所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的業(yè)務(wù)信息和參數(shù)信息,相應(yīng)的,所述第二獲取單元具體用于:

根據(jù)所述目標(biāo)數(shù)據(jù)的業(yè)務(wù)信息,確定所述業(yè)務(wù)信息對(duì)應(yīng)的業(yè)務(wù)接口;

獲取所述業(yè)務(wù)接口對(duì)應(yīng)的業(yè)務(wù)統(tǒng)一資源定位符url地址前綴;

根據(jù)所述業(yè)務(wù)url地址前綴和所述參數(shù)信息,確定目標(biāo)url地址;

根據(jù)所述目標(biāo)url地址,通過所述處理線程在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)。

在另一種可能的實(shí)施方式中,所述裝置還包括設(shè)置模塊,其中,

所述設(shè)置模塊用于,在所述第二獲取單元通過所述處理線程在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)之后,將所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的更新標(biāo)志設(shè)置為更新狀態(tài),所述更新狀態(tài)用于指示所述目標(biāo)數(shù)據(jù)正在從所述數(shù)據(jù)庫向所述緩存中同步。

在另一種可能的實(shí)施方式中,所述裝置還包括第三獲取模塊、第四獲取模塊和更新模塊,其中,在所述第一獲取模塊在所述緩存中獲取所述目標(biāo)數(shù)據(jù)之后,

所述第三獲取模塊用于,獲取所述目標(biāo)數(shù)據(jù)的剩余有效時(shí)長;

所述判斷模塊還用于,判斷所述目標(biāo)數(shù)據(jù)的剩余有效時(shí)長是否小于第二預(yù)設(shè)時(shí)長;

所述第四獲取模塊用于,在所述判斷模塊判斷所述目標(biāo)數(shù)據(jù)的剩余有效時(shí)長小于第二預(yù)設(shè)時(shí)長時(shí),在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的最新數(shù)據(jù);

所述更新模塊用于,通過所述最新數(shù)據(jù)更新所述目標(biāo)數(shù)據(jù)。

本發(fā)明實(shí)施例提供的數(shù)據(jù)管理方法及裝置,在接收到客戶端發(fā)送的數(shù)據(jù)獲取請(qǐng)求之后,若判斷緩存中存在有效的目標(biāo)數(shù)據(jù),則在緩存中獲取目標(biāo)數(shù)據(jù),并向客戶端發(fā)送該目標(biāo)數(shù)據(jù),若判斷緩存中不存在有效的目標(biāo)數(shù)據(jù),則進(jìn)一步判斷目標(biāo)數(shù)據(jù)是否正在從數(shù)據(jù)庫向緩存中同步,若是,則等待第一預(yù)設(shè)時(shí)長,在第一預(yù)設(shè)時(shí)長之后,目標(biāo)數(shù)據(jù)已同步至緩存中,并在緩存中獲取目標(biāo)數(shù)據(jù)即可,若否,則再從數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù),將目標(biāo)數(shù)據(jù)存儲(chǔ)至緩存,并向客戶端發(fā)送目標(biāo)數(shù)據(jù)。在上述過程中,在確定緩存中不包括客戶端請(qǐng)求的數(shù)據(jù)時(shí),不會(huì)直接向數(shù)據(jù)庫請(qǐng)求獲取目標(biāo)數(shù)據(jù),而是進(jìn)一步判斷目標(biāo)數(shù)據(jù)是否正在從數(shù)據(jù)庫向緩存同步,若是,則無需向數(shù)據(jù)庫請(qǐng)求獲取目標(biāo)數(shù)據(jù),在等待第一預(yù)設(shè)時(shí)長之后,即可在緩存中獲取目標(biāo)數(shù)據(jù),減少了對(duì)數(shù)據(jù)庫的訪問次數(shù),這樣,可以有效避免向數(shù)據(jù)庫發(fā)送大量的數(shù)據(jù)獲取請(qǐng)求,避免了數(shù)據(jù)庫崩潰,進(jìn)而提高數(shù)據(jù)管理的可靠性。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明實(shí)施例提供的數(shù)據(jù)管理方法的應(yīng)用場景示意圖;

圖2為本發(fā)明實(shí)施例提供的數(shù)據(jù)管理方法的流程示意圖;

圖3為本發(fā)明實(shí)施例提供的獲取目標(biāo)數(shù)據(jù)方法的流程示意圖;

圖4為本發(fā)明實(shí)施例提供的數(shù)據(jù)管理裝置的結(jié)構(gòu)示意圖一;

圖5為本發(fā)明實(shí)施例提供的數(shù)據(jù)管理裝置的結(jié)構(gòu)示意圖二。

具體實(shí)施方式

為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

圖1為本發(fā)明實(shí)施例提供的數(shù)據(jù)管理方法的應(yīng)用場景示意圖。請(qǐng)參見圖1,包括多個(gè)客戶端(分別記為101-1至101-n)和分布式系統(tǒng)102,分布式系統(tǒng)102中包括數(shù)據(jù)庫102-1、緩存102-2和數(shù)據(jù)管理裝置102-3。當(dāng)客戶端需要在分布式系統(tǒng)102中獲取數(shù)據(jù)時(shí),向數(shù)據(jù)管理裝置102-3發(fā)送數(shù)據(jù)獲取請(qǐng)求,由數(shù)據(jù)管理裝置102-3在數(shù)據(jù)庫102-1或者緩存102-2中獲取數(shù)據(jù),并向客戶端反饋獲取得到的數(shù)據(jù)。數(shù)據(jù)管理裝置102-3還可以根據(jù)實(shí)際情況將數(shù)據(jù)庫102-1中的數(shù)據(jù)同步至緩存102-2中。

在本申請(qǐng)中,在數(shù)據(jù)管理裝置接收到客戶端發(fā)送的數(shù)據(jù)獲取請(qǐng)求之后,若緩存中不包括客戶端請(qǐng)求的數(shù)據(jù),則數(shù)據(jù)管理裝置先判斷客戶端請(qǐng)求的數(shù)據(jù)是否正在從數(shù)據(jù)庫向緩存中同步,若是,則數(shù)據(jù)管理裝置在等待第一預(yù)設(shè)時(shí)長之后,再去緩存中獲取數(shù)據(jù)并向客戶端反饋,這樣,可以有效避免數(shù)據(jù)管理裝置向數(shù)據(jù)庫發(fā)送大量的數(shù)據(jù)獲取請(qǐng)求,避免了數(shù)據(jù)庫崩潰,進(jìn)而提高數(shù)據(jù)管理的可靠性。

下面,通過具體實(shí)施例,對(duì)本申請(qǐng)所示的技術(shù)方案進(jìn)行詳細(xì)說明。需要說明的是,下面幾個(gè)具體實(shí)施例可以相互結(jié)合,對(duì)于相同或相似的內(nèi)容,在不同的實(shí)施例中不再進(jìn)行贅述。

圖2為本發(fā)明實(shí)施例提供的數(shù)據(jù)管理方法的流程示意圖。請(qǐng)參見圖2,該方法可以包括:

s201、接收客戶端發(fā)送的數(shù)據(jù)獲取請(qǐng)求,數(shù)據(jù)獲取請(qǐng)求中包括目標(biāo)數(shù)據(jù)的標(biāo)識(shí)。

本發(fā)明實(shí)施例的執(zhí)行主體為數(shù)據(jù)管理裝置,該數(shù)據(jù)管理裝置可以設(shè)置在分布式系統(tǒng)中。可選的,該數(shù)據(jù)管理裝置可以通過軟件和/或硬件實(shí)現(xiàn)。

當(dāng)客戶端需要在分布式系統(tǒng)中獲取目標(biāo)數(shù)據(jù)時(shí),客戶端分布式系統(tǒng)中的數(shù)據(jù)管理裝置發(fā)送數(shù)據(jù)獲取請(qǐng)求,并在數(shù)據(jù)獲取請(qǐng)求中攜帶目標(biāo)數(shù)據(jù)的標(biāo)識(shí)??蛇x的,目標(biāo)數(shù)據(jù)的標(biāo)識(shí)可以通過目標(biāo)數(shù)據(jù)所屬的應(yīng)用程序、所屬的業(yè)務(wù)、及對(duì)應(yīng)的參數(shù)信息表示。

例如,假設(shè)客戶端需要獲取的目標(biāo)數(shù)據(jù)為應(yīng)用程序1的業(yè)務(wù)1中的商品標(biāo)識(shí)為1商品的數(shù)據(jù),則目標(biāo)數(shù)據(jù)的標(biāo)識(shí)可以為:應(yīng)用程序1:業(yè)務(wù)1|商品:1。

例如,假設(shè)客戶端需要獲取的目標(biāo)數(shù)據(jù)為應(yīng)用程序shoppingportal中的detail業(yè)務(wù)中的goodsid=1的商品的數(shù)據(jù),則目標(biāo)數(shù)據(jù)的標(biāo)識(shí)可以為:shoppingportal:detail|goodsid:1。

需要說明的是,目標(biāo)數(shù)據(jù)的標(biāo)識(shí)還可以通過其它信息表示,本發(fā)明實(shí)施例對(duì)此不作具體限定。

s202、根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí),判斷緩存中是否存在有效截止時(shí)刻在當(dāng)前時(shí)刻之后的目標(biāo)數(shù)據(jù)。

若是,則執(zhí)行s203。

若否,則執(zhí)行s204-s206。

在實(shí)際應(yīng)用過程中,由于緩存中的數(shù)據(jù)通常需要進(jìn)行周期性更新的,因此,緩存中的數(shù)據(jù)為通常設(shè)置有有效截止時(shí)刻,若當(dāng)前時(shí)刻在有效截止時(shí)刻之前,則該數(shù)據(jù)為有效的數(shù)據(jù),否則,該數(shù)據(jù)為無效的數(shù)據(jù)。

可選的,可以先根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí),判斷緩存中是否存在目標(biāo)數(shù)據(jù),若是,則再判斷緩存中的目標(biāo)數(shù)據(jù)的有效截止時(shí)刻是否在當(dāng)前時(shí)刻之后。

在緩存中,數(shù)據(jù)通常以key-value的形式存儲(chǔ),相應(yīng)的,在根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)判斷緩存中是否存在目標(biāo)數(shù)據(jù)時(shí),可以先根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí),確定目標(biāo)數(shù)據(jù)對(duì)應(yīng)的key,然后根據(jù)目標(biāo)數(shù)據(jù)對(duì)應(yīng)的key在緩存中判斷是否存在目標(biāo)數(shù)據(jù)。

可選的,目標(biāo)數(shù)據(jù)對(duì)應(yīng)的key通??梢园ㄌ厥馇熬Y(用于指示當(dāng)前緩存為主緩存還是備緩存)、目標(biāo)數(shù)據(jù)所屬的應(yīng)用程序、所屬的業(yè)務(wù)、及對(duì)應(yīng)的參數(shù)信息表示。相應(yīng)的,當(dāng)需要根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)確定目標(biāo)數(shù)據(jù)對(duì)應(yīng)的key時(shí),只需在目標(biāo)數(shù)據(jù)的標(biāo)識(shí)前邊加上緩存對(duì)應(yīng)的特殊前綴即可。例如,假設(shè)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)為shoppingportal:detail|goodsid:1,目標(biāo)數(shù)據(jù)在緩存中的key為main|shoppingportal:detail|goodsid:1,當(dāng)需要根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)確定目標(biāo)數(shù)據(jù)對(duì)應(yīng)的key時(shí),只需在shoppingportal:detail|goodsid:1之前加main即可。

s203、在緩存中獲取目標(biāo)數(shù)據(jù),并向客戶端發(fā)送目標(biāo)數(shù)據(jù)。

在確定緩存中存在有效的目標(biāo)數(shù)據(jù)時(shí),根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí),確定目標(biāo)數(shù)據(jù)在緩存中的key,并根據(jù)目標(biāo)數(shù)據(jù)在緩存中的key,在緩存中獲取目標(biāo)數(shù)據(jù),并向客戶端發(fā)送目標(biāo)數(shù)據(jù)。

s204、判斷目標(biāo)數(shù)據(jù)是否正在從數(shù)據(jù)庫向緩存中同步。

若是,則執(zhí)行s205。

若否,則執(zhí)行s206。

在本發(fā)明實(shí)施例中,每一個(gè)數(shù)據(jù)的value中可以包括更新標(biāo)志,在正常情況下,數(shù)據(jù)的更新標(biāo)志為未更新狀態(tài),當(dāng)需要從數(shù)據(jù)庫中向緩存中同步該數(shù)據(jù)時(shí),可以將該數(shù)據(jù)的更新標(biāo)志設(shè)置為更新狀態(tài),在將數(shù)據(jù)從數(shù)據(jù)庫中同步至緩存中之后,將數(shù)據(jù)的更新標(biāo)識(shí)設(shè)置為未更新狀態(tài)。相應(yīng)的,可以根據(jù)目標(biāo)數(shù)據(jù)的更新標(biāo)志,判斷目標(biāo)數(shù)據(jù)是否正在從數(shù)據(jù)庫向緩存中同步。

例如,更新標(biāo)志可以為refreshflag,當(dāng)數(shù)據(jù)的refreshflag為0時(shí),說明數(shù)據(jù)沒有正在從數(shù)據(jù)庫向緩存中同步,當(dāng)數(shù)據(jù)的refreshflag為1時(shí),說明數(shù)據(jù)正在從數(shù)據(jù)庫向緩存中同步。

需要說明的是,數(shù)據(jù)的value中還可以包括其它信息,例如,有效期截止時(shí)間戳expiredtime、最近更新時(shí)間戳beginrefreshingtime、可用標(biāo)志availableflag、強(qiáng)制更新標(biāo)志forceflushtime、驗(yàn)證碼標(biāo)志identifyingcode、實(shí)際內(nèi)容更新時(shí)間contentupdatetime、實(shí)際存儲(chǔ)的內(nèi)容staticcontent等,在實(shí)際應(yīng)用過程中,可以根據(jù)實(shí)際需要設(shè)置value中包括的信息,本發(fā)明實(shí)施例對(duì)此不作具體限定。

s205、在第一預(yù)設(shè)時(shí)長之后,在緩存中獲取目標(biāo)數(shù)據(jù),并向客戶端發(fā)送目標(biāo)數(shù)據(jù)。

可選的,第一預(yù)設(shè)時(shí)長通常等于從數(shù)據(jù)庫向緩存中同步數(shù)據(jù)的時(shí)長,當(dāng)然,在實(shí)際應(yīng)用過程中,可以根據(jù)實(shí)際需要設(shè)置該第一預(yù)設(shè)時(shí)長,本發(fā)明實(shí)施例對(duì)此不作具體限定。

在第一預(yù)設(shè)時(shí)長之后,目標(biāo)數(shù)據(jù)通??梢员煌街辆彺?,相應(yīng)的,可以在緩存中獲取目標(biāo)數(shù)據(jù),并向客戶端發(fā)送該目標(biāo)數(shù)據(jù)。

當(dāng)然,在第一預(yù)設(shè)時(shí)長之內(nèi),也可以實(shí)時(shí)或周期性的判斷緩存中是否存在有效的目標(biāo)數(shù)據(jù),若是,即可在緩存中獲取目標(biāo)數(shù)據(jù),這樣,可以加快向客戶端反饋目標(biāo)數(shù)據(jù)的效率。

需要說明的是,目標(biāo)數(shù)據(jù)有可能無法正常從數(shù)據(jù)庫同步至緩存,相應(yīng)的額,在第一預(yù)設(shè)時(shí)長之后,在緩存中仍無法獲取得到目標(biāo)數(shù)據(jù),此時(shí),可以向客戶端返回空、或者報(bào)錯(cuò)等。

s206、在數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù),將目標(biāo)數(shù)據(jù)存儲(chǔ)至緩存,并向客戶端發(fā)送目標(biāo)數(shù)據(jù)。

在確定緩存中不存在有效的目標(biāo)數(shù)據(jù),且目標(biāo)數(shù)據(jù)也沒有正在從數(shù)據(jù)庫向緩存中同步,則數(shù)據(jù)管理裝置根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí),在數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù),將目標(biāo)數(shù)據(jù)存儲(chǔ)至緩存,并向客戶端發(fā)送目標(biāo)數(shù)據(jù)。

可選的,可以確定目標(biāo)數(shù)據(jù)對(duì)應(yīng)的業(yè)務(wù)接口,并通過目標(biāo)數(shù)據(jù)對(duì)應(yīng)的業(yè)務(wù)接口在數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù),這樣,可以有效避免在數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù)的過程中對(duì)業(yè)務(wù)邏輯造成的侵入。

本發(fā)明實(shí)施例提供的數(shù)據(jù)管理方法,在接收到客戶端發(fā)送的數(shù)據(jù)獲取請(qǐng)求之后,若判斷緩存中存在有效的目標(biāo)數(shù)據(jù),則在緩存中獲取目標(biāo)數(shù)據(jù),并向客戶端發(fā)送該目標(biāo)數(shù)據(jù),若判斷緩存中不存在有效的目標(biāo)數(shù)據(jù),則進(jìn)一步判斷目標(biāo)數(shù)據(jù)是否正在從數(shù)據(jù)庫向緩存中同步,若是,則等待第一預(yù)設(shè)時(shí)長,在第一預(yù)設(shè)時(shí)長之后,目標(biāo)數(shù)據(jù)已同步至緩存中,并在緩存中獲取目標(biāo)數(shù)據(jù)即可,若否,則再從數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù),將目標(biāo)數(shù)據(jù)存儲(chǔ)至緩存,并向客戶端發(fā)送目標(biāo)數(shù)據(jù)。在上述過程中,在確定緩存中不包括客戶端請(qǐng)求的數(shù)據(jù)時(shí),不會(huì)直接向數(shù)據(jù)庫請(qǐng)求獲取目標(biāo)數(shù)據(jù),而是進(jìn)一步判斷目標(biāo)數(shù)據(jù)是否正在從數(shù)據(jù)庫向緩存同步,若是,則無需向數(shù)據(jù)庫請(qǐng)求獲取目標(biāo)數(shù)據(jù),在等待第一預(yù)設(shè)時(shí)長之后,即可在緩存中獲取目標(biāo)數(shù)據(jù),減少了對(duì)數(shù)據(jù)庫的訪問次數(shù),這樣,可以有效避免向數(shù)據(jù)庫發(fā)送大量的數(shù)據(jù)獲取請(qǐng)求,避免了數(shù)據(jù)庫崩潰,進(jìn)而提高數(shù)據(jù)管理的可靠性。

在圖2所示實(shí)施例的基礎(chǔ)上,在數(shù)據(jù)管理裝置接收到該數(shù)據(jù)獲取請(qǐng)求的同時(shí),數(shù)據(jù)管理裝置可能還接收到其它用于請(qǐng)求目標(biāo)數(shù)據(jù)的并發(fā)數(shù)據(jù)獲取請(qǐng)求,且在數(shù)據(jù)管理裝置對(duì)并發(fā)數(shù)據(jù)獲取請(qǐng)求進(jìn)行處理時(shí),也可以確定得出緩存中不存在有效的目標(biāo)數(shù)據(jù),且目標(biāo)數(shù)據(jù)也沒有正在從數(shù)據(jù)庫向緩存中同步,此時(shí),為了避免數(shù)據(jù)管理裝置根據(jù)該數(shù)據(jù)獲取請(qǐng)求和多個(gè)并發(fā)數(shù)據(jù)獲取請(qǐng)求、同時(shí)向數(shù)據(jù)庫請(qǐng)求多次目標(biāo)數(shù)據(jù),數(shù)據(jù)管理裝置可以通過對(duì)處理線程進(jìn)行控制,以實(shí)現(xiàn)僅向數(shù)據(jù)庫請(qǐng)求一次目標(biāo)數(shù)據(jù),進(jìn)而可以進(jìn)一步減少向數(shù)據(jù)庫請(qǐng)求數(shù)據(jù)的次數(shù)。具體的,請(qǐng)參見圖3所示的實(shí)施例。

圖3為本發(fā)明實(shí)施例提供的獲取目標(biāo)數(shù)據(jù)方法的流程示意圖。請(qǐng)參見圖3,該方法可以包括:

s301、確定數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的多個(gè)并發(fā)數(shù)據(jù)獲取請(qǐng)求。

其中,數(shù)據(jù)管理裝置接收到并發(fā)數(shù)據(jù)獲取請(qǐng)求的時(shí)刻與接收到數(shù)據(jù)獲取請(qǐng)求的時(shí)刻相同,且并發(fā)數(shù)據(jù)獲取請(qǐng)求也是用于請(qǐng)求獲取目標(biāo)數(shù)據(jù)。

可選的,數(shù)據(jù)管理裝置可以根據(jù)各個(gè)數(shù)據(jù)獲取請(qǐng)求的接收時(shí)刻、及數(shù)據(jù)獲取請(qǐng)求用于請(qǐng)求的數(shù)據(jù),確定所述數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的并發(fā)數(shù)據(jù)獲取請(qǐng)求。

s302、分別獲取數(shù)據(jù)獲取請(qǐng)求和各并發(fā)數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的請(qǐng)求線程。

在實(shí)際應(yīng)用過程中,在數(shù)據(jù)管理裝置接收到一個(gè)數(shù)據(jù)獲取請(qǐng)求之后,數(shù)據(jù)管理裝置則會(huì)啟動(dòng)一個(gè)請(qǐng)求線程,并通過請(qǐng)求線程對(duì)數(shù)據(jù)獲取請(qǐng)求進(jìn)行處理。當(dāng)數(shù)據(jù)管理裝置同時(shí)接收到多個(gè)數(shù)據(jù)獲取請(qǐng)求時(shí),則數(shù)據(jù)管理裝置則會(huì)同時(shí)啟動(dòng)多個(gè)請(qǐng)求線程,并通過該多個(gè)請(qǐng)求線程同時(shí)對(duì)多個(gè)數(shù)據(jù)獲取請(qǐng)求進(jìn)行處理。

可選的,數(shù)據(jù)獲取請(qǐng)求和并發(fā)數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的請(qǐng)求線程可以是一個(gè)進(jìn)程中的線程,也可以是多個(gè)進(jìn)程中的線程。

s303、在多個(gè)請(qǐng)求線程中確定處理線程,并通過處理線程在數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù)。

當(dāng)數(shù)據(jù)處理裝置通過多個(gè)進(jìn)程同時(shí)對(duì)數(shù)據(jù)獲取請(qǐng)求進(jìn)行處理時(shí),數(shù)據(jù)獲取請(qǐng)求和并發(fā)數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的請(qǐng)求線程通常為多個(gè)進(jìn)程中的線程,相應(yīng)的,數(shù)據(jù)處理裝置可以分別在每一個(gè)進(jìn)程對(duì)應(yīng)的請(qǐng)求線程中確定一個(gè)待選處理線程,然后在每一個(gè)進(jìn)程對(duì)應(yīng)的待選處理線程中確定處理線程,并通過處理線程在數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù)。

可選的,當(dāng)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)中包括目標(biāo)數(shù)據(jù)對(duì)應(yīng)的業(yè)務(wù)信息和參數(shù)信息時(shí),可以通過如下可行的實(shí)現(xiàn)方式在數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù):根據(jù)目標(biāo)數(shù)據(jù)的業(yè)務(wù)信息,確定業(yè)務(wù)信息對(duì)應(yīng)的業(yè)務(wù)接口,獲取業(yè)務(wù)接口對(duì)應(yīng)的業(yè)務(wù)統(tǒng)一資源定位符(uniformresourcelocator,url)地址前綴,根據(jù)業(yè)務(wù)url地址前綴和參數(shù)信息,確定目標(biāo)url地址,根據(jù)目標(biāo)url地址,通過處理線程在數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù)。

例如,假設(shè)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)為shoppingportal:detail|goodsid:1,其中,shoppingportal:detail為業(yè)務(wù)信息,goodsid:1為參數(shù)信息,數(shù)據(jù)管理裝置根據(jù)shoppingportal:detail確定業(yè)務(wù)接口1,并獲取業(yè)務(wù)接口1的業(yè)務(wù)url地址前綴:假設(shè)業(yè)務(wù)url地址前綴為http://www.a.com/shoppingportal/detail/,則根據(jù)該業(yè)務(wù)url地址前綴和參數(shù)信息goodsid:1,可以確定目標(biāo)url地址為:http://www.a.com/shoppingportal/detail/goodsid:1。

可選的,通過處理線程在數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù)之后,將目標(biāo)數(shù)據(jù)對(duì)應(yīng)的更新標(biāo)志設(shè)置為更新狀態(tài),更新狀態(tài)用于指示目標(biāo)數(shù)據(jù)正在從數(shù)據(jù)庫向緩存中同步。這樣,當(dāng)數(shù)據(jù)管理裝置再次接收到用于請(qǐng)求目標(biāo)數(shù)據(jù)的數(shù)據(jù)獲取請(qǐng)求之后,若緩存中沒有有效的目標(biāo)數(shù)據(jù),則數(shù)據(jù)管理裝置根據(jù)該更新標(biāo)志,不會(huì)再向數(shù)據(jù)庫請(qǐng)求目標(biāo)數(shù)據(jù)。

在圖3所示的實(shí)施例中,在數(shù)據(jù)管理裝置同時(shí)接收到多個(gè)用于請(qǐng)求目標(biāo)數(shù)據(jù)的數(shù)據(jù)獲取請(qǐng)求時(shí),數(shù)據(jù)管理裝置不會(huì)根據(jù)該多個(gè)數(shù)據(jù)獲取請(qǐng)求向數(shù)據(jù)庫請(qǐng)求多次目標(biāo)數(shù)據(jù),數(shù)據(jù)管理裝置會(huì)根據(jù)該多個(gè)數(shù)據(jù)獲取請(qǐng)求,僅向數(shù)據(jù)庫請(qǐng)求一次目標(biāo)數(shù)據(jù),可以減少訪問數(shù)據(jù)庫的次數(shù),進(jìn)一步降低數(shù)據(jù)庫崩潰的風(fēng)險(xiǎn)。

需要說明的是,在數(shù)據(jù)管理裝置同時(shí)接收到多個(gè)用于請(qǐng)求目標(biāo)數(shù)據(jù)的數(shù)據(jù)請(qǐng)求時(shí),則數(shù)據(jù)管理裝置只需執(zhí)行一次圖3所示的實(shí)施例,并根據(jù)圖3所示的實(shí)施例獲取目標(biāo)數(shù)據(jù)。

在上述任意一個(gè)實(shí)施例的基礎(chǔ)上,在緩存中獲取目標(biāo)數(shù)據(jù)之后,數(shù)據(jù)管理裝置還獲取目標(biāo)數(shù)據(jù)的剩余有效時(shí)長,判斷目標(biāo)數(shù)據(jù)的剩余有效時(shí)長是否小于第二預(yù)設(shè)時(shí)長,若是,則在數(shù)據(jù)庫中獲取目標(biāo)數(shù)據(jù)對(duì)應(yīng)的最新數(shù)據(jù),并通過最新數(shù)據(jù)更新目標(biāo)數(shù)據(jù)??蛇x的,第二預(yù)設(shè)時(shí)長可以為目標(biāo)數(shù)據(jù)的總時(shí)長的五分之一,在實(shí)際應(yīng)用過程中,可以根據(jù)實(shí)際需要設(shè)置該第二預(yù)設(shè)時(shí)長,本發(fā)明實(shí)施例對(duì)此不作具體限定。在該過程中,在緩存中的數(shù)據(jù)還沒有失效時(shí)(即將失效),即對(duì)緩存中的數(shù)據(jù)進(jìn)行更新,這樣,可以確??蛻舳嗽诙鄶?shù)情況下均可以在緩存中獲取得到有效的目標(biāo)數(shù)據(jù),進(jìn)一步提高數(shù)據(jù)管理的可靠性。

在上述任意一個(gè)實(shí)施例的基礎(chǔ)上,由于緩存中的數(shù)據(jù)隨時(shí)可能進(jìn)行更新,為了避免在緩存中的數(shù)據(jù)進(jìn)行更新時(shí),無法正常在緩存中獲取數(shù)據(jù)的問題,可以設(shè)置主緩存和備緩存,在主緩存正在進(jìn)行數(shù)據(jù)更新時(shí),可以將主緩存設(shè)置為不可用,例如,將主緩存的availableflag設(shè)置為0,此時(shí),可以從備緩存中獲取數(shù)據(jù),在主緩存更新完數(shù)據(jù)之后,可以再將主緩存設(shè)置為可用,例如,將主緩存的availableflag設(shè)置為1,此時(shí),可以從主緩存中獲取數(shù)據(jù)。在實(shí)際應(yīng)用過程中,在對(duì)緩存中的數(shù)據(jù)進(jìn)行更新時(shí),可以先更新備緩存中的數(shù)據(jù),在備緩存中的數(shù)據(jù)更新完整之后,將主緩存設(shè)置為不可用,并更新主緩存中的數(shù)據(jù),在主緩存中的數(shù)據(jù)更新完之后,再將主緩存設(shè)置為可用。

在上述任意一個(gè)實(shí)施例的基礎(chǔ)上,客戶端可能會(huì)多次在分布式系統(tǒng)中請(qǐng)求獲取目標(biāo)數(shù)據(jù),在客戶端第二次、及第二次之后請(qǐng)求獲取目標(biāo)數(shù)據(jù)時(shí),可以在數(shù)據(jù)獲取請(qǐng)求中攜帶上一次獲取的目標(biāo)數(shù)據(jù)的實(shí)際更新時(shí)間,數(shù)據(jù)管理裝置接收到數(shù)據(jù)獲取請(qǐng)求之后,判斷數(shù)據(jù)獲取請(qǐng)求中攜帶的實(shí)際更新時(shí)間和緩存中目標(biāo)數(shù)據(jù)的實(shí)際更新時(shí)間是否一致,若一致,則不再向客戶端發(fā)送目標(biāo)數(shù)據(jù),進(jìn)而避免向客戶端重復(fù)發(fā)送相同的數(shù)據(jù),進(jìn)而減少網(wǎng)絡(luò)流量開銷、及傳輸時(shí)間。

可選的,調(diào)用者后面調(diào)用緩存內(nèi)容提供接口從緩存中獲取業(yè)務(wù)緩存內(nèi)容時(shí),每次都傳入contentupdatetime時(shí)間戳,緩存管理模塊通過比對(duì)傳入的時(shí)間戳和緩存中存儲(chǔ)的contentupdatetime時(shí)間戳是否一致來返回給調(diào)用者是否有業(yè)務(wù)內(nèi)容更新,用以防止相同數(shù)據(jù)的重復(fù)傳輸,減少網(wǎng)絡(luò)流量和傳輸時(shí)間。

下面,通過具體示例,對(duì)上述方法實(shí)施例所示的技術(shù)方案進(jìn)行詳細(xì)說明。

示例性的,在用戶通過客戶端在網(wǎng)站a上使用shoppingportal應(yīng)用程序的過程中,當(dāng)需要獲取detail業(yè)務(wù)中商品1的數(shù)據(jù)時(shí),通過客戶端向數(shù)據(jù)管理裝置發(fā)送數(shù)據(jù)獲取請(qǐng)求1,數(shù)據(jù)獲取請(qǐng)求1中包括目標(biāo)數(shù)據(jù)的標(biāo)識(shí):shoppingportal/detail/goodsid:1。

數(shù)據(jù)管理裝置判斷主緩存可用,則數(shù)據(jù)管理裝置根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí),確定目標(biāo)數(shù)據(jù)的key:main|shoppingportal:detail|goodsid:1,并根據(jù)目標(biāo)數(shù)據(jù)的key判斷主緩存中是否存在有效的目標(biāo)數(shù)據(jù)。

假設(shè)主緩存中不存在有效的目標(biāo)數(shù)據(jù),則數(shù)據(jù)管理裝置獲取該key(main|shoppingportal:detail|goodsid:1)對(duì)應(yīng)的更新標(biāo)志refreshflag,假設(shè)該key對(duì)應(yīng)的更新標(biāo)志refreshflag為0,說明該key對(duì)應(yīng)的目標(biāo)數(shù)據(jù)沒有正在更新,即目標(biāo)數(shù)據(jù)沒有正在從數(shù)據(jù)庫向緩存中同步。

數(shù)據(jù)管理裝置獲取數(shù)據(jù)獲取請(qǐng)求1對(duì)應(yīng)的并發(fā)數(shù)據(jù)獲取請(qǐng)求,假設(shè)數(shù)據(jù)獲取請(qǐng)求1對(duì)應(yīng)9個(gè)并發(fā)數(shù)據(jù)獲取請(qǐng)求,則數(shù)據(jù)管理裝置分別獲取數(shù)據(jù)獲取請(qǐng)求1和該9個(gè)并發(fā)數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的請(qǐng)求線程,假設(shè)該10個(gè)數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的請(qǐng)求線程分別為請(qǐng)求線程1-請(qǐng)求線程10。

數(shù)據(jù)管理裝置在請(qǐng)求線程1-請(qǐng)求線程10中確定處理線程,假設(shè)將請(qǐng)求線程1確定為處理線程,則數(shù)據(jù)管理裝置根據(jù)該處理線程(請(qǐng)求線程1)向數(shù)據(jù)庫獲取目標(biāo)數(shù)據(jù),請(qǐng)求線程2-請(qǐng)求線程9則進(jìn)行等待,在請(qǐng)求線程1將獲取得到的目標(biāo)數(shù)據(jù)存儲(chǔ)至緩存中之后,則請(qǐng)求線程2-請(qǐng)求線程9則可以在緩存中獲取目標(biāo)數(shù)據(jù),并分別向數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的客戶端反饋在緩存中獲取得到的目標(biāo)數(shù)據(jù)。

在上述過程中,一方面,在確定緩存中不包括客戶端請(qǐng)求的數(shù)據(jù)時(shí),不會(huì)直接向數(shù)據(jù)庫請(qǐng)求獲取目標(biāo)數(shù)據(jù),而是進(jìn)一步判斷目標(biāo)數(shù)據(jù)是否正在從數(shù)據(jù)庫向緩存同步,若是,則無需向數(shù)據(jù)庫請(qǐng)求獲取目標(biāo)數(shù)據(jù),在等待第一預(yù)設(shè)時(shí)長之后,即可在緩存中獲取目標(biāo)數(shù)據(jù),減少了對(duì)數(shù)據(jù)庫的訪問次數(shù),這樣,可以有效避免向數(shù)據(jù)庫發(fā)送大量的數(shù)據(jù)獲取請(qǐng)求,避免了數(shù)據(jù)庫崩潰,進(jìn)而提高數(shù)據(jù)管理的可靠性。另一方面,在數(shù)據(jù)管理裝置同時(shí)接收到多個(gè)用于請(qǐng)求目標(biāo)數(shù)據(jù)的數(shù)據(jù)獲取請(qǐng)求時(shí),數(shù)據(jù)管理裝置不會(huì)根據(jù)該多個(gè)數(shù)據(jù)獲取請(qǐng)求向數(shù)據(jù)庫請(qǐng)求多次目標(biāo)數(shù)據(jù),數(shù)據(jù)管理裝置會(huì)根據(jù)該多個(gè)數(shù)據(jù)獲取請(qǐng)求,僅向數(shù)據(jù)庫請(qǐng)求一次目標(biāo)數(shù)據(jù),可以減少訪問數(shù)據(jù)庫的次數(shù),進(jìn)一步降低數(shù)據(jù)庫崩潰的風(fēng)險(xiǎn)。

圖4為本發(fā)明實(shí)施例提供的數(shù)據(jù)管理裝置的結(jié)構(gòu)示意圖一。該數(shù)據(jù)管理裝置可以設(shè)置在分布式系統(tǒng)中,請(qǐng)參見4,該裝置可以包括接收模塊11、判斷模塊12、第一獲取模塊13、發(fā)送模塊14、第二獲取模塊15及存儲(chǔ)模塊16,其中,

所述接收模塊用11于,接收客戶端發(fā)送的數(shù)據(jù)獲取請(qǐng)求,所述數(shù)據(jù)獲取請(qǐng)求中包括目標(biāo)數(shù)據(jù)的標(biāo)識(shí);

所述判斷模塊12用于,根據(jù)所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí),判斷緩存中是否存在有效截止時(shí)刻在當(dāng)前時(shí)刻之后的目標(biāo)數(shù)據(jù);

在所述判斷模塊12判斷緩存中存在有效的所述目標(biāo)數(shù)據(jù)時(shí),所述第一獲取模塊13用于,在所述緩存中獲取所述目標(biāo)數(shù)據(jù),所述發(fā)送模塊14用于,向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù);

在所述判斷模塊12判斷緩存中不存在有效的所述目標(biāo)數(shù)據(jù)時(shí),所述判斷模塊12還用于,判斷所述目標(biāo)數(shù)據(jù)是否正在從數(shù)據(jù)庫向所述緩存中同步,在所述判斷模塊12判斷所述目標(biāo)數(shù)據(jù)正在從數(shù)據(jù)庫向所述緩存中同步時(shí),所述第一獲取模塊13還用于,在第一預(yù)設(shè)時(shí)長之后,在所述緩存中獲取所述目標(biāo)數(shù)據(jù),所述發(fā)送模塊14還用于,向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù);在所述判斷模塊12判斷所述目標(biāo)數(shù)據(jù)未正在從數(shù)據(jù)庫向所述緩存中同步時(shí),所述第二獲取模塊15用于,在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù),所述存儲(chǔ)模塊16用于,將所述目標(biāo)數(shù)據(jù)存儲(chǔ)至所述緩存,所述發(fā)送模塊14還用于,向所述客戶端發(fā)送所述目標(biāo)數(shù)據(jù)。

本發(fā)明實(shí)施例提供的數(shù)據(jù)管理裝置可以執(zhí)行上述方法實(shí)施例所示的技術(shù)方案,其實(shí)現(xiàn)原理以及有益效果類似,此處不再進(jìn)行贅述。

在一種可能的實(shí)施方式中,所述判斷模塊12具體用于:

獲取所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的更新標(biāo)志,所述更新標(biāo)志用于指示所述目標(biāo)數(shù)據(jù)是否正在更新;

根據(jù)所述更新標(biāo)志,判斷所述目標(biāo)數(shù)據(jù)是否正在從所述數(shù)據(jù)庫向所述緩存中同步。

圖5為本發(fā)明實(shí)施例提供的數(shù)據(jù)管理裝置的結(jié)構(gòu)示意圖二。在圖4所示實(shí)施例的基礎(chǔ)上,請(qǐng)參見圖5,所述第二獲取模塊15包括確定單元151、第一獲取單元152和第二獲取單元153,其中,

所述確定單元151用于,確定所述數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的多個(gè)并發(fā)數(shù)據(jù)獲取請(qǐng)求,其中,接收到所述并發(fā)數(shù)據(jù)獲取請(qǐng)求的時(shí)刻與接收到所述數(shù)據(jù)獲取請(qǐng)求的時(shí)刻相同;

所述第一獲取單元152用于,分別獲取所述數(shù)據(jù)獲取請(qǐng)求和各所述并發(fā)數(shù)據(jù)獲取請(qǐng)求對(duì)應(yīng)的請(qǐng)求線程;

所述第二獲取單元153用于,在所述多個(gè)請(qǐng)求線程中確定處理線程,并通過所述處理線程在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)。

在另一種可能的實(shí)施方式中,所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)中包括所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的業(yè)務(wù)信息和參數(shù)信息,相應(yīng)的,所述第二獲取單元153具體用于:

根據(jù)所述目標(biāo)數(shù)據(jù)的業(yè)務(wù)信息,確定所述業(yè)務(wù)信息對(duì)應(yīng)的業(yè)務(wù)接口;

獲取所述業(yè)務(wù)接口對(duì)應(yīng)的業(yè)務(wù)統(tǒng)一資源定位符url地址前綴;

根據(jù)所述業(yè)務(wù)url地址前綴和所述參數(shù)信息,確定目標(biāo)url地址;

根據(jù)所述目標(biāo)url地址,通過所述處理線程在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)。

在另一種可能的實(shí)施方式中,所述裝置還包括設(shè)置模塊17,其中,

所述設(shè)置模塊17用于,在所述第二獲取單元153通過所述處理線程在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)之后,將所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的更新標(biāo)志設(shè)置為更新狀態(tài),所述更新狀態(tài)用于指示所述目標(biāo)數(shù)據(jù)正在從所述數(shù)據(jù)庫向所述緩存中同步。

在另一種可能的實(shí)施方式中,所述裝置還包括第三獲取模塊18、第四獲取模塊19和更新模塊110,其中,在所述第一獲取模塊13在所述緩存中獲取所述目標(biāo)數(shù)據(jù)之后,

所述第三獲取模塊18用于,獲取所述目標(biāo)數(shù)據(jù)的剩余有效時(shí)長;

所述判斷模塊12還用于,判斷所述目標(biāo)數(shù)據(jù)的剩余有效時(shí)長是否小于第二預(yù)設(shè)時(shí)長;

所述第四獲取模塊19用于,在所述判斷模塊12判斷所述目標(biāo)數(shù)據(jù)的剩余有效時(shí)長小于第二預(yù)設(shè)時(shí)長時(shí),在所述數(shù)據(jù)庫中獲取所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的最新數(shù)據(jù);

所述更新模塊110用于,通過所述最新數(shù)據(jù)更新所述目標(biāo)數(shù)據(jù)。

本發(fā)明實(shí)施例提供的數(shù)據(jù)管理裝置可以執(zhí)行上述方法實(shí)施例所示的技術(shù)方案,其實(shí)現(xiàn)原理以及有益效果類似,此處不再進(jìn)行贅述。

本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。

最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明實(shí)施例的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明實(shí)施例進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實(shí)施例方案的范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
临清市| 霍州市| 边坝县| 万州区| 台江县| 县级市| 惠安县| 衡南县| 新乐市| 西贡区| 亚东县| 久治县| 河津市| 江口县| 丘北县| 新邵县| 南陵县| 双桥区| 林西县| 白城市| 岱山县| 西昌市| 朝阳县| 梁平县| 海原县| 宿州市| 米脂县| 沐川县| 红桥区| 庄河市| 陇川县| 伊宁市| 叶城县| 滨州市| 银川市| 丰宁| 奉化市| 天长市| 嵊州市| 舞阳县| 连南|