麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

數(shù)據(jù)存儲(chǔ)方法、裝置和系統(tǒng)與流程

文檔序號(hào):11180705閱讀:481來(lái)源:國(guó)知局
數(shù)據(jù)存儲(chǔ)方法、裝置和系統(tǒng)與流程

本申請(qǐng)涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)方法、裝置和系統(tǒng)。



背景技術(shù):

在讀訪問(wèn)量比較大、寫訪問(wèn)量比較少的情況下,引入分布式緩存可以減少對(duì)后端應(yīng)用或數(shù)據(jù)庫(kù)的訪問(wèn),很大程度上降低了后端成本。但是,對(duì)于一些比較集中的數(shù)據(jù)訪問(wèn)請(qǐng)求,這些請(qǐng)求會(huì)集中訪問(wèn)到分布式緩存中的某臺(tái)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,在有限網(wǎng)卡數(shù)據(jù)傳輸能力下,很容易導(dǎo)致這臺(tái)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的網(wǎng)卡過(guò)載。

相關(guān)技術(shù)中,由于集中訪問(wèn)導(dǎo)致某臺(tái)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器過(guò)載后,緩存客戶端會(huì)在接下來(lái)的一段時(shí)間內(nèi)阻斷對(duì)這臺(tái)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的訪問(wèn)請(qǐng)求,會(huì)導(dǎo)致后續(xù)到達(dá)該數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的請(qǐng)求出現(xiàn)等待或超時(shí),對(duì)業(yè)務(wù)的可用性帶來(lái)影響。



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

本申請(qǐng)旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問(wèn)題之一。

為此,本申請(qǐng)的一個(gè)目的在于提出一種數(shù)據(jù)存儲(chǔ)方法,該方法可以將數(shù)據(jù)存儲(chǔ)在本地緩存和遠(yuǎn)程分布式緩存中,避免將數(shù)據(jù)訪問(wèn)請(qǐng)求集中到遠(yuǎn)程分布式緩存造成的請(qǐng)求等待或超時(shí)問(wèn)題,保證業(yè)務(wù)順利運(yùn)行。

本申請(qǐng)的另一個(gè)目的在于提出一種數(shù)據(jù)存儲(chǔ)裝置。

本申請(qǐng)的另一個(gè)目的在于提出一種數(shù)據(jù)存儲(chǔ)系統(tǒng)。

為達(dá)到上述目的,本申請(qǐng)第一方面實(shí)施例提出的數(shù)據(jù)存儲(chǔ)方法,包括:接收用于讀取數(shù)據(jù)的讀請(qǐng)求;在本地緩存和遠(yuǎn)程分布式緩存中查詢所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);如果本地緩存和遠(yuǎn)程分布式緩存中都沒(méi)有存儲(chǔ)所述數(shù)據(jù),則從數(shù)據(jù)庫(kù)中讀取所述數(shù)據(jù);在讀取到所述數(shù)據(jù)后,將所述數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存中。

本申請(qǐng)第一方面實(shí)施例提出的數(shù)據(jù)存儲(chǔ)方法,通過(guò)將數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存,可以實(shí)現(xiàn)二級(jí)緩存,從而在需要讀取數(shù)據(jù)時(shí)可以先在本地緩存中讀取,避免集中到遠(yuǎn)程分布式緩存中讀取,避免某個(gè)熱點(diǎn)的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的請(qǐng)求出現(xiàn)等待或超時(shí),避免對(duì)業(yè)務(wù)可用性帶來(lái)影響,保證業(yè)務(wù)順利運(yùn)行。

為達(dá)到上述目的,本申請(qǐng)第二方面實(shí)施例提出的數(shù)據(jù)存儲(chǔ)裝置,包括:接收模塊,用于接收用于讀取數(shù)據(jù)的讀請(qǐng)求;查詢模塊,用于在本地緩存和遠(yuǎn)程分布式緩存中查詢所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);讀取模塊,用于如果本地緩存和遠(yuǎn)程分布式緩存中都沒(méi)有存儲(chǔ)所述數(shù)據(jù),則從數(shù)據(jù)庫(kù)中讀取所述數(shù)據(jù);寫入模塊,用于在讀取到所述數(shù)據(jù)后,將所述數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存中。

本申請(qǐng)第二方面實(shí)施例提出的數(shù)據(jù)存儲(chǔ)裝置,通過(guò)將數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存,可以實(shí)現(xiàn)二級(jí)緩存,從而在需要讀取數(shù)據(jù)時(shí)可以先在本地緩存中讀取,避免集中到遠(yuǎn)程分布式緩存中讀取,避免某個(gè)熱點(diǎn)的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的請(qǐng)求出現(xiàn)等待或超時(shí),避免對(duì)業(yè)務(wù)可用性帶來(lái)影響,保證業(yè)務(wù)順利運(yùn)行。

為達(dá)到上述目的,本申請(qǐng)第三方面實(shí)施例提出的數(shù)據(jù)存儲(chǔ)系統(tǒng),包括:本申請(qǐng)第二方面實(shí)施例提出的數(shù)據(jù)存儲(chǔ)裝置,以及,本地緩存和遠(yuǎn)程分布式緩存,所述本地緩存和遠(yuǎn)程分布式緩存用于存儲(chǔ)數(shù)據(jù)。

