新四季網

一種分布式系統中客戶端緩存更新的方法和裝置的製作方法

2023-08-12 12:07:11

專利名稱:一種分布式系統中客戶端緩存更新的方法和裝置的製作方法
技術領域:
本發明涉及分布式系統中的信息傳輸技術領域,特別是涉及一種分布式系統中更新客戶端緩存的方法和裝置。

背景技術:
分布式系統是支持分布式處理的系統,是在由通信網絡互聯的多處理機體系結構上執行任務的系統。對於部署在廣域網上的大型分布式軟體系統,一般分為客戶端、服務端、資料庫三層,業務數據一般存儲在資料庫中。客戶端為了讀取業務數據,需要與服務端進行遠程方法調用,服務端再與資料庫通訊,從中獲取業務數據後,再進行若干處理,返回給客戶端。
在Java領域,所述遠程方法調用是一種通信機制,可以在不同的Java虛擬機(JVM,java virtual machine)之間實現對象與對象的通信。JVM可以位於相同或不同計算機上,在多個JVM中,一個JVM中的對象可以調用其它JVM中對象的方法。發起調用的JVM稱為客戶端,接受調用的JVM稱為服務端。
客戶端與服務端的多次遠程方法調用,屬於多次廣域網上的網絡通訊,會受到網絡延時及數據丟包的影響。通訊次數越多,數據量越大,受延時和丟包的影響就越大,總的響應時間就越不穩定。為了減少用戶操作的等待時間,就需要減少客戶端與服務端之間網絡通訊的次數及數據量。為了減少客戶端到服務端的遠程方法調用,現有技術一般採用把部分不經常變化的業務數據緩存在客戶端的方案。
但是緩存在客戶端的數據並不是真正固定不變的,例如,當某個客戶端執行了寫方法後(在遠程調用方法中,讀取服務端數據的方法稱為讀方法,修改服務端數據的方法稱為寫方法),緩存在其他在線客戶端內存中的業務數據已經陳舊了,即與服務端的業務數據不再一致,因此需要更新。再例如,如果一個用戶的權限發生變化,也需要更新這個用戶登錄的所有客戶端的緩存數據,以防止此用戶再訪問自己無權訪問的業務數據。
而一般的現有技術都沒有相應的更新機制,即使各個在線的客戶端中緩存的業務數據存在不一致的情況,需要更新緩存的客戶端也只有重新登錄,才可以獲取最新的業務數據,但該客戶端實際上是無法知悉什麼時候需要更新緩存,所以上述既會使得用戶操作非常不方便(需要多次重新登錄),同時也無法保證緩存數據的及時更新。
在現有技術的另一解決方案中,在每個客戶端提供了一個單獨的「緩存刷新」功能,用戶觸發該功能,就可以直接實現手動的緩存更新,這個方案雖然比上述的重新登錄方式要好一些,但是仍然存在不方便的問題,並且沒有從根本上解決問題,因為手動操作仍然會帶來效率缺陷。
總之,需要本領域技術人員迫切解決的一個技術問題就是如何能夠實現在分布式系統中及時方便的更新客戶端的緩存數據。


