本發(fā)明涉及分布式計算領(lǐng)域,尤其涉及分布式緩存服務(wù)實現(xiàn)方法、裝置、終端、服務(wù)器及系統(tǒng)。
背景技術(shù):
分布式緩存服務(wù)使用獨(dú)立的集群服務(wù)集中緩存數(shù)據(jù),因此提供了很好的系統(tǒng)水平擴(kuò)展能力、高吞吐量以及高容災(zāi)性,業(yè)界已經(jīng)有許多非常成熟的分布式緩存產(chǎn)品例如ehcache、redis等。
然而,這些分布式緩存產(chǎn)品并沒有在客戶端提供具體的實現(xiàn)邏輯,即用戶需要以這些分布式緩存產(chǎn)品為基礎(chǔ)組件而自行實現(xiàn)本地緩存服務(wù)并且需要由用戶自主維護(hù)本地數(shù)據(jù)與遠(yuǎn)程服務(wù)器中數(shù)據(jù)的一致性,從而加大了用戶的使用難度。此外,用戶每次對數(shù)據(jù)的訪問必須通過網(wǎng)絡(luò)交互來完成,這帶來一定的讀時延開銷。
技術(shù)實現(xiàn)要素:
為了解決上述技術(shù)問題,本發(fā)明提出了分布式緩存服務(wù)實現(xiàn)方法、裝置、終端、服務(wù)器及系統(tǒng)。本發(fā)明具體是以如下技術(shù)方案實現(xiàn)的:
第一方面,一種分布式緩存服務(wù)實現(xiàn)方法,所述方法包括:
第一客戶端獲取緩存策略,所述緩存策略包括緩存監(jiān)聽策略;根據(jù)所述緩存策略生成緩存配置信息并將所述緩存配置信息發(fā)送至服務(wù)器,所述緩存配置信息包括第一客戶端的標(biāo)識和所述緩存監(jiān)聽策略;第一客戶端根據(jù)所述緩存策略向用戶提供緩存服務(wù),并響應(yīng)于本地緩存的數(shù)據(jù)的變動向服務(wù)器發(fā)送同步通知;
服務(wù)器獲取緩存配置信息并更新緩存配置表,所述緩存配置表用于記錄客戶端和緩存監(jiān)聽策略之間的對應(yīng)關(guān)系;接收客戶端發(fā)布的同步通知并根據(jù)所述同步通知更新本地數(shù)據(jù);根據(jù)所述緩存配置表獲取目標(biāo)客戶端,向所述目標(biāo)客戶端發(fā)布同步指令。
第二方面,一種分布式緩存服務(wù)實現(xiàn)方法,所述方法包括:
獲取緩存策略,所述緩存策略包括緩存監(jiān)聽策略;
根據(jù)所述緩存策略生成緩存配置信息并將所述緩存配置信息發(fā)送至服務(wù)器,所述緩存配置信息包括第一客戶端的標(biāo)識和所述緩存監(jiān)聽策略;
根據(jù)所述緩存策略向用戶提供緩存服務(wù),并響應(yīng)于本地緩存的數(shù)據(jù)的變動向服務(wù)器發(fā)送同步通知。
第三方面,一種分布式緩存服務(wù)實現(xiàn)方法,所述方法包括:
獲取緩存配置信息并更新緩存配置表,所述緩存配置表用于記錄客戶端和緩存監(jiān)聽策略之間的對應(yīng)關(guān)系;
接收客戶端在提供緩存服務(wù)的過程中發(fā)布的同步通知并根據(jù)所述同步通知更新本地數(shù)據(jù);
根據(jù)所述緩存配置表獲取目標(biāo)客戶端,向所述目標(biāo)客戶端發(fā)布根據(jù)所述同步通知生成的同步指令。
第四方面,一種分布式緩存服務(wù)實現(xiàn)裝置,所述裝置包括:
緩存配置管理模塊,用于獲取緩存配置信息并更新緩存配置表,所述緩存配置表用于記錄客戶端和緩存監(jiān)聽策略之間的對應(yīng)關(guān)系;
同步模塊,用于接收客戶端在提供緩存服務(wù)的過程中發(fā)布的同步通知并根據(jù)所述同步通知更新本地數(shù)據(jù);
同步指令發(fā)布模塊,用于根據(jù)所述緩存配置表獲取目標(biāo)客戶端,向所述目標(biāo)客戶端發(fā)布根據(jù)所述同步通知生成的同步指令以使得所述目標(biāo)客戶端本地緩存的數(shù)據(jù)能夠同步被更新。
第五方面,一種分布式緩存服務(wù)實現(xiàn)裝置,所述裝置包括:
緩存策略獲取模塊,用于獲取緩存策略,所述緩存策略包括緩存監(jiān)聽策略;
配置信息處理模塊,用于根據(jù)所述緩存策略生成緩存配置信息并將所述緩存配置信息發(fā)送至服務(wù)器,所述緩存配置信息包括第一客戶端的標(biāo)識和所述緩存監(jiān)聽策略;
緩存服務(wù)模塊,用于根據(jù)所述緩存策略向用戶提供緩存服務(wù),并響應(yīng)于本地緩存的數(shù)據(jù)的變動向服務(wù)器發(fā)送同步通知。
第六方面,一種分布式緩存服務(wù)實現(xiàn)系統(tǒng),所述系統(tǒng)包括上述兩種分布式緩存服務(wù)實現(xiàn)裝置。
本發(fā)明提供了分布式緩存服務(wù)實現(xiàn)方法、裝置、終端、服務(wù)器及系統(tǒng),具有如下有益效果:
本發(fā)明混合了本地緩存(客戶端)和遠(yuǎn)端分布式緩存(服務(wù)器)提出了一種新的緩存服務(wù)實現(xiàn)方案,本發(fā)明提供的緩存服務(wù)實現(xiàn)方案中允許用戶在某些業(yè)務(wù)場景下將緩存數(shù)據(jù)前移到用戶進(jìn)程空間內(nèi)(即本地緩存)以獲得較高的讀寫性能,同時通過設(shè)置緩存監(jiān)聽策略和事務(wù)技術(shù)保證本地緩存的數(shù)據(jù)與遠(yuǎn)端分布式緩存中數(shù)據(jù)的一致性。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它附圖。
圖1是本發(fā)明實施例提供的分布式緩存服務(wù)實現(xiàn)方法的應(yīng)用環(huán)境圖;
圖2是本發(fā)明實施例提供的分布式緩存服務(wù)實現(xiàn)方法流程圖;
圖3是本發(fā)明實施例提供的現(xiàn)有技術(shù)中的數(shù)據(jù)訪問示意圖;
圖4是本發(fā)明實施例提供的基于分布式緩存服務(wù)實現(xiàn)方法的數(shù)據(jù)訪問示意圖;
圖5是本發(fā)明實施例提供的另一種分布式緩存服務(wù)實現(xiàn)方法流程圖;
圖6是本發(fā)明實施例提供的客戶端提供讀服務(wù)的方法流程圖;
圖7是本發(fā)明實施例提供的客戶端提供寫服務(wù)的方法流程圖;
圖8是本發(fā)明實施例提供的一種分布式緩存服務(wù)實現(xiàn)方法流程圖;
圖9是本發(fā)明實施例提供的服務(wù)器發(fā)布同步指令的方法流程圖;
圖10是本發(fā)明實施例提供的一種分布式緩存服務(wù)實現(xiàn)裝置框圖;
圖11是本發(fā)明實施例提供的同步指令發(fā)布模塊框圖;
圖12是本發(fā)明實施例提供的服務(wù)器結(jié)構(gòu)示意圖;
圖13是本發(fā)明實施例提供的一種分布式緩存服務(wù)實現(xiàn)裝置框圖;
圖14是本發(fā)明實施例提供的讀服務(wù)單元框圖;
圖15是本發(fā)明實施例提供的寫服務(wù)單元框圖;
圖16是本發(fā)明實施例提供的終端示意圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
本發(fā)明實施例提供了分布式緩存服務(wù)實現(xiàn)方法的應(yīng)用環(huán)境圖,如圖1所示,所述分布式緩存服務(wù)實現(xiàn)方法可以應(yīng)用于由終端110和服務(wù)器集群120構(gòu)成的分布式系統(tǒng)之中。服務(wù)器集群120可以包括多個服務(wù)器節(jié)點。終端110可以有多個,比如終端110(1)和終端110(2)。
通常情況下,在分布式緩存系統(tǒng)中,在單機(jī)或?qū)?shù)據(jù)一致性要求不高的使用場景下,可以由用戶自己在客戶端實現(xiàn)一套內(nèi)存駐留緩存服務(wù)來提高客戶端的讀性能,通常的做法是在用戶進(jìn)程空間中開辟一個內(nèi)存堆管理緩存數(shù)據(jù),或者基于第三方緩存組件(例如memcached)自行實現(xiàn)緩存管理邏輯。由于現(xiàn)有的第三方緩存組件均沒有統(tǒng)一的接口規(guī)范,而用戶又需要自行實現(xiàn)大部分的緩存管理工作,從而導(dǎo)致用戶實現(xiàn)緩存管理的學(xué)習(xí)成本過高,影響了用戶的緩存使用的體驗效果。進(jìn)一步地,現(xiàn)有的緩存組件也難以支持多客戶端對服務(wù)器數(shù)據(jù)的并發(fā)讀寫,難以維護(hù)客戶端本地與服務(wù)器中數(shù)據(jù)的一致性。
為在上述的使用場景中提升用戶的緩存使用的體驗效果,并維護(hù)客戶端本地與服務(wù)器中數(shù)據(jù)的一致性,本發(fā)明實施例提供分布式緩存服務(wù)實現(xiàn)方法,所述方法可以應(yīng)用于如圖1所示的應(yīng)用環(huán)境之中。
所述方法如圖2所示,具體包括:
s101.第一客戶端獲取緩存策略,所述緩存策略包括緩存監(jiān)聽策略。
具體地,服務(wù)器可以同時與多個客戶端進(jìn)行數(shù)據(jù)通信,也可以并發(fā)為多個客戶端提供數(shù)據(jù)服務(wù),而第一客戶端僅泛指與服務(wù)器存在數(shù)據(jù)通信的某一個客戶端。第一客戶端內(nèi)部可配置緩存策略。
s102.第一客戶端根據(jù)所述緩存策略生成緩存配置信息并將所述緩存配置信息發(fā)送至服務(wù)器。
所述緩存配置信息包括第一客戶端的標(biāo)識和所述緩存監(jiān)聽策略。
步驟s102即相當(dāng)于第一客戶端將自身的緩存監(jiān)聽策略向服務(wù)器進(jìn)行注冊的步驟,其目的在于服務(wù)器獲悉第一客戶端的緩存監(jiān)聽策略后,即可按照第一客戶端的緩存監(jiān)聽策略為第一客戶端提供緩存監(jiān)聽服務(wù)(向第一客戶端發(fā)布同步指令)。
s103.服務(wù)器獲取緩存配置信息并更新緩存配置表,所述緩存配置表用于記錄客戶端和緩存監(jiān)聽策略之間的對應(yīng)關(guān)系。
需要服務(wù)器為其提供緩存監(jiān)聽服務(wù)的客戶端均會向服務(wù)器進(jìn)行注冊(步驟s102),服務(wù)器可以統(tǒng)一使用緩存配置表對各個服務(wù)端的緩存監(jiān)聽策略進(jìn)行管理,因此緩存配置表用于記錄客戶端和緩存監(jiān)聽策略之間的對應(yīng)關(guān)系。
s104.第一客戶端根據(jù)所述緩存策略向用戶提供緩存服務(wù),并響應(yīng)于本地緩存的數(shù)據(jù)的變動向服務(wù)器發(fā)送同步通知。
不論第一客戶端設(shè)置了何種緩存監(jiān)聽策略,第一客戶端均可以監(jiān)聽本地緩存數(shù)據(jù)的變動,將所述變動同步通知至服務(wù)器。其目的在于,始終保持服務(wù)器中的數(shù)據(jù)為最新數(shù)據(jù)。
s105.接收客戶端發(fā)布的同步通知并根據(jù)所述同步通知更新本地數(shù)據(jù)。
s106.根據(jù)所述緩存配置表獲取目標(biāo)客戶端,向所述目標(biāo)客戶端發(fā)布同步指令以使得所述目標(biāo)客戶端本地緩存的數(shù)據(jù)能夠同步被更新。
若在步驟s105中服務(wù)器中的數(shù)據(jù)被某一個客戶端發(fā)布的同步通知改變,則服務(wù)器即可根據(jù)各個客戶端注冊的緩存監(jiān)聽策略,向需要感知服務(wù)器中數(shù)據(jù)變動的客戶端(目標(biāo)客戶端)發(fā)布同步指令以使得目標(biāo)客戶端的數(shù)據(jù)能夠同步被更新,從而維護(hù)了目標(biāo)客戶端與服務(wù)器之間的數(shù)據(jù)一致性。
本發(fā)明實施例可以用于在客戶端本地緩存熱點數(shù)據(jù)以提高客戶端本地的數(shù)據(jù)讀性能,因此,本實施例中給出其推薦的幾個主要應(yīng)用場景:(1)數(shù)據(jù)訪問過程中讀多寫少的業(yè)務(wù);(2)數(shù)據(jù)訪問過程中只讀不寫的業(yè)務(wù);(3)數(shù)據(jù)訪問過程中具有讀寫親和性的業(yè)務(wù)。數(shù)據(jù)的讀寫會根據(jù)預(yù)設(shè)的算法被路由到同一個進(jìn)程進(jìn)行處理的業(yè)務(wù)即為具有讀寫親和性的業(yè)務(wù)。比如,通常情況下,在某些游戲業(yè)務(wù)中,賬號類和會話類的數(shù)據(jù)的訪問業(yè)務(wù)為具有讀寫親和性的業(yè)務(wù),相應(yīng)地,賬號類和會話類的數(shù)據(jù)也是具有親和性的數(shù)據(jù)。使用現(xiàn)有技術(shù)在分布式系統(tǒng)中進(jìn)行對于賬號類和會話類的數(shù)據(jù)的訪問如圖3所示,而使用本發(fā)明實施例中的方法來訪問賬號類和會話類如圖4所示,可見,在本發(fā)明所提供的方法中可以將賬號類和會話類數(shù)據(jù)前移至用戶的進(jìn)程空間,從而實現(xiàn)了客戶端對于這類數(shù)據(jù)的高效讀,進(jìn)一步地,在對這類數(shù)據(jù)寫操作中,客戶端還可與服務(wù)器實時保持?jǐn)?shù)據(jù)一致性。
進(jìn)一步地,本實施例中著重描述緩存監(jiān)聽策略的具體分類以及在緩存服務(wù)實現(xiàn)過程中的使用方法。
所述緩存監(jiān)聽策略包括無監(jiān)聽器模式、本地數(shù)據(jù)監(jiān)聽模式、全緩存監(jiān)聽模式和自動模式;
所述無監(jiān)聽器模式下,第一客戶端根據(jù)本地緩存的數(shù)據(jù)的變動向服務(wù)器發(fā)送同步通知,但不接收服務(wù)器發(fā)布的同步指令。若某個客戶端被注冊為無監(jiān)聽器模式,則服務(wù)器不向所述客戶端發(fā)布同步指令。
所述本地數(shù)據(jù)監(jiān)聽模式和全緩存監(jiān)聽模式下,第一客戶端根據(jù)本地緩存的數(shù)據(jù)的變動向服務(wù)器發(fā)送同步通知;接收服務(wù)器發(fā)布的同步指令,并根據(jù)所述同步指令變更本地緩存的數(shù)據(jù)。
若某個客戶端被注冊為本地數(shù)據(jù)監(jiān)聽模式,則服務(wù)器監(jiān)聽目標(biāo)數(shù)據(jù),當(dāng)目標(biāo)數(shù)據(jù)發(fā)生變動時向所述客戶端發(fā)布同步指令;所述目標(biāo)數(shù)據(jù)為存儲于服務(wù)器中并需要與所述客戶端本地緩存的數(shù)據(jù)保持一致的數(shù)據(jù)。
若某個客戶端被注冊為全緩存監(jiān)聽模式,則服務(wù)器監(jiān)聽服務(wù)器中的全部數(shù)據(jù),當(dāng)服務(wù)器中的數(shù)據(jù)發(fā)生變動時向所述客戶端發(fā)布同步指令。
若某個客戶端被注冊為自動模式,則服務(wù)器按照本地數(shù)據(jù)監(jiān)聽模式或全緩存監(jiān)聽模式為客戶端發(fā)布同步指令,并能夠自動在本地數(shù)據(jù)監(jiān)聽模式和全緩存監(jiān)聽模式之間進(jìn)行切換。即緩存監(jiān)聽策略設(shè)置為自動模式的客戶端,其實際使用的緩存監(jiān)聽策略能夠被服務(wù)器在本地數(shù)據(jù)監(jiān)聽模式和全緩存監(jiān)聽模式之間自動切換。
具體地,服務(wù)器可以根據(jù)自身的具體運(yùn)行情況對注冊為自動模式的客戶端的具體緩存監(jiān)聽策略進(jìn)行自動切換。
在一個可行的實時例中,服務(wù)器根據(jù)其參與緩存服務(wù)的數(shù)據(jù)的統(tǒng)計量進(jìn)行自動切換。若統(tǒng)計量過高,則切換為本地監(jiān)聽模式;若統(tǒng)計量較低,則切換為全緩存監(jiān)聽模式。
在另一個可行的實時例中,服務(wù)器根據(jù)自身的運(yùn)行負(fù)荷進(jìn)行自動切換。若運(yùn)行負(fù)荷過高,則切換為本地監(jiān)聽模式;若運(yùn)行負(fù)荷較低,則切換為全緩存監(jiān)聽模式。
本發(fā)明實施例混合了本地緩存(客戶端)和遠(yuǎn)端分布式緩存(服務(wù)器)提出了一種新的緩存服務(wù)實現(xiàn)方案,所述實現(xiàn)方案也可命名為分布式就近緩存方法。本發(fā)明實施例能夠自動為用戶提供邏輯完整的緩存服務(wù),并按照用戶設(shè)定維護(hù)服務(wù)器與客戶端的數(shù)據(jù)的一致性。進(jìn)一步地,本發(fā)明實施例還提供了四種具體的緩存監(jiān)聽策略以滿足用戶在不同場景下對于緩存服務(wù)的需求,提升了用戶體驗。更進(jìn)一步地,本發(fā)明提供的自動模式,可以使得服務(wù)器根據(jù)自身運(yùn)行情況對于其向客戶端提供的同步服務(wù)進(jìn)行調(diào)整,以在不影響用戶體驗的基礎(chǔ)上盡可能降低服務(wù)器負(fù)擔(dān),提升分布式緩存服務(wù)的性能。
本發(fā)明另一個實施例提供一種分布式緩存服務(wù)實現(xiàn)方法,所述方法應(yīng)用于客戶端,如圖5所示,所述方法包括:
s201.獲取緩存策略,所述緩存策略包括緩存監(jiān)聽策略。
具體地,所述緩存策略還包括緩存數(shù)據(jù)淘汰策略、緩存高低水位、緩存計算單位和/或緩存過期時間。客戶端可以根據(jù)緩存數(shù)據(jù)淘汰策略、緩存高低水位、緩存計算單位和/或緩存過期時間自主管理本地緩存的數(shù)據(jù)。
s202.根據(jù)所述緩存策略生成緩存配置信息并將所述緩存配置信息發(fā)送至服務(wù)器,所述緩存配置信息包括第一客戶端的標(biāo)識和所述緩存監(jiān)聽策略。
s203.根據(jù)所述緩存策略向用戶提供緩存服務(wù),并響應(yīng)于本地緩存的數(shù)據(jù)的變動向服務(wù)器發(fā)送同步通知。
具體地,所述根據(jù)所述緩存策略向用戶提供緩存服務(wù)包括向用戶提供數(shù)據(jù)讀服務(wù)和數(shù)據(jù)寫服務(wù)。
具體地,服務(wù)器獲取所述同步通知即可根據(jù)所述同步通知更新服務(wù)器中的數(shù)據(jù),客戶端可以通過兩種同步通知使得服務(wù)器中的數(shù)據(jù)發(fā)生變更。
(1)客戶端根據(jù)本地緩存的數(shù)據(jù)所發(fā)生的寫操作生成同步通知以使得服務(wù)器執(zhí)行相同的寫操作從而實現(xiàn)數(shù)據(jù)變更。
(2)客戶端直接根據(jù)本地緩存變更后的最新數(shù)據(jù)生成同步通知以使得服務(wù)器使用最新數(shù)據(jù)代替舊數(shù)據(jù)從而實現(xiàn)數(shù)據(jù)變更。
請參考圖6,其示出了客戶端提供讀服務(wù)的方法流程圖,包括:
s21.獲取讀取目標(biāo)數(shù)據(jù)的指令。
s22.檢查本地的緩存數(shù)據(jù)是否命中所述目標(biāo)數(shù)據(jù)。
s23.若未命中,則直接向服務(wù)器端請求目標(biāo)數(shù)據(jù)。
s24.若命中,則根據(jù)所述緩存策略判斷所述目標(biāo)數(shù)據(jù)是否為有效數(shù)據(jù);若是,則直接返回所述目標(biāo)數(shù)據(jù);若否,則向服務(wù)器端請求目標(biāo)數(shù)據(jù)。
s25.獲取服務(wù)器端的目標(biāo)數(shù)據(jù)并更新本地的緩存數(shù)據(jù)。
s26.返回所述目標(biāo)數(shù)據(jù)。
請參考圖7,其示出了客戶端提供寫服務(wù)的方法流程圖,包括:
s210.響應(yīng)于寫操作指令,變更本地緩存的數(shù)據(jù)。
s220.生成并向服務(wù)器發(fā)布同步通知,所述同步通知用于將所述寫操作同步至服務(wù)器。
本發(fā)明實施例以客戶端視角提供了一種分布式緩存服務(wù)實現(xiàn)方法,并具體提供了讀服務(wù)方法和寫服務(wù)方法,從而實現(xiàn)了客戶端的緩存管理邏輯,避免了現(xiàn)有技術(shù)中用戶需要實現(xiàn)緩存管理邏輯的弊端,既提升了用戶體驗,又自動實現(xiàn)了客戶端向服務(wù)器的數(shù)據(jù)主動同步,從而保證服務(wù)器中的數(shù)據(jù)始終為最新數(shù)據(jù)。
本發(fā)明另一個實施例提供一種分布式緩存服務(wù)實現(xiàn)方法,所述方法應(yīng)用于服務(wù)器,如圖8所示,所述方法包括:
s301.獲取緩存配置信息并更新緩存配置表,所述緩存配置表用于記錄客戶端和緩存監(jiān)聽策略之間的對應(yīng)關(guān)系。
s302.接收客戶端在提供緩存服務(wù)的過程中發(fā)布的同步通知并根據(jù)所述同步通知更新本地數(shù)據(jù)。
s303.根據(jù)所述緩存配置表獲取目標(biāo)客戶端,向所述目標(biāo)客戶端發(fā)布根據(jù)所述同步通知生成的同步指令。
具體地,服務(wù)器通過發(fā)布同步指令使得收到同步指令的目標(biāo)客戶端可以根據(jù)所述同步指令更新其本地緩存的數(shù)據(jù),具體地,服務(wù)器可以通過兩種同步指令使得目標(biāo)客戶端中的數(shù)據(jù)發(fā)生變更。
(1)服務(wù)器根據(jù)所發(fā)生的寫操作生成同步指令以使得目標(biāo)客戶端執(zhí)行相同的寫操作從而實現(xiàn)數(shù)據(jù)變更。
(2)服務(wù)器直接根據(jù)變更后的最新數(shù)據(jù)生成同步指令以使得目標(biāo)客戶端使用最新數(shù)據(jù)代替舊數(shù)據(jù)從而實現(xiàn)數(shù)據(jù)變更。
請參考圖9,其示出了服務(wù)器發(fā)布同步指令的方法流程圖,包括:
s31.根據(jù)所述緩存配置表獲取目標(biāo)客戶端,并判斷目標(biāo)客戶端是否存在。
具體地,目標(biāo)客戶端即為需要感知服務(wù)器本次發(fā)生的數(shù)據(jù)變動的客戶端。所述目標(biāo)客戶端包括緩存監(jiān)聽策略被設(shè)置為全緩存監(jiān)聽模式的客戶端,以及本地緩存的數(shù)據(jù)中涉及到服務(wù)器本次發(fā)生變動的數(shù)據(jù)的,并且將緩存監(jiān)聽策略設(shè)置為本地數(shù)據(jù)監(jiān)聽模式的客戶端。
s32.若不存在所述目標(biāo)客戶端,則不發(fā)布同步指令。
s33.若存在所述目標(biāo)客戶端,則向緩存監(jiān)聽策略為本地數(shù)據(jù)監(jiān)聽模式的目標(biāo)客戶端以點對點的方式發(fā)布同步指令,向緩存監(jiān)聽策略為全緩存監(jiān)聽模式的客戶端以廣播方式發(fā)布同步指令。
本發(fā)明實施例以服務(wù)器視角提供了一種分布式緩存服務(wù)實現(xiàn)方法,并具體提供了服務(wù)器進(jìn)行數(shù)據(jù)變更監(jiān)聽以及進(jìn)行數(shù)據(jù)同步處理的方法(發(fā)布同步指令的方法),在服務(wù)器角度保證了服務(wù)器與客戶端的數(shù)據(jù)一致性。
本發(fā)明的實施例還提供了一種存儲介質(zhì),所述存儲介質(zhì)可設(shè)置于客戶端和/或服務(wù)器之中以保存用于實現(xiàn)方法實施例中分布式緩存服務(wù)實現(xiàn)方法的程序代碼??蛇x地,在本實施例中,上述存儲介質(zhì)可以位于計算機(jī)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)設(shè)備中的至少一個網(wǎng)絡(luò)設(shè)備??蛇x地,在本實施例中,上述存儲介質(zhì)可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
本發(fā)明還提供一種分布式緩存服務(wù)實現(xiàn)裝置,如圖10所述,所述裝置包括:
緩存配置管理模塊401,用于獲取緩存配置信息并更新緩存配置表,所述緩存配置表用于記錄客戶端和緩存監(jiān)聽策略之間的對應(yīng)關(guān)系??捎糜趫?zhí)行方法實施例s301。
同步模塊402,用于接收客戶端在提供緩存服務(wù)的過程中發(fā)布的同步通知并根據(jù)所述同步通知更新本地數(shù)據(jù)??捎糜趫?zhí)行方法實施例s302。
同步指令發(fā)布模塊403,用于根據(jù)所述緩存配置表獲取目標(biāo)客戶端,向所述目標(biāo)客戶端發(fā)布根據(jù)所述同步通知生成的同步指令以使得所述目標(biāo)客戶端本地緩存的數(shù)據(jù)能夠同步被更新。可用于執(zhí)行方法實施例s303。
具體地,請參考圖11,所述同步指令發(fā)布模塊403包括:
目標(biāo)客戶端獲取單元4031,用于根據(jù)所述緩存配置表獲取目標(biāo)客戶端。可用于執(zhí)行方法實施例s31。
同步指令發(fā)布單元4032,用于若不存在所述目標(biāo)客戶端,則不發(fā)布同步指令;若存在所述目標(biāo)客戶端,則向緩存監(jiān)聽策略為本地數(shù)據(jù)監(jiān)聽模式的目標(biāo)客戶端以點對點的方式發(fā)布同步指令,向緩存監(jiān)聽策略為全緩存監(jiān)聽模式的客戶端以廣播方式發(fā)布同步指令??捎糜趫?zhí)行方法實施例s32-s33。
本發(fā)明的裝置實施例中所述的裝置均與方法實施例基于同樣地發(fā)明構(gòu)思。
具體地,圖12是本發(fā)明實施例提供的一種服務(wù)器結(jié)構(gòu)示意圖,所述服務(wù)器結(jié)構(gòu)可以設(shè)置于上述裝置之中。該服務(wù)器800可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個或一個以上中央處理器(centralprocessingunits,cpu)822(例如,一個或一個以上處理器)和存儲器832,一個或一個以上存儲應(yīng)用程序842或數(shù)據(jù)844的存儲介質(zhì)830(例如一個或一個以上海量存儲設(shè)備)。其中,存儲器832和存儲介質(zhì)830可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)830的程序可以包括一個或一個以上模塊(圖示未示出),每個模塊可以包括對服務(wù)器中的一系列指令操作。更進(jìn)一步地,中央處理器822可以設(shè)置為與存儲介質(zhì)830通信,在服務(wù)器800上執(zhí)行存儲介質(zhì)830中的一系列指令操作。服務(wù)器800還可以包括一個或一個以上電源826,一個或一個以上有線或無線網(wǎng)絡(luò)接口850,一個或一個以上輸入輸出接口858,和/或,一個或一個以上操作系統(tǒng)841,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。上述方法實施例所執(zhí)行的步驟可以基于該圖12所示的服務(wù)器結(jié)構(gòu)。
本發(fā)明還提供一種分布式緩存服務(wù)實現(xiàn)裝置,如圖13所示,所述裝置包括:
緩存策略獲取模塊501,用于獲取緩存策略,所述緩存策略包括緩存監(jiān)聽策略??捎糜趫?zhí)行方法實施例s201。
配置信息處理模塊502,用于根據(jù)所述緩存策略生成緩存配置信息并將所述緩存配置信息發(fā)送至服務(wù)器,所述緩存配置信息包括第一客戶端的標(biāo)識和所述緩存監(jiān)聽策略??捎糜趫?zhí)行方法實施例s202。
緩存服務(wù)模塊503,用于根據(jù)所述緩存策略向用戶提供緩存服務(wù),并響應(yīng)于本地緩存的數(shù)據(jù)的變動向服務(wù)器發(fā)送同步通知??捎糜趫?zhí)行方法實施例s203。
具體地,所述緩存服務(wù)模塊503包括讀服務(wù)單元5031和寫服務(wù)單元5032。
具體地,如圖14所示,讀服務(wù)單元5031包括:
讀取指令獲取模塊50311,用于獲取讀取目標(biāo)數(shù)據(jù)的指令??捎糜趫?zhí)行方法實施例s21。
緩存查詢模塊50312,用于檢查本地的緩存數(shù)據(jù)是否命中所述目標(biāo)數(shù)據(jù)。可用于執(zhí)行方法實施例s22。
讀取指令實現(xiàn)模塊50313,用于若未命中,則直接向服務(wù)器端請求目標(biāo)數(shù)據(jù);若命中,則根據(jù)所述緩存策略判斷所述目標(biāo)數(shù)據(jù)是否為有效數(shù)據(jù);若是,則直接返回所述目標(biāo)數(shù)據(jù);若否,則向服務(wù)器端請求目標(biāo)數(shù)據(jù)??捎糜趫?zhí)行方法實施例s23-s24。
遠(yuǎn)程數(shù)據(jù)讀取結(jié)果處理模塊50314,用于獲取服務(wù)器端的目標(biāo)數(shù)據(jù)并更新本地的緩存數(shù)據(jù);返回所述目標(biāo)數(shù)據(jù)。可用于執(zhí)行方法實施例s25-s26。
具體地,如圖15所示,寫服務(wù)單元5032包括:
變更模塊50321,用于響應(yīng)于寫操作指令,變更本地緩存的數(shù)據(jù)??捎糜趫?zhí)行方法實施例s210。
同步通知處理模塊50322,用于生成并向服務(wù)器發(fā)布同步通知,所述同步通知用于將所述寫操作同步至服務(wù)器??捎糜趫?zhí)行方法實施例s220。
本發(fā)明的裝置實施例中所述的裝置均與方法實施例基于同樣地發(fā)明構(gòu)思。
參見圖16,本發(fā)明實施例提供了一種終端,該終端可以用于實施上述實施例中提供的分布式緩存服務(wù)實現(xiàn)方法。具體來講:
所述終端可以包括rf(radiofrequency,射頻)電路110、包括有一個或一個以上計算機(jī)可讀存儲介質(zhì)的存儲器120、輸入單元130、顯示單元140、傳感器150、音頻電路160、wifi(wirelessfidelity,無線保真)模塊170、包括有一個或者一個以上處理核心的處理器180、以及電源190等部件。本領(lǐng)域技術(shù)人員可以理解,圖16中示出的終端結(jié)構(gòu)并不構(gòu)成對終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:
rf電路110可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,交由一個或者一個以上處理器180處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,rf電路110包括但不限于天線、至少一個放大器、調(diào)諧器、一個或多個振蕩器、用戶身份模塊(sim)卡、收發(fā)信機(jī)、耦合器、lna(lownoiseamplifier,低噪聲放大器)、雙工器等。此外,rf電路110還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。所述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于gsm(globalsystemofmobilecommunication,全球移動通訊系統(tǒng))、gprs(generalpacketradioservice,通用分組無線服務(wù))、cdma(codedivisionmultipleaccess,碼分多址)、wcdma(widebandcodedivisionmultipleaccess,寬帶碼分多址)、lte(longtermevolution,長期演進(jìn))、電子郵件、sms(shortmessagingservice,短消息服務(wù))等。
存儲器120可用于存儲軟件程序以及模塊,處理器180通過運(yùn)行存儲在存儲器120的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器120可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、功能所需的應(yīng)用程序等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)所述終端的使用所創(chuàng)建的數(shù)據(jù)等。此外,存儲器120可以包括高速隨機(jī)存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。相應(yīng)地,存儲器120還可以包括存儲器控制器,以提供處理器180和輸入單元130對存儲器120的訪問。
輸入單元130可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號輸入。具體地,輸入單元130可包括觸敏表面131以及其他輸入設(shè)備132。觸敏表面131,也稱為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏表面131上或在觸敏表面131附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置。可選的,觸敏表面131可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點坐標(biāo),再送給處理器180,并能接收處理器180發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實現(xiàn)觸敏表面131。除了觸敏表面131,輸入單元130還可以包括其他輸入設(shè)備132。具體地,其他輸入設(shè)備132可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。
顯示單元140可用于顯示由用戶輸入的信息或提供給用戶的信息以及所述終端的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來構(gòu)成。顯示單元140可包括顯示面板141,可選的,可以采用lcd(liquidcrystaldisplay,液晶顯示器)、oled(organiclight-emittingdiode,有機(jī)發(fā)光二極管)等形式來配置顯示面板141。進(jìn)一步的,觸敏表面131可覆蓋顯示面板141,當(dāng)觸敏表面131檢測到在其上或附近的觸摸操作后,傳送給處理器180以確定觸摸事件的類型,隨后處理器180根據(jù)觸摸事件的類型在顯示面板141上提供相應(yīng)的視覺輸出。雖然在圖5中,觸敏表面131與顯示面板141是作為兩個獨(dú)立的部件來實現(xiàn)輸入和輸入功能,但是在某些實施例中,可以將觸敏表面131與顯示面板141集成而實現(xiàn)輸入和輸出功能。
所述終端還可包括至少一種傳感器150,比如光傳感器、運(yùn)動傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板141的亮度,接近傳感器可在所述終端移動到耳邊時,關(guān)閉顯示面板141和/或背光。作為運(yùn)動傳感器的一種,重力加速度傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別終端姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計姿態(tài)校準(zhǔn))、振動識別相關(guān)功能(比如計步器、敲擊)等;至于所述終端還可配置的陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。
音頻電路160、揚(yáng)聲器161,傳聲器162可提供用戶與所述終端之間的音頻接口。音頻電路160可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P(yáng)聲器161,由揚(yáng)聲器161轉(zhuǎn)換為聲音信號輸出;另一方面,傳聲器162將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路160接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器180處理后,經(jīng)rf電路110以發(fā)送給比如另一終端,或者將音頻數(shù)據(jù)輸出至存儲器120以便進(jìn)一步處理。音頻電路160還可能包括耳塞插孔,以提供外設(shè)耳機(jī)與所述終端的通信。
wifi屬于短距離無線傳輸技術(shù),所述終端通過wifi模塊170可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖16示出了wifi模塊170,但是可以理解的是,其并不屬于所述終端的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。
處理器180是所述終端的控制中心,利用各種接口和線路連接整個終端的各個部分,通過運(yùn)行或執(zhí)行存儲在存儲器120內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器120內(nèi)的數(shù)據(jù),執(zhí)行所述終端的各種功能和處理數(shù)據(jù),從而對終端進(jìn)行整體監(jiān)控??蛇x的,處理器180可包括一個或多個處理核心;優(yōu)選的,處理器180可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖?,上述調(diào)制解調(diào)處理器也可以不集成到處理器180中。
所述終端還包括給各個部件供電的電源190(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器180邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理充電、放電、以及功耗管理等功能。電源190還可以包括一個或一個以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。
盡管未示出,所述終端還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。具體在本實施例中,終端的顯示單元是觸摸屏顯示器,終端還包括有存儲器,以及一個或者一個以上的程序,其中一個或者一個以上程序存儲于存儲器中,且經(jīng)配置以由一個或者一個以上處理器執(zhí)行本發(fā)明中方法實施例中的指令。
本發(fā)明實施例還提供了分布式緩存服務(wù)實現(xiàn)系統(tǒng),所述分布式緩存服務(wù)實現(xiàn)系統(tǒng)由本發(fā)明實施例所提供的至少一個終端和至少一個服務(wù)器構(gòu)成。
需要說明的是:上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。