本申請(qǐng)第三方面實(shí)施例提出的數(shù)據(jù)存儲(chǔ)系統(tǒng),通過(guò)將數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存,可以實(shí)現(xiàn)二級(jí)緩存,從而在需要讀取數(shù)據(jù)時(shí)可以先在本地緩存中讀取,避免集中到遠(yuǎn)程分布式緩存中讀取,避免某個(gè)熱點(diǎn)的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的請(qǐng)求出現(xiàn)等待或超時(shí),避免對(duì)業(yè)務(wù)可用性帶來(lái)影響,保證業(yè)務(wù)順利運(yùn)行。

本申請(qǐng)附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過(guò)本申請(qǐng)的實(shí)踐了解到。

附圖說(shuō)明

本申請(qǐng)上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:

圖1是本申請(qǐng)一個(gè)實(shí)施例提出的數(shù)據(jù)緩存方法的流程示意圖;

圖2是本申請(qǐng)另一個(gè)實(shí)施例提出的數(shù)據(jù)存儲(chǔ)方法的流程示意圖;

圖3是圖2對(duì)應(yīng)的系統(tǒng)交互示意圖;

圖4是本申請(qǐng)一個(gè)實(shí)施例提出的失效緩存中的數(shù)據(jù)的流程示意圖;

圖5是圖4對(duì)應(yīng)的系統(tǒng)交互示意圖;

圖6是本申請(qǐng)一個(gè)實(shí)施例提出的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖;

圖7是本申請(qǐng)另一個(gè)實(shí)施例提出的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖;

圖8是本申請(qǐng)一個(gè)實(shí)施例提出的數(shù)據(jù)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面詳細(xì)描述本申請(qǐng)的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的模塊或具有相同或類似功能的模塊。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,僅用于解釋本申請(qǐng),而不能 理解為對(duì)本申請(qǐng)的限制。相反,本申請(qǐng)的實(shí)施例包括落入所附加權(quán)利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。

圖1是本申請(qǐng)一個(gè)實(shí)施例提出的數(shù)據(jù)緩存方法的流程示意圖。

本實(shí)施例以應(yīng)用服務(wù)器的執(zhí)行流程為例。

參見(jiàn)圖1,本實(shí)施例的方法包括:

s11:接收用于讀取數(shù)據(jù)的讀請(qǐng)求。

例如,調(diào)用方需要讀取數(shù)據(jù)時(shí),可以向應(yīng)用服務(wù)器(appserver)發(fā)送讀請(qǐng)求。

s12:在本地緩存和遠(yuǎn)程分布式緩存中查詢所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)。

其中,數(shù)據(jù)在存儲(chǔ)時(shí)可以對(duì)應(yīng)存儲(chǔ)數(shù)據(jù)的標(biāo)識(shí)和具體內(nèi)容的數(shù)據(jù),讀請(qǐng)求中可以攜帶數(shù)據(jù)的標(biāo)識(shí)(數(shù)據(jù)id),從而可以在存儲(chǔ)的數(shù)據(jù)中查詢是否存在讀請(qǐng)求中攜帶的標(biāo)識(shí),以及,在存儲(chǔ)該數(shù)據(jù)id時(shí)根據(jù)上述的對(duì)應(yīng)關(guān)系,獲取對(duì)應(yīng)的數(shù)據(jù)。

應(yīng)用服務(wù)器在查詢數(shù)據(jù)時(shí),可以先在本地緩存中查詢?cè)僭谶h(yuǎn)程分布式緩存中查詢。例如,調(diào)用方在需要讀取數(shù)據(jù)時(shí),在讀請(qǐng)求中可以攜帶數(shù)據(jù)id,應(yīng)用服務(wù)器接收到讀請(qǐng)求后,可以先在本地緩存中查詢是否存儲(chǔ)該數(shù)據(jù)id,如果沒(méi)有存儲(chǔ),則可以在遠(yuǎn)程分布式緩存中查詢是否存在該數(shù)據(jù)id,如果也沒(méi)有存儲(chǔ),可以確定本地緩存和遠(yuǎn)程分布式緩存都沒(méi)有存儲(chǔ)調(diào)用方需要讀取的數(shù)據(jù)。

進(jìn)一步的,本地緩存中可以對(duì)使用頻率低于預(yù)設(shè)值的數(shù)據(jù)進(jìn)行過(guò)期處理,例如,采用近期最少使用(leastrecentlyused,lru)算法進(jìn)行過(guò)期處理。

其中,lru時(shí)內(nèi)存管理的一種頁(yè)面置換算法,對(duì)于在內(nèi)存中但又不用的數(shù)據(jù)塊(內(nèi)存塊)叫做lru,操作系統(tǒng)會(huì)根據(jù)哪些數(shù)據(jù)屬于lru而將其移出內(nèi)存 而騰出空間來(lái)加載另外的數(shù)據(jù)。

通過(guò)在本地緩存中將使用頻率低于預(yù)設(shè)值的數(shù)據(jù)進(jìn)行過(guò)期處理,可以淘汰使用頻率低的數(shù)據(jù),從而經(jīng)過(guò)一段時(shí)間的運(yùn)行,熱點(diǎn)數(shù)據(jù)會(huì)在本地大量的緩存,可以降低對(duì)遠(yuǎn)程分布式緩存的訪問(wèn)。

s13:如果本地緩存和遠(yuǎn)程分布式緩存中都沒(méi)有存儲(chǔ)所述數(shù)據(jù),則從數(shù)據(jù)庫(kù)讀取所述數(shù)據(jù)。