發明內容
本發明所要解決的技術問題是提供一種在分布式系統中更新客戶端的緩存數據的方法和系統,能夠及時方便的實現各個客戶端緩存數據的更新,確保連接到同一服務端的所有在線客戶端的緩存數據一致性。
為了解決上述問題,本發明公開了一種更新分布式系統中客戶端緩存數據的方法,包括當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;每隔一定時間,從第一集合中識別出寫操作集合,並將其所涉及的對象類型置於所有登錄用戶的服務端上下文中;接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型;客戶端清空緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
依據本發明的另一實施例,還公開了一種更新分布式系統中客戶端緩存數據的方法,包括當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中;每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中;接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型和用戶標識;如果客戶端的登錄用戶標識存在於所收到的用戶標識中,則該客戶端清空本地全部緩存數據;如果不存在,則客戶端清空緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
優選的,當所述分布式系統採用伺服器集群架構時,該方法還包括通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。
依據本發明的另一實施例,還公開了一種更新分布式系統中客戶端緩存數據的方法,包括當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;每隔一定時間,從第一集合中識別出寫操作集合,將其所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識置於所有登錄用戶的服務端上下文中;所述客戶端的緩存數據按照對象類型進行分區管理;接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識;客戶端依據所獲得的緩存區標識,清空相應緩存區中的數據。
依據本發明的另一實施例,還公開了一種更新分布式系統中客戶端緩存數據的方法,包括當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中;每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中;所述客戶端的緩存數據按照對象類型進行分區管理;接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識和用戶標識;如果客戶端的登錄用戶標識存在於所收到的用戶標識中,則該客戶端清空本地全部緩存數據;如果不存在,則客戶端依據所獲得的緩存區標識,清空相應緩存區中的數據。
優選的,當所述分布式系統採用伺服器集群架構時,該方法還包括通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。
依據本發明的另一實施例,還公開了一種更新分布式系統中客戶端緩存數據的裝置,包括 位於服務端的操作記錄模塊,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中; 位於服務端的寫操作識別模塊,用於每隔一定時間,從第一集合中識別出寫操作集合,並將其所涉及的對象類型置於所有登錄用戶的服務端上下文中; 位於客戶端的輪詢模塊,用於每隔一定時間發起緩存更新的輪詢請求; 位於服務端的上下文模塊,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型; 位於客戶端的清空模塊,用於清空客戶端緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
依據本發明的另一實施例,還公開了一種更新分布式系統中客戶端緩存數據的裝置,包括 位於服務端的普通操作記錄模塊,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中; 位於服務端的用戶權限操作記錄模塊,用於當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中; 位於服務端的操作識別模塊,用於每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中; 位於客戶端的輪詢模塊,用於每隔一定時間發起緩存更新的輪詢請求; 位於服務端的上下文模塊,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型和用戶標識; 位於客戶端的清空模塊,用於當客戶端的登錄用戶標識存在於所收到的用戶標識中時,則清空該客戶端本地全部緩存數據;如果不存在,則客戶端清空緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
優選的,當所述分布式系統採用伺服器集群架構時,該裝置還包括位於服務端的信息通知模塊,用於通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。
依據本發明的另一實施例,還公開了一種更新分布式系統中客戶端緩存數據的裝置,包括 位於服務端的操作記錄模塊,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中; 位於服務端的寫操作識別模塊,用於每隔一定時間,從第一集合中識別出寫操作集合,將其所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識置於所有登錄用戶的服務端上下文中;所述客戶端的緩存數據按照對象類型進行分區管理; 位於客戶端的輪詢模塊,用於每隔一定時間發起緩存更新的輪詢請求; 位於服務端的上下文模塊,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識; 位於客戶端的清空模塊,用於依據所獲得的緩存區標識,清空該客戶端相應緩存區中的數據。
依據本發明的另一實施例,還公開了一種更新分布式系統中客戶端緩存數據的裝置,包括 位於服務端的普通操作記錄模塊,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中; 位於服務端的用戶權限操作記錄模塊,用於當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中; 位於服務端的操作識別模塊,用於每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中;所述客戶端的緩存數據按照對象類型進行分區管理; 位於客戶端的輪詢模塊,用於每隔一定時間發起緩存更新的輪詢請求; 位於服務端的上下文模塊,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識和用戶標識; 位於客戶端的清空模塊,用於當客戶端的登錄用戶標識存在於所收到的用戶標識中時,則清空該客戶端本地全部緩存數據;如果不存在,則客戶端依據所獲得的緩存區標識,清空相應緩存區中的數據。
優選的,當所述分布式系統採用伺服器集群架構時,該裝置還包括位於服務端的信息通知模塊,用於通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。
與現有技術相比,本發明具有以下優點 本發明通過在服務端對寫方法進行監控、並由客戶端發起輪詢以及將客戶端的緩存數據進行分區管理,這些措施的協同工作,可以確保連接到同一服務端的所有在線客戶端的數據一致性。並且,本發明所公開的緩存更新機制,對具體的客戶端和服務端業務邏輯是透明的;也就是說,遠程方法調用發起者和服務者,都不需要維護緩存的更新,非常的簡單方便。
另外,針對由多個應用伺服器組成集群架構的分布式系統而言,本發明也可以通過JGroups組播技術,以確保連接到集群中不同服務端的在線客戶端的數據一致性。