應(yīng)用服務(wù)器在確定本地緩存和遠(yuǎn)程分布式緩存中都沒(méi)有存儲(chǔ)調(diào)用方需要的數(shù)據(jù)時(shí),可以向數(shù)據(jù)庫(kù)發(fā)送攜帶該數(shù)據(jù)id的讀請(qǐng)求,以從數(shù)據(jù)庫(kù)中讀取該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù),獲取調(diào)用方需要的數(shù)據(jù)。

s14:在讀取到所述數(shù)據(jù)后,將所述數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存中。

應(yīng)用服務(wù)器在從數(shù)據(jù)庫(kù)中讀取到該數(shù)據(jù)后,以二級(jí)緩存的方式,在本地緩存和遠(yuǎn)程分布式緩存中都存儲(chǔ)該數(shù)據(jù)。

本實(shí)施例中,通過(guò)將數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存,可以實(shí)現(xiàn)二級(jí)緩存,從而在需要讀取數(shù)據(jù)時(shí)可以先在本地緩存中讀取,避免集中到遠(yuǎn)程分布式緩存中讀取,避免某個(gè)熱點(diǎn)的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的請(qǐng)求出現(xiàn)等待或超時(shí),避免對(duì)業(yè)務(wù)可用性帶來(lái)影響,保證業(yè)務(wù)順利運(yùn)行。進(jìn)一步的,通過(guò)在本地緩存中對(duì)使用頻率較低的數(shù)據(jù)進(jìn)行過(guò)期處理,可以將熱點(diǎn)數(shù)據(jù)積累在本地緩存中,降低對(duì)遠(yuǎn)程分布式緩存的訪問(wèn)。

上述實(shí)施例給出了本地緩存和遠(yuǎn)程分布式緩存中都不存在需要的數(shù)據(jù)時(shí)的處理流程,當(dāng)本地緩存或遠(yuǎn)程分布式緩存中存在需要的數(shù)據(jù)時(shí),可以執(zhí)行其他流程。具體參見(jiàn)下述實(shí)施例。

圖2是本申請(qǐng)另一個(gè)實(shí)施例提出的數(shù)據(jù)存儲(chǔ)方法的流程示意圖。圖3是圖 2對(duì)應(yīng)的系統(tǒng)交互的示意圖。

參見(jiàn)圖2,該方法包括:

s201:應(yīng)用服務(wù)器接收讀請(qǐng)求,該讀請(qǐng)求中攜帶數(shù)據(jù)id。

其中,讀請(qǐng)求是調(diào)用方發(fā)送的用于讀取數(shù)據(jù)的請(qǐng)求。

參見(jiàn)圖3,應(yīng)用服務(wù)器上可以部署虛擬內(nèi)存(virtualmemory,vm),vm中包括處理模塊和緩存模塊,緩存模塊包括本地緩存和遠(yuǎn)程分布式緩存客戶端(簡(jiǎn)稱為緩存客戶端),遠(yuǎn)程分布式緩存系統(tǒng)中包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器(datanodeserver)。

具體的,調(diào)用方發(fā)送的讀請(qǐng)求是應(yīng)用服務(wù)器的處理模塊接收到的。

之后,處理模塊接收到讀請(qǐng)求后,向緩存模塊查詢讀請(qǐng)求中攜帶的數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù),如果緩存模塊中存儲(chǔ)該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù),則緩存模塊將該數(shù)據(jù)返回給處理模塊,并由處理模塊返回給調(diào)用方。如果緩存模塊中沒(méi)有存儲(chǔ)該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù),則緩存模塊向處理模塊返回結(jié)果是空的消息,處理模塊接收到該消息后,向數(shù)據(jù)庫(kù)發(fā)送攜帶該數(shù)據(jù)id的讀請(qǐng)求,從數(shù)據(jù)庫(kù)中獲取該數(shù)據(jù)并返回給調(diào)用方。

其中,本地緩存和遠(yuǎn)程分布式緩存中任一個(gè)存儲(chǔ)該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù)時(shí),緩存模塊返回給處理模塊的結(jié)果包括該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù),本地緩存和遠(yuǎn)程分布式緩存中都沒(méi)有存儲(chǔ)該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù)時(shí),緩存模塊返回結(jié)果是空的消息。

具體的,參見(jiàn)圖2,該方法還包括:

s202:應(yīng)用服務(wù)器在本地緩存中查詢是否存儲(chǔ)讀請(qǐng)求中攜帶的數(shù)據(jù)id,若是,執(zhí)行s203,否則,執(zhí)行s204。

其中,本地緩存在存儲(chǔ)數(shù)據(jù)時(shí),可以對(duì)應(yīng)存儲(chǔ)數(shù)據(jù)id和具體內(nèi)容的數(shù)據(jù), 從而可以先在本地緩存中查詢是否存儲(chǔ)讀請(qǐng)求中攜帶的數(shù)據(jù)id。

s203:應(yīng)用服務(wù)器在本地緩存中獲取數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù),并返回給調(diào)用方。

其中,本地緩存中可以對(duì)應(yīng)存儲(chǔ)數(shù)據(jù)id及具體內(nèi)容的數(shù)據(jù),因此,根據(jù)該對(duì)應(yīng)關(guān)系,可以獲取讀請(qǐng)求中攜帶的數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù)。

具體的,本地緩存中在緩存數(shù)據(jù)時(shí),可以采用map數(shù)據(jù)結(jié)構(gòu)。

其中,map是一種數(shù)據(jù)結(jié)構(gòu),是指以鍵值對(duì)(key-value)的形式存儲(chǔ)數(shù)據(jù)。在本實(shí)施例中,key可以具體是數(shù)據(jù)id,value是具體內(nèi)容的數(shù)據(jù)。

本地緩存中的過(guò)期策略可以采用lru算法或者采用guavacache機(jī)制,自定義過(guò)期策略,對(duì)使用頻率低于預(yù)設(shè)值的數(shù)據(jù)進(jìn)行過(guò)期處理。

其中,lru時(shí)內(nèi)存管理的一種頁(yè)面置換算法,對(duì)于在內(nèi)存中但又不用的數(shù)據(jù)塊(內(nèi)存塊)叫做lru,操作系統(tǒng)會(huì)根據(jù)哪些數(shù)據(jù)屬于lru而將其移出內(nèi)存而騰出空間來(lái)加載另外的數(shù)據(jù)。

guavacache是一種本地緩存實(shí)現(xiàn),支持多種緩存過(guò)期策略。

通過(guò)在本地緩存中將使用頻率低于預(yù)設(shè)值的數(shù)據(jù)進(jìn)行過(guò)期處理,可以淘汰使用頻率低的數(shù)據(jù),從而經(jīng)過(guò)一段時(shí)間的運(yùn)行,熱點(diǎn)數(shù)據(jù)會(huì)在本地大量的緩存,可以降低對(duì)遠(yuǎn)程分布式緩存的訪問(wèn)。

s204:應(yīng)用服務(wù)器在遠(yuǎn)程分布式緩存中查詢是否存儲(chǔ)讀請(qǐng)求中攜帶的數(shù)據(jù)id,若是,執(zhí)行s205,否則,執(zhí)行s206。

具體的,如圖3所示,緩存客戶端用于計(jì)算路由規(guī)則(routerule),確定讀請(qǐng)求中攜帶的數(shù)據(jù)id屬于的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,并在對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器中查詢是否存儲(chǔ)該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù)。其中,每個(gè)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器可以存儲(chǔ)預(yù)設(shè)范圍的數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù)。

處理模塊接收到調(diào)用方發(fā)送的攜帶數(shù)據(jù)id的讀請(qǐng)求后,向緩存模塊轉(zhuǎn)發(fā)該讀請(qǐng)求,緩存模塊接收到該讀請(qǐng)求后,先在本地緩存中查詢是否存在該數(shù)據(jù)id,如果不存在,緩存模塊中的緩存客戶端計(jì)算路由規(guī)則,確定該數(shù)據(jù)id屬于的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,比如,該數(shù)據(jù)id屬于第一范圍,而第一范圍的數(shù)據(jù)是第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器存儲(chǔ)的,則該數(shù)據(jù)id屬于的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器是第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器。以該數(shù)據(jù)id屬于的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器是第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器為例,之后,緩存客戶端可以將攜帶該數(shù)據(jù)id的讀請(qǐng)求發(fā)送給第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器可以查詢自身是否存儲(chǔ)該數(shù)據(jù)id,以根據(jù)查詢結(jié)果進(jìn)行相應(yīng)處理。

s205:應(yīng)用服務(wù)器在遠(yuǎn)程分布式緩存中獲取該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù),將該數(shù)據(jù)寫入本地緩存中,并返回給調(diào)用方。

例如,第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器中存儲(chǔ)該數(shù)據(jù)id后,可以根據(jù)存儲(chǔ)的數(shù)據(jù)id與數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系,獲取該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù),并發(fā)送給應(yīng)用服務(wù)器內(nèi)的緩存客戶端。

緩存客戶端接收到第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器發(fā)送的數(shù)據(jù)后,可以將該數(shù)據(jù)寫入本地緩存中。以及,本地緩存將該數(shù)據(jù)返回給處理模塊,由處理模塊返回給調(diào)用方。

s206:應(yīng)用服務(wù)器在數(shù)據(jù)庫(kù)中獲取該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù)。

例如,如果本地緩存和遠(yuǎn)程分布式緩存中都沒(méi)有該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù)時(shí),緩存模塊會(huì)向處理模塊返回結(jié)果是空的消息。

處理模塊接收到該結(jié)果是空的消息后,向數(shù)據(jù)庫(kù)發(fā)送攜帶該數(shù)據(jù)id的讀請(qǐng)求,數(shù)據(jù)庫(kù)可以根據(jù)存儲(chǔ)的數(shù)據(jù)id與數(shù)據(jù)間的對(duì)應(yīng)關(guān)系,獲取該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù)并返回給應(yīng)用服務(wù)器中的處理模塊。

s207:應(yīng)用服務(wù)器將該數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存中。

例如,處理模塊接收到數(shù)據(jù)庫(kù)返回的數(shù)據(jù)后,將其寫入緩存模塊。緩存模塊在處理時(shí),一方面將該數(shù)據(jù)寫入本地緩存,另一方面,由緩存客戶端計(jì)算路由規(guī)則,確定遠(yuǎn)程分布式緩存系統(tǒng)中對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器,并將該數(shù)據(jù)寫入對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器。