圖1是本發明一種更新分布式系統中客戶端緩存數據的方法實施例1的步驟流程圖; 圖2是本發明一種更新分布式系統中客戶端緩存數據的方法實施例2的步驟流程圖; 圖3是本發明一種更新分布式系統中客戶端緩存數據的方法實施例3的步驟流程圖; 圖4是實施例3中兩個線程的協作示意圖; 圖5是本發明一種更新分布式系統中客戶端緩存數據的方法實施例4的步驟流程圖; 圖6是本發明一種更新分布式系統中客戶端緩存數據的裝置實施例1的結構框圖; 圖7是本發明一種更新分布式系統中客戶端緩存數據的裝置實施例2的結構框圖; 圖8是本發明一種更新分布式系統中客戶端緩存數據的裝置實施例3的結構框圖; 圖9是本發明一種更新分布式系統中客戶端緩存數據的裝置實施例4的結構框圖。

具體實施例方式 為使本發明的上述目的、特徵和優點能夠更加明顯易懂,下面結合附圖和具體實施方式
對本發明作進一步詳細的說明。
本發明可以在由計算機執行的計算機可執行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、對象、組件、數據結構等等。也可以在分布式計算環境中實踐本發明,在這些分布式計算環境中,由通過通信網絡而被連接的遠程處理設備來執行任務。在分布式計算環境中,程序模塊可以位於包括存儲設備在內的本地和遠程計算機存儲介質中。
需要說明的是,所述遠程方法調用是一種計算機之間對象互相調用對方函數,啟動對方進程的一種機制,使用這種機制,某一臺計算機上的對象在調用另外一臺計算機上的方法時,使用的程序語法規則和在本地機上對象間的方法調用的語法規則一樣。這種方式允許程序可以利用分布式計算將工作量分散到多個虛擬機上。遠程方法調用使用戶能訪問在另一主機上的對象,並遠程調用其方法。總之,這種機制給分布計算的系統設計、編程都帶來了極大的方便。其中的「方法」一詞屬於本領域的通用術語,在本發明中,為了避免和傳統意義上的「方法」一詞產生混淆,因此,在本發明的權利要求中將其轉換為「數據處理操作」或者「操作」一詞加以描述,實際上,本領域技術人員應該知悉,二者僅僅是文字上的轉換,其內涵和外延都是一樣的。在說明書的描述中,為了適合本領域技術人員閱讀,仍然採用「方法」一詞進行描述。
本發明的核心思想之一是在服務端對所有的方法調用進行監控,如果是寫方法,則把服務端對象類型寫入當前所有登錄用戶的服務端上下文中,等待客戶端輪詢時取回類型,並清空對應類型的客戶端緩存區。如果服務端存在集群部署,還可以利用JGroups將對象類型通知集群中的所有伺服器節點。此方案對具體的服務端業務邏輯而言是透明的,因而無論是遠程調用的發起者還是服務者,都不需要維護緩存的更新。
參照圖1,示出了本發明一種更新分布式系統中客戶端緩存數據的方法實施例1,可以包括以下步驟 步驟101、當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中。
在後面的詳細說明中,將會直接採用「方法」一詞代替「操作」進行描述。步驟101中的操作標識信息一般的可以是方法名稱或者序號等等。步驟101可以針對服務端的任意一個接口方法的成功執行。
步驟102、每隔一定時間,從第一集合中識別出寫操作集合,並將其所涉及的對象類型置於所有登錄用戶的服務端上下文中;對於識別寫操作的方式可以有很多,簡單而言,就可以通過名稱加以確定。
步驟103、接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型。
步驟104、客戶端清空緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
緩存(Cache)是一種在軟硬體系統中廣泛使用的提升響應性能的技術,主要原理是,從響應較慢的存儲容器讀取數據後,臨時保存在響應較快的存儲容器中,下次再訪問相同的數據時,優先從較快的容器中加載。為了能夠僅僅依據返回的對象類型就完成相應緩存數據的清除,本發明中客戶端的緩存數據是按照對象類型進行分區管理的。根據遠程對象的類型,客戶端緩存劃分為多個緩存區(Cache Region),例如期間、公司、客戶、供應商等等多個緩存區。某個類型的遠程對象是否參與客戶端緩存,可以在運行期由配置文件指定。
需要更新的緩存數據被清空後,當客戶端需要調用該部分數據時,本地緩存中沒有,就可以從服務端獲取最新的數據了,從而實現了緩存數據的更新。
其中,步驟102可以作為服務端的一個線程循環執行,而客戶端發起的輪詢請求和步驟104則可以作為客戶端的一線程循環執行。
本發明中的「對象」一詞也是本領域的通用術語,在本說明書中就不對其進行詳細解釋了。一般的,在Java中,一個類,一個方法,一個變量都可以作為對象,其中,有些對象可以直接去用(比如基本變量類型,或一些靜態的類、方法、變量等),而有些對象不可以直接去用,需要創建這個對象的實例(這樣,既能實現對象的功能,又不會直接破壞對象的構造)。
步驟102和103中的採用的「上下文」也是本領域的一個通用術語,在此也不準備詳細描述。上下文其實是一個抽象的概念,上下文就是一個對象所處的環境,上下文服務就是對象在特定環境下所能得到的服務和它所能提供的服務。可以理解為,上下文屏蔽了服務端線程和客戶端線程的差異,使得業務邏輯的執行好像是在一個線程中執行的。
例如,訪問JNDI的Context(上下文),其上層是JNDI伺服器(可能是遠程的),下層是客戶的應用程式,其作用就是建立一個通道讓你能訪問JNDI伺服器,同時也讓JNDI伺服器接受客戶端的請求,起到交互(或者說通道)作用。
在本發明的另一優選實施例中,所述分布式系統採用了伺服器集群架構,則該方法還可以包括步驟105通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。JGroups是一個開源的純Java的可靠的群組通訊工具。其工作模式基於IP多播,但可以在可靠性和群組成員管理上進行擴展。
集群是一種現有技術它將多個系統連接到一起,使多個系統能夠像一個系統那樣工作。採用集群通常是為了提高系統的穩定性和網絡中心的數據處理能力及服務能力,能夠提供高可用性和可伸縮性。本發明中的集群,主要指多個應用伺服器組成的集群。
在本實施例中,和現有技術相比,增加了客戶端遠程方法調用輪詢,雖然增加了總的網絡通訊次數,但是由於這些通訊一般不在用戶的等待時間內(例如用戶輸入信息或者瀏覽信息時,在後臺執行),而且通訊數據量非常小(僅僅傳輸標識或者類型即可),所以在不影響用戶性能感受的基礎上,還可以及時(例如,設置時間間隔為30秒)方便的實現客戶端緩存的更新。
參照圖2,示出了一種更新分布式系統中客戶端緩存數據的方法實施例2,可以包括以下步驟 步驟201、當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中; 步驟202、當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中; 明顯的,步驟201和202之間並沒有必然的先後順序。
步驟203、每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中; 步驟204、接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型和用戶標識; 步驟205、如果客戶端的登錄用戶標識存在於所收到的用戶標識中,則該客戶端清空本地全部緩存數據;如果不存在,則客戶端清空緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
本發明的實施例2和實施例1的區別在於,實施例2除了針對寫方法的緩存更新,還進一步包括了在用戶權限發生變化的情況下,對客戶端相應緩存數據的更新。即如果某個客戶端登錄用戶的權限發生了變化,則需要及時清空該客戶端中的所有緩存數據;而對於多個在線客戶端輪詢而言,實際上就能夠及時清空權限發生變化的用戶登錄的所有客戶端中的緩存數據。
進一步,當所述分布式系統採用伺服器集群架構時,該方法實施例還可以包括通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。需要說明的是,步驟205與其他步驟之間可以採用並行的方式,並不具有必然的先後順序。
下面通過一個具體例子,並將上面的整個流程分為在服務端執行的步驟和在客戶端執行的步驟兩部分進行描述,以更清楚的說明本發明解決方案的實現。
服務端執行步驟 (1)啟動應用伺服器時,啟動一個緩存清除通告線程CacheCleanSender,並加載緩存配置文件。所述配置文件主要用於標誌哪些實體的哪些方法需要參與緩存,以及這些方法的意圖是讀還是寫等。
(2)服務端任意一個接口方法成功執行後,將服務端對象類型及方法名註冊到CacheCleanSender的「未處理方法集合」。
(3)服務端執行了修改用戶權限、組織範圍、啟用禁用用戶等操作後,需要將用戶ID註冊到Cache Clean Sender的「需清空緩存用戶ID集合」; (4)Cache CleanSender每隔一段時間(默認30秒),根據緩存配置文件,處理「需清空緩存用戶id集合」和「未處理方法集合」。將待清空類型集合和待清空緩存用戶ID寫到所有登錄用戶的服務端上下文中。
(5)CacheCleanSender接收到集群中其它伺服器的待清空類型集合或用戶ID集合消息後,需要做的工作類似於上述周期性工作。
(6)服務端對象CacheCleanFacade,負責處理客戶端的輪詢,從服務端上下文中返回緩存更新信息給客戶端,然後由客戶端清空相關信息。
客戶端執行的步驟 (7)啟動客戶端時,啟動一個緩存清除輪詢線程CacheCleanReceiver,並載入緩存配置文件。
(8)CacheCleanReceiver每隔一段時間(默認30秒),遠程調用服務端的CacheCleanFacade方法。如果是用戶權限變化,則清空本地全部緩存區;如果是類型集合,則清空對應類型的緩存區。
參照圖3,示出了一種更新分布式系統中客戶端緩存數據的方法實施例3,包括以下步驟 步驟301、當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中; 步驟302、每隔一定時間,從第一集合中識別出寫操作集合,將其所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識置於所有登錄用戶的服務端上下文中;所述客戶端的緩存數據按照對象類型進行分區管理 步驟303、接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識; 步驟304、客戶端依據所獲得的緩存區標識,清空相應緩存區中的數據。
實施例3和實施例1的區別在於,在實施例3中,服務端上下文中註冊的是緩存區ID,客戶端可以直接清空相應緩存區即可,而不需要像實施例1中還需要執行對象類型和緩存區地址ID之間的匹配過程。
為了更清晰的說明本實施例,下面同時結合圖4進行說明,圖4示出了兩個線程之間的協作圖。本實施例主要可以涉及以下兩個線程。
服務端清空通告線程根據緩存配置文件,從未處理方法集合中區分出寫方法集合,並進一步解釋為待清空的客戶端緩存區id,並註冊到當前所有在線客戶端的服務端上下文中。優選的,還需要通過JGroups,將待清空的客戶端緩存區id傳遞到集群中的其他應用伺服器節點。
客戶端輪詢線程周期性地從服務端上下文取回待清空緩存區id集合,清空本地客戶端對應的緩存區。
下面的描述是順著圖4中的箭頭方向進行描述的,首先,圖4中的客戶端存根401向服務端框架402進行遠程方法調用,然後服務端框架402將其註冊到未處理方法集合中;進而,服務端清空通告線程403循環執行,不斷的從未處理方法集合中識別出寫方法,然後將相應的緩存區id註冊到待清空緩存區集合,該集合位於服務端上下文404中;接著,當客戶端輪詢線程405發起輪詢請求時,從服務端上下文404獲取相應的緩存區id,然後清空客戶端緩存406對應的緩存區,即完成了整個流程。實際上,為了保證持續更新,上面的兩個線程403和405是每隔一定時間循環執行的。
存根(Stub)與框架(Skeleton)屬於本領域的術語,簡單介紹如下 在遠程方法調用中,可以把遠程對象像本地對象一樣使用,應用程式並不知道一個對象是遠程的還是本地的。遠程方法調用時,系統通過遠程代理自動攔截方法調用,找到服務端遠程對象並調用它的方法,這一機制就是通過存根(Stub)與框架(Skeleton)實現的。Stub是客戶端對象,是服務端對象的遠程代理;Skeleton是服務端對象,接收Stub的遠程調用請求,實際地調用服務端對象方法,最後把方法返回值寫回給Stub。
參照圖5,示出了一種更新分布式系統中客戶端緩存數據的方法實施例4,可以包括以下步驟 步驟501、當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中; 步驟502、當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中; 步驟503、每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中;所述客戶端的緩存數據按照對象類型進行分區管理; 步驟504、接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識和用戶標識; 步驟505、如果客戶端的登錄用戶標識存在於所收到的用戶標識中,則該客戶端清空本地全部緩存數據;如果不存在,則客戶端依據所獲得的緩存區標識,清空相應緩存區中的數據。
當然,如果從服務端上下文中沒有收到用戶標識,則說明在當前循環時間段之內,沒有用戶的權限發生變化;實際上,該情況屬於客戶端的登錄用戶標識不存在於所接收的信息中的特殊情形。進一步查看所接收的緩存區標識,如果也沒有,則說明在當前循環時間段之內,沒有寫方法執行,不需要更新緩存。本段的描述也適用於前述的各個實施例。
實施例4和實施例2的區別在於,在實施例4中,服務端上下文中註冊的是緩存區ID,客戶端可以直接清空相應緩存區即可,而不需要像實施例2中還需要執行對象類型和緩存區地址ID之間的匹配過程。
進一步,當所述分布式系統採用伺服器集群架構時,該實施例還可以包括通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。
參照圖6,示出了一種更新分布式系統中客戶端緩存數據的裝置實施例1,包括以下模塊 位於服務端的操作記錄模塊601,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中; 位於服務端的寫操作識別模塊602,用於每隔一定時間,從第一集合中識別出寫操作集合,並將其所涉及的對象類型置於所有登錄用戶的服務端上下文中; 位於客戶端的輪詢模塊603,用於每隔一定時間發起緩存更新的輪詢請求; 位於服務端的上下文模塊604,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型; 位於客戶端的清空模塊605,用於清空客戶端緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
由於裝置實施例1是按照方法實施例1的步驟流程基本對應的方式描述的,因此不再贅述。
參照圖7,示出了一種更新分布式系統中客戶端緩存數據的裝置實施例2,包括以下模塊 位於服務端的普通操作記錄模塊701,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中; 位於服務端的用戶權限操作記錄模塊702,用於當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中; 位於服務端的操作識別模塊703,用於每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中; 位於客戶端的輪詢模塊704,用於每隔一定時間發起緩存更新的輪詢請求; 位於服務端的上下文模塊705,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型和用戶標識; 位於客戶端的清空模塊706,用於當客戶端的登錄用戶標識存在於所收到的用戶標識中時,則清空該客戶端本地全部緩存數據;如果不存在,則客戶端清空緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
進一步,當所述分布式系統採用伺服器集群架構時,該裝置還包括位於服務端的信息通知模塊707,用於通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。實際上,所述信息通知模塊707可以應用在本發明的各個裝置實施例中。
由於裝置實施例2是按照方法實施例2的步驟流程基本對應的方式描述的,因此不再贅述。
參照圖8,示出了一種更新分布式系統中客戶端緩存數據的裝置實施例3,包括以下模塊 位於服務端的操作記錄模塊801,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中; 位於服務端的寫操作識別模塊802,用於每隔一定時間,從第一集合中識別出寫操作集合,將其所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識置於所有登錄用戶的服務端上下文中;所述客戶端的緩存數據按照對象類型進行分區管理; 位於客戶端的輪詢模塊803,用於每隔一定時間發起緩存更新的輪詢請求; 位於服務端的上下文模塊804,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識; 位於客戶端的清空模塊805,用於依據所獲得的緩存區標識,清空該客戶端相應緩存區中的數據。
進一步,當所述分布式系統採用伺服器集群架構時,該裝置還包括位於服務端的信息通知模塊806,用於通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。
由於裝置實施例3是按照方法實施例3的步驟流程基本對應的方式描述的,因此不再贅述。
參照圖9,示出了一種更新分布式系統中客戶端緩存數據的裝置實施例4,包括以下模塊 位於服務端的普通操作記錄模塊901,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中; 位於服務端的用戶權限操作記錄模塊902,用於當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中; 位於服務端的操作識別模塊903,用於每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中; 位於客戶端的輪詢模塊904,用於每隔一定時間發起緩存更新的輪詢請求; 位於服務端的上下文模塊905,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識和用戶標識; 位於客戶端的清空模塊906,用於當客戶端的登錄用戶標識存在於所收到的用戶標識中時,則清空該客戶端本地全部緩存數據;如果不存在,則客戶端依據所獲得的緩存區標識,清空相應緩存區中的數據。
優選的,當所述分布式系統採用伺服器集群架構時,該裝置實施例還可以包括位於服務端的信息通知模塊,用於通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。
由於裝置實施例4是按照方法實施例4的步驟流程基本對應的方式描述的,因此不再贅述。
本說明書中的各個實施例均採用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對於系統實施例而言,由於其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
以上對本發明所提供的一種更新分布式系統中客戶端緩存數據的方法和裝置,進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式
及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。
權利要求
1.一種更新分布式系統中客戶端緩存數據的方法,其特徵在於,包括
當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;
每隔一定時間,從第一集合中識別出寫操作集合,並將其所涉及的對象類型置於所有登錄用戶的服務端上下文中;
接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型;
客戶端清空緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
2.一種更新分布式系統中客戶端緩存數據的方法,其特徵在於,包括
當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;
當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中;
每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中;
接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型和用戶標識;
如果客戶端的登錄用戶標識存在於所收到的用戶標識中,則該客戶端清空本地全部緩存數據;如果不存在,則客戶端清空緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
3.如權利要求2所述的方法,其特徵在於,當所述分布式系統採用伺服器集群架構時,該方法還包括
通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。
4.一種更新分布式系統中客戶端緩存數據的方法,其特徵在於,包括
當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;
每隔一定時間,從第一集合中識別出寫操作集合,將其所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識置於所有登錄用戶的服務端上下文中;所述客戶端的緩存數據按照對象類型進行分區管理;
接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識;
客戶端依據所獲得的緩存區標識,清空相應緩存區中的數據。
5.一種更新分布式系統中客戶端緩存數據的方法,其特徵在於,包括
當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;
當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中;
每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中;所述客戶端的緩存數據按照對象類型進行分區管理;
接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識和用戶標識;
如果客戶端的登錄用戶標識存在於所收到的用戶標識中,則該客戶端清空本地全部緩存數據;如果不存在,則客戶端依據所獲得的緩存區標識,清空相應緩存區中的數據。
6.如權利要求5所述的方法,其特徵在於,當所述分布式系統採用伺服器集群架構時,該方法還包括
通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。
7.一種更新分布式系統中客戶端緩存數據的裝置,其特徵在於,包括
位於服務端的操作記錄模塊,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;
位於服務端的寫操作識別模塊,用於每隔一定時間,從第一集合中識別出寫操作集合,並將其所涉及的對象類型置於所有登錄用戶的服務端上下文中;
位於客戶端的輪詢模塊,用於每隔一定時間發起緩存更新的輪詢請求;
位於服務端的上下文模塊,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型;
位於客戶端的清空模塊,用於清空客戶端緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
8.一種更新分布式系統中客戶端緩存數據的裝置,其特徵在於,包括
位於服務端的普通操作記錄模塊,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;
位於服務端的用戶權限操作記錄模塊,用於當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中;
位於服務端的操作識別模塊,用於每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中;
位於客戶端的輪詢模塊,用於每隔一定時間發起緩存更新的輪詢請求;
位於服務端的上下文模塊,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型和用戶標識;
位於客戶端的清空模塊,用於當客戶端的登錄用戶標識存在於所收到的用戶標識中時,則清空該客戶端本地全部緩存數據;如果不存在,則客戶端清空緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。
9.如權利要求8所述的裝置,其特徵在於,當所述分布式系統採用伺服器集群架構時,該裝置還包括
位於服務端的信息通知模塊,用於通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。
10.一種更新分布式系統中客戶端緩存數據的裝置,其特徵在於,包括
位於服務端的操作記錄模塊,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;
位於服務端的寫操作識別模塊,用於每隔一定時間,從第一集合中識別出寫操作集合,將其所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識置於所有登錄用戶的服務端上下文中;所述客戶端的緩存數據按照對象類型進行分區管理;
位於客戶端的輪詢模塊,用於每隔一定時間發起緩存更新的輪詢請求;
位於服務端的上下文模塊,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識;
位於客戶端的清空模塊,用於依據所獲得的緩存區標識,清空該客戶端相應緩存區中的數據。
11.一種更新分布式系統中客戶端緩存數據的裝置,其特徵在於,包括
位於服務端的普通操作記錄模塊,用於當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;
位於服務端的用戶權限操作記錄模塊,用於當服務端執行了涉及用戶權限的操作後,將相關的用戶標識置於第二集合中;
位於服務端的操作識別模塊,用於每隔一定時間,從第一集合中識別出寫操作集合,將第一集合所涉及的對象類型轉換為客戶端相應的緩存區標識,並將相應的緩存區標識以及第二集合中的用戶標識置於所有登錄用戶的服務端上下文中;所述客戶端的緩存數據按照對象類型進行分區管理;
位於客戶端的輪詢模塊,用於每隔一定時間發起緩存更新的輪詢請求;
位於服務端的上下文模塊,用於接受客戶端的輪詢請求,並從服務端上下文中返回相應的緩存區標識和用戶標識;
位於客戶端的清空模塊,用於當客戶端的登錄用戶標識存在於所收到的用戶標識中時,則清空該客戶端本地全部緩存數據;如果不存在,則客戶端依據所獲得的緩存區標識,清空相應緩存區中的數據。
12.如權利要求11所述的裝置,其特徵在於,當所述分布式系統採用伺服器集群架構時,該裝置還包括
位於服務端的信息通知模塊,用於通過JGroups技術,將需要放置在服務端上下文中的信息傳遞到集群中的其他伺服器節點。
全文摘要
本發明提供了一種更新分布式系統中客戶端緩存數據的方法,包括當服務端一數據處理操作被遠程調用並成功執行後,將該操作標識信息及其所涉及的對象類型置於第一集合中;每隔一定時間,從第一集合中識別出寫操作集合,並將其所涉及的對象類型置於所有登錄用戶的服務端上下文中;接受客戶端的輪詢請求,並從服務端上下文中返回相應的對象類型;客戶端清空緩存中與所述對象類型相關的數據;所述客戶端的緩存數據按照對象類型進行分區管理。本發明通過在服務端對寫方法進行監控、並由客戶端發起輪詢以及將客戶端的緩存數據進行分區管理,這些措施的協同工作,可以確保連接到同一服務端的所有在線客戶端的數據一致性。
文檔編號H04L29/08GK101146127SQ20071016604
公開日2008年3月19日 申請日期2007年10月30日 優先權日2007年10月30日
發明者慷 殷, 楊海悌 申請人:金蝶軟體(中國)有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