本實(shí)施例中,通過(guò)在本地緩存和遠(yuǎn)程分布式緩存中都沒(méi)有存儲(chǔ)需要的數(shù)據(jù)時(shí),從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),并寫入本地緩存和遠(yuǎn)程分布式緩存,可以實(shí)現(xiàn)二級(jí)緩存,以便在讀取數(shù)據(jù)時(shí),可以先從本地緩存中讀取,避免將讀取數(shù)據(jù)的請(qǐng)求集中到遠(yuǎn)場(chǎng)分布式緩存中,保證業(yè)務(wù)順利運(yùn)行。另外,當(dāng)遠(yuǎn)程分布式緩存中存儲(chǔ)有本地緩存中沒(méi)有的數(shù)據(jù)時(shí),可以從遠(yuǎn)程分布式緩存中獲取數(shù)據(jù)并寫入本地緩存中,以方便后續(xù)從本地緩存中獲取數(shù)據(jù)。另外,在本地緩存中對(duì)使用頻率低于預(yù)設(shè)值的數(shù)據(jù)進(jìn)行過(guò)期處理,可以使得熱點(diǎn)數(shù)據(jù)在本地大量的緩存,降低對(duì)遠(yuǎn)程分布式緩存的訪問(wèn)。

在數(shù)據(jù)存儲(chǔ)后,會(huì)出現(xiàn)數(shù)據(jù)更新的情況,在發(fā)生數(shù)據(jù)更新時(shí),可以采用如下的方式失效本地緩存和遠(yuǎn)程分布式緩存中的數(shù)據(jù)。

圖4是本申請(qǐng)一個(gè)實(shí)施例提出的失效緩存中的數(shù)據(jù)的流程示意圖。圖5是圖4對(duì)應(yīng)的系統(tǒng)交互示意圖。

參見(jiàn)圖4,本實(shí)施例的方法包括:

s401:應(yīng)用服務(wù)器在數(shù)據(jù)發(fā)生更新后,更新數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)。

其中,數(shù)據(jù)更新可以是由應(yīng)用(app)發(fā)起的,某個(gè)app在數(shù)據(jù)更新后,可以將更新后的數(shù)據(jù)發(fā)送給應(yīng)用服務(wù)器的處理模塊,處理模塊接收到更新后的數(shù)據(jù)后,更新數(shù)據(jù)庫(kù)中相應(yīng)的數(shù)據(jù)。

例如,第一數(shù)據(jù)id的數(shù)據(jù)發(fā)生了更新(由a更新為a’),則應(yīng)用服務(wù)器 可以向數(shù)據(jù)庫(kù)發(fā)送寫請(qǐng)求,寫請(qǐng)求中包括第一數(shù)據(jù)id和更新后的數(shù)據(jù)a’,數(shù)據(jù)庫(kù)接收到該寫請(qǐng)求后,將第一數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù)從a更新為a’。

在數(shù)據(jù)發(fā)生更新后,應(yīng)用服務(wù)器一方面可以更新數(shù)據(jù)庫(kù)中的數(shù)據(jù),另一方面,還可以對(duì)本地緩存和遠(yuǎn)程分布式緩存中存儲(chǔ)的發(fā)生更新的數(shù)據(jù)進(jìn)行失效處理。具體的失效處理的流程可以包括:

s402:應(yīng)用服務(wù)器向消息服務(wù)器發(fā)送數(shù)據(jù)更新的變動(dòng)通知。

其中,變動(dòng)通知中可以攜帶發(fā)生更新的數(shù)據(jù)id,如第一數(shù)據(jù)發(fā)生更新,則可以攜帶第一數(shù)據(jù)的數(shù)據(jù)id,假設(shè)用第一數(shù)據(jù)id表示。

s403:消息服務(wù)器向所有的應(yīng)用服務(wù)器發(fā)送組播消息。

其中,消息服務(wù)器接收到上述的變動(dòng)通知后,以組播方式向所有應(yīng)用服務(wù)器發(fā)送用于指示數(shù)據(jù)失效的消息,以失效相應(yīng)的數(shù)據(jù)。

消息服務(wù)器發(fā)送的組播消息中攜帶發(fā)生變更的數(shù)據(jù)id,如第一數(shù)據(jù)id,以失效第一數(shù)據(jù)。

s404:應(yīng)用服務(wù)器接收到該組播消息后,失效本地緩存中的發(fā)生更新的數(shù)據(jù)。

其中,每個(gè)應(yīng)用服務(wù)器接收到組播消息后,可以從該消息中解析出數(shù)據(jù)id,并在本地緩存中失效該數(shù)據(jù)id及對(duì)應(yīng)的數(shù)據(jù)。

s405:應(yīng)用服務(wù)器失效遠(yuǎn)程分布式緩存中的發(fā)生更新的數(shù)據(jù)。

其中,每個(gè)應(yīng)用服務(wù)器接收到組播消息后,不僅失效本地緩存中的相應(yīng)數(shù)據(jù),還需要對(duì)遠(yuǎn)場(chǎng)分布式緩存中的數(shù)據(jù)進(jìn)行失效處理。

具體的,失效遠(yuǎn)程分布式緩存中的數(shù)據(jù)的流程可以包括:

確定存儲(chǔ)所述數(shù)據(jù)的遠(yuǎn)程分布式緩存中的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器;

向所述數(shù)據(jù)節(jié)點(diǎn)服務(wù)器發(fā)送攜帶所述數(shù)據(jù)的標(biāo)識(shí)的消息,以使所述數(shù)據(jù)節(jié) 點(diǎn)服務(wù)器接收到所述消息后,根據(jù)所述標(biāo)識(shí)失效所述數(shù)據(jù)。

例如,處理模塊接收到組播消息后,向緩存模塊發(fā)送攜帶第一數(shù)據(jù)id的失效指令,緩存模塊接收到該失效指令后,一方面在本地緩存中失效第一數(shù)據(jù)id及對(duì)應(yīng)的第一數(shù)據(jù),另一方面,由緩存模塊中的緩存客戶端確定第一數(shù)據(jù)id屬于的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器(假設(shè)是第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器),則緩存客戶端向第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器發(fā)送攜帶第一數(shù)據(jù)id的失效指令,第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器接收到該失效指令后,失效第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器內(nèi)存儲(chǔ)的第一數(shù)據(jù)id及對(duì)應(yīng)的第一數(shù)據(jù)。

本實(shí)施例以每個(gè)應(yīng)用服務(wù)器都失效遠(yuǎn)程分布式緩存中的數(shù)據(jù)為例,可以理解的是,也可以根據(jù)預(yù)設(shè)算法在所有的應(yīng)用服務(wù)器中確定出一個(gè)應(yīng)用服務(wù)器,由該一個(gè)應(yīng)用服務(wù)器進(jìn)行遠(yuǎn)程分布式緩存中數(shù)據(jù)的失效,而具體的確定某個(gè)應(yīng)用服務(wù)器的算法不限定。

進(jìn)一步的,當(dāng)本地緩存和遠(yuǎn)程分布式緩存中的數(shù)據(jù)都失效后,后續(xù)如果需要讀取該數(shù)據(jù),由于都失效,則無(wú)法從本地緩存和遠(yuǎn)程分布式緩存中讀取到該數(shù)據(jù),之后調(diào)用方需要從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),并寫入本地緩存和遠(yuǎn)程分布式緩存中,從而實(shí)現(xiàn)本地緩存和遠(yuǎn)程分布式緩存中數(shù)據(jù)的更新,并與數(shù)據(jù)庫(kù)中的數(shù)據(jù)保持一致。

本實(shí)施例中,通過(guò)在發(fā)生數(shù)據(jù)更新時(shí),失效本地緩存和遠(yuǎn)程分布式緩存中的相應(yīng)數(shù)據(jù),可以在后續(xù)讀取該數(shù)據(jù)時(shí),重新從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),并將重新讀取的數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存中,實(shí)現(xiàn)了本地緩存和遠(yuǎn)程分布式緩存中的數(shù)據(jù)更新,并和數(shù)據(jù)庫(kù)中的數(shù)據(jù)保持一致。另外,本實(shí)施例在失效數(shù)據(jù)時(shí),通過(guò)消息服務(wù)器采用組播方式進(jìn)行消息推送,可以提高處理效率。

圖6是本申請(qǐng)一個(gè)實(shí)施例提出的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖。

本實(shí)施例的裝置可以位于應(yīng)用服務(wù)器中。具體可以對(duì)應(yīng)上述實(shí)施例中的處理模塊。

參見(jiàn)圖6,該裝置60包括:接收模塊61、查詢模塊62、讀取模塊63和寫入模塊64。

接收模塊61用于接收用于讀取數(shù)據(jù)的讀請(qǐng)求。

例如,調(diào)用方需要讀取數(shù)據(jù)時(shí),可以向應(yīng)用服務(wù)器(appserver)發(fā)送讀請(qǐng)求。

查詢模塊62用于在本地緩存和遠(yuǎn)程分布式緩存中查詢所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)。

其中,數(shù)據(jù)在存儲(chǔ)時(shí)可以對(duì)應(yīng)存儲(chǔ)數(shù)據(jù)的標(biāo)識(shí)和具體內(nèi)容的數(shù)據(jù),讀請(qǐng)求中可以攜帶數(shù)據(jù)的標(biāo)識(shí)(數(shù)據(jù)id),從而可以在存儲(chǔ)的數(shù)據(jù)中查詢是否存在讀請(qǐng)求中攜帶的標(biāo)識(shí),以及,在存儲(chǔ)該數(shù)據(jù)id時(shí)根據(jù)上述的對(duì)應(yīng)關(guān)系,獲取對(duì)應(yīng)的數(shù)據(jù)。

可選的,查詢模塊62具體用于:

先在本地緩存中查詢所述讀請(qǐng)求對(duì)應(yīng)的數(shù)據(jù);

如果本地緩存中不存在所述數(shù)據(jù),則在遠(yuǎn)程分布式緩存中查詢所述數(shù)據(jù)。

例如,調(diào)用方在需要讀取數(shù)據(jù)時(shí),在讀請(qǐng)求中可以攜帶數(shù)據(jù)id,應(yīng)用服務(wù)器接收到讀請(qǐng)求后,可以先在本地緩存中查詢是否存儲(chǔ)該數(shù)據(jù)id,如果沒(méi)有存儲(chǔ),則可以在遠(yuǎn)程分布式緩存中查詢是否存在該數(shù)據(jù)id,如果也沒(méi)有存儲(chǔ),可以確定本地緩存和遠(yuǎn)程分布式緩存都沒(méi)有存儲(chǔ)調(diào)用方需要讀取的數(shù)據(jù)。

讀取模塊63用于如果本地緩存和遠(yuǎn)程分布式緩存中都沒(méi)有存儲(chǔ)所述數(shù)據(jù),則從數(shù)據(jù)庫(kù)中讀取所述數(shù)據(jù)。

應(yīng)用服務(wù)器在確定本地緩存和遠(yuǎn)程分布式緩存中都沒(méi)有存儲(chǔ)調(diào)用方需要 的數(shù)據(jù)時(shí),可以向數(shù)據(jù)庫(kù)發(fā)送攜帶該數(shù)據(jù)id的讀請(qǐng)求,以從數(shù)據(jù)庫(kù)中讀取該數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù),獲取調(diào)用方需要的數(shù)據(jù)。

寫入模塊64用于在讀取到所述數(shù)據(jù)后,將所述數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存中。

應(yīng)用服務(wù)器在從數(shù)據(jù)庫(kù)中讀取到該數(shù)據(jù)后,以二級(jí)緩存的方式,在本地緩存和遠(yuǎn)程分布式緩存中都存儲(chǔ)該數(shù)據(jù)。

另外,一些實(shí)施例中,本地緩存用于:如果遠(yuǎn)程分布式緩存中存在所述數(shù)據(jù),從遠(yuǎn)程分布式緩存中獲取并存儲(chǔ)所述數(shù)據(jù)。

一些實(shí)施例中,參見(jiàn)圖7,該裝置60還包括:

更新模塊65,用于在所述數(shù)據(jù)發(fā)生更新后,更新數(shù)據(jù)庫(kù)中存儲(chǔ)的所述數(shù)據(jù)。

其中,數(shù)據(jù)更新可以是由應(yīng)用(app)發(fā)起的,某個(gè)app在數(shù)據(jù)更新后,可以將更新后的數(shù)據(jù)發(fā)送給應(yīng)用服務(wù)器的處理模塊,處理模塊接收到更新后的數(shù)據(jù)后,更新數(shù)據(jù)庫(kù)中相應(yīng)的數(shù)據(jù)。

例如,第一數(shù)據(jù)id的數(shù)據(jù)發(fā)生了更新(由a更新為a’),則應(yīng)用服務(wù)器可以向數(shù)據(jù)庫(kù)發(fā)送寫請(qǐng)求,寫請(qǐng)求中包括第一數(shù)據(jù)id和更新后的數(shù)據(jù)a’,數(shù)據(jù)庫(kù)接收到該寫請(qǐng)求后,將第一數(shù)據(jù)id對(duì)應(yīng)的數(shù)據(jù)從a更新為a’。

失效模塊66,用于對(duì)本地緩存和遠(yuǎn)程分布式緩存中存儲(chǔ)的所述數(shù)據(jù)進(jìn)行失效處理。

在數(shù)據(jù)發(fā)生更新后,應(yīng)用服務(wù)器一方面可以更新數(shù)據(jù)庫(kù)中的數(shù)據(jù),另一方面,還可以對(duì)本地緩存和遠(yuǎn)程分布式緩存中存儲(chǔ)的發(fā)生更新的數(shù)據(jù)進(jìn)行失效處理。

進(jìn)一步的,參見(jiàn)圖7,失效模塊66包括:

第一單元661,用于向消息服務(wù)器發(fā)送數(shù)據(jù)更新的變動(dòng)通知,以使所述消息服務(wù)器接收到所述變動(dòng)通知后,向所有應(yīng)用服務(wù)器發(fā)送組播消息。

其中,變動(dòng)通知中可以攜帶發(fā)生更新的數(shù)據(jù)id,如第一數(shù)據(jù)發(fā)生更新,則可以攜帶第一數(shù)據(jù)的數(shù)據(jù)id,假設(shè)用第一數(shù)據(jù)id表示。

其中,消息服務(wù)器接收到上述的變動(dòng)通知后,以組播方式向所有應(yīng)用服務(wù)器發(fā)送用于指示數(shù)據(jù)失效的消息,以失效相應(yīng)的數(shù)據(jù)。

消息服務(wù)器發(fā)送的組播消息中攜帶發(fā)生變更的數(shù)據(jù)id,如第一數(shù)據(jù)id,以失效第一數(shù)據(jù)。

第二單元662,用于接收到所述組播消息后失效本地緩存中存儲(chǔ)的所述數(shù)據(jù)。

其中,每個(gè)應(yīng)用服務(wù)器接收到組播消息后,可以從該消息中解析出數(shù)據(jù)id,并在本地緩存中失效該數(shù)據(jù)id及對(duì)應(yīng)的數(shù)據(jù)。

第三單元663,用于失效遠(yuǎn)程分布式緩存中存儲(chǔ)的所述數(shù)據(jù)。

其中,每個(gè)應(yīng)用服務(wù)器接收到組播消息后,不僅失效本地緩存中的相應(yīng)數(shù)據(jù),還需要對(duì)遠(yuǎn)場(chǎng)分布式緩存中的數(shù)據(jù)進(jìn)行失效處理。

可選的,所述第三單元663具體用于:

確定存儲(chǔ)所述數(shù)據(jù)的遠(yuǎn)程分布式緩存中的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器;

向所述數(shù)據(jù)節(jié)點(diǎn)服務(wù)器發(fā)送攜帶所述數(shù)據(jù)的標(biāo)識(shí)的消息,以使所述數(shù)據(jù)節(jié)點(diǎn)服務(wù)器接收到所述消息后,根據(jù)所述標(biāo)識(shí)失效所述數(shù)據(jù)。

例如,處理模塊接收到組播消息后,向緩存模塊發(fā)送攜帶第一數(shù)據(jù)id的失效指令,緩存模塊接收到該失效指令后,一方面在本地緩存中失效第一數(shù)據(jù)id及對(duì)應(yīng)的第一數(shù)據(jù),另一方面,由緩存模塊中的緩存客戶端確定第一數(shù)據(jù)id屬于的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器(假設(shè)是第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器),則緩存客戶端向第 一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器發(fā)送攜帶第一數(shù)據(jù)id的失效指令,第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器接收到該失效指令后,失效第一數(shù)據(jù)節(jié)點(diǎn)服務(wù)器內(nèi)存儲(chǔ)的第一數(shù)據(jù)id及對(duì)應(yīng)的第一數(shù)據(jù)。

進(jìn)一步的,當(dāng)本地緩存和遠(yuǎn)程分布式緩存中的數(shù)據(jù)都失效后,后續(xù)如果需要讀取該數(shù)據(jù),由于都失效,則無(wú)法從本地緩存和遠(yuǎn)程分布式緩存中讀取到該數(shù)據(jù),之后調(diào)用方需要從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),并寫入本地緩存和遠(yuǎn)程分布式緩存中,從而實(shí)現(xiàn)本地緩存和遠(yuǎn)程分布式緩存中數(shù)據(jù)的更新,并與數(shù)據(jù)庫(kù)中的數(shù)據(jù)保持一致。

進(jìn)一步的,本地緩存可以采用lru算法或者采用guava的cache機(jī)制,對(duì)使用頻率低于預(yù)設(shè)值的數(shù)據(jù)進(jìn)行過(guò)期處理。

可以理解的是,本實(shí)施例與上述方法實(shí)施例對(duì)應(yīng),具體內(nèi)容可以參見(jiàn)方法實(shí)施例,在此不再詳細(xì)說(shuō)明。

本實(shí)施例中,通過(guò)將數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存,可以實(shí)現(xiàn)二級(jí)緩存,從而在需要讀取數(shù)據(jù)時(shí)可以先在本地緩存中讀取,避免集中到遠(yuǎn)程分布式緩存中讀取,避免某個(gè)熱點(diǎn)的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的請(qǐng)求出現(xiàn)等待或超時(shí),避免對(duì)業(yè)務(wù)可用性帶來(lái)影響,保證業(yè)務(wù)順利運(yùn)行。

圖8是本申請(qǐng)一個(gè)實(shí)施例提出的數(shù)據(jù)存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖。參見(jiàn)圖8,該系統(tǒng)80包括數(shù)據(jù)存儲(chǔ)裝置81、本地緩存82和遠(yuǎn)程分布式緩存83。

其中,數(shù)據(jù)存儲(chǔ)裝置可以如圖6或圖7所示,本地緩存和遠(yuǎn)程分布式緩存用于存儲(chǔ)數(shù)據(jù)。

進(jìn)一步的,本地緩存可以對(duì)使用頻率低于預(yù)設(shè)值的數(shù)據(jù)進(jìn)行過(guò)期處理,以在本地緩存中積累熱點(diǎn)數(shù)據(jù),降低對(duì)遠(yuǎn)程分布式緩存的訪問(wèn)。

本實(shí)施例中,通過(guò)將數(shù)據(jù)寫入本地緩存和遠(yuǎn)程分布式緩存,可以實(shí)現(xiàn)二級(jí) 緩存,從而在需要讀取數(shù)據(jù)時(shí)可以先在本地緩存中讀取,避免集中到遠(yuǎn)程分布式緩存中讀取,避免某個(gè)熱點(diǎn)的數(shù)據(jù)節(jié)點(diǎn)服務(wù)器的請(qǐng)求出現(xiàn)等待或超時(shí),避免對(duì)業(yè)務(wù)可用性帶來(lái)影響,保證業(yè)務(wù)順利運(yùn)行。

需要說(shuō)明的是,在本申請(qǐng)的描述中,術(shù)語(yǔ)“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性。此外,在本申請(qǐng)的描述中,除非另有說(shuō)明,“多個(gè)”的含義是指至少兩個(gè)。

流程圖中或在此以其他方式描述的任何過(guò)程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過(guò)程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本申請(qǐng)的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來(lái)執(zhí)行功能,這應(yīng)被本申請(qǐng)的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。

應(yīng)當(dāng)理解,本申請(qǐng)的各部分可以用硬件、軟件、固件或它們的組合來(lái)實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來(lái)實(shí)現(xiàn)。例如,如果用硬件來(lái)實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來(lái)實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(pga),現(xiàn)場(chǎng)可編程門陣列(fpga)等。

本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。

此外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。

上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。

在本說(shuō)明書的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本申請(qǐng)的至少一個(gè)實(shí)施例或示例中。在本說(shuō)明書中,對(duì)上述術(shù)語(yǔ)的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。

盡管上面已經(jīng)示出和描述了本申請(qǐng)的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本申請(qǐng)的限制,本領(lǐng)域的普通技術(shù)人員在本申請(qǐng)的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
主站蜘蛛池模板: 渭南市| 成武县| 尼勒克县| 固阳县| 西和县| 手游| 合山市| 尼勒克县| 延寿县| 福泉市| 青州市| 万州区| 永仁县| 尼勒克县| 汉阴县| 南投市| 新绛县| 砀山县| 安阳县| 柳州市| 水城县| 施秉县| 垫江县| 什邡市| 上饶市| 南丰县| 龙海市| 临泉县| 高邮市| 乌海市| 富蕴县| 华坪县| 阿坝县| 中山市| 鄱阳县| 三河市| 三都| 敦煌市| 合川市| 白山市| 特克斯县|