新四季網

應用程式實例和查詢存儲的製作方法

2023-06-20 16:23:06

專利名稱:應用程式實例和查詢存儲的製作方法
技術領域:
本發明涉及持久保存,尤其涉及應用程式實例和查詢存儲。
背景技術:
長期運行的應用程式實例,諸如例如工作流應用程式的實例,通常得益於周期性地持久保存其工作以允許應用程式實例在錯誤、崩潰或機器失效之後恢復。持久保存工作還可允許應用程式臨時地空閒並且使它們的資源得到重新分配。為了持久保存工作,應用程式主機可對應用程式實例的持久保存的狀態和該實例的運行時狀態進行協調以保證一致的檢查點被創建。例如,實例的持久保存的狀態可能需要與應用程式事務、消息通知、鎖、 本地狀態高速緩存等進行協調。一個或多個實例的持久保存的狀態的權威性版本可被存儲到此處被稱為實例存儲的存儲中。在持久保存應用程式實例狀態之後,可在實例存儲中查詢持久保存的實例狀態的各方面,例如支持用於系統管理、診斷、健康監控、業務流程跟蹤、報告、可視化或分析的應用程式工具。如此處使用的,查詢及類似的術語泛指讀取已存儲的數據。獨立於正在執行實例的主應用程式來構想和實現應用程式工具。

發明內容
此處描述的工具和技術通過還將對應的表示存儲到一個或多個查詢存儲中可增強對實例存儲中持久保存的狀態表示的使用。這可提供好處,諸如允許應用程式工具在查詢存儲中查詢應用程式狀態而無需鎖定實例存儲。在一個實施例中,工具和技術可包括發出用於更新應用程式的實例的狀態的實例持久保存命令。響應於該持久保存命令,可啟動關於實例存儲的事務。作為事務的一部分, 可將更新的第一表示存儲到實例存儲中,並可將更新的第二表示存儲到隊列中。在存儲第一和第二表示之後可提交該事務。在提交事務之後,可處理第二表示以將更新的第三表示存儲到查詢存儲中。如此處使用的,術語隊列是指用於正在等待被處理的數據的存儲。例如,它可指用於正在等待被發布的數據的存儲。隊列可以是各種形式中的任一種,諸如資料庫或資料庫的部分。此外,隊列可使用各種隊列處理技術中的任一種,諸如先進先出技術或某些其他技術。在工具和技術的另一個實施例中,可從查詢服務接收對應用程式實例狀態更新的結果的訂閱請求。訂閱請求可包括過濾器。可從結果隊列接收一組應用程式實例狀態更新的結果。此外,過濾器可被應用於來自結果隊列的該組結果。可向查詢服務發布滿足過濾器的一組要求的該組結果。此外,可將與被發布到查詢服務的結果相對應的應用程式實例狀態更新的表示存儲到查詢存儲中。如此處使用的,術語「結果」及類似的術語是指對應用程式實例的狀態進行的更新的表示。例如,「結果」可指示創建或刪除實例、為變量賦予特定的值等。結果可與實例存儲中存儲的表示相同,或者它們可以是某些其他形式。例如,結果可(例如,通過指示變量的當前值)指示當前狀態和/或(例如,通過指示變量被改變之前的值和變量被改變之後的值)指示所作出的改變。類似地,狀態更新的表示可指當前狀態的表示和/或已對狀態所作出的改變的表示。為方便起見,術語結果通常用來指正在被傳輸的表示,而術語表示通常用來指正在被存儲的表示。在工具和技術的又一個實施例中,應用程式主機可被配置為運行一個或多個應用程式實例。實例存儲可連接到應用程式主機,並且結果隊列可通過實例存儲連接到應用程式主機。應用程式主機、實例存儲以及結果隊列可被配置為響應於實例持久保存命令而參與事務,該實例持久保存命令用於更新運行在應用程式主機上的應用程式的實例的狀態。 每個這樣的事務可包括響應於用於更新應用程式實例的狀態的實例持久保存命令啟動事務;將更新的第一表示存儲到實例存儲中;將更新的第二表示存儲到結果隊列中;並且提交事務。發布方可連接到隊列,並且查詢服務可連接到發布方。發布方可被配置為處理結果隊列中的更新表示,並且向一個或多個查詢服務發布來自隊列的結果。無需鎖定實例存儲就可實現上述處理和發布。查詢存儲可連接到查詢服務,並且查詢服務中的每一個可被配置為通過將與接收到的結果相對應的更新的表示存儲到查詢存儲中來響應接收到的結果。提供本發明內容是為了以簡化的形式介紹一些概念。這些概念將在以下具體實施方式
中進一步描述。本發明內容並不旨在標識所要求保護主題的關鍵特徵或必要特徵,也不旨在用於限制所要求保護主題的範圍。類似地,本發明不限於解決在背景技術具體實施方式
、或附圖中討論的特定技術、工具、環境、缺點、或優點的實現。


圖1是其中可實現所描述的各實施例中的一個或多個的適合的計算環境的框圖。圖2是實例和查詢存儲系統的示意圖。圖3是實例和查詢存儲系統的部分的示意圖。圖4是實例和查詢存儲系統的部分的示意。圖5是實例和查詢存儲技術的流程圖。圖6是另一個實例和查詢存儲技術的流程圖。
具體實施例方式此處描述的各實施例涉及用於應用程式實例狀態信息的改進的存儲和/或查詢的技術和工具。這樣的改進可源於分開或組合地使用各種技術和工具。這樣的技術和工具可包括響應於用於更新應用程式實例的狀態的實例持久保存命令,啟動關於實例存儲的事務。事務可包括將更新的第一表示存儲到實例存儲中,將更新的第二表示存儲到隊列中,並且隨後提交該事務。這可包括將命令的結果傳輸到隊列,並且可使用第一表示中沒有的應用程式數據來補充那些結果。在提交事務之後,可處理更新的第二表示以將更新的第三表示存儲到查詢存儲中。無需鎖定實例存儲就可實現這個處理, 並且無需鎖定實例存儲還可對查詢存儲中的信息實現查詢。因此,可實現對查詢存儲的更新和查詢而不會降低實例存儲的性能。這可進而改善正被持久保存的應用程式的性能,因為這樣的應用程式可花費更少的時間等待將在實例存儲中執行的操作。
可使用發布-訂閱技術來處理隊列中的表示。例如,每個連接到不同的查詢存儲的查詢服務可向連接到隊列的發布方進行訂閱。查詢服務可向過濾器提供其訂閱信息。發布方可根據訂閱信息將來自隊列的表示作為結果發布到查詢服務。響應於這些發布,查詢服務使用對應用程式實例狀態的更新的表示來更新對應的查詢存儲。如果查詢存儲不同步 (例如,由於存儲已崩潰、僅最近訂閱、或者其訂閱中已發生變化),則還可使用將查詢存儲與實例存儲進行同步的技術。所附權利要求中定義的主題不必限於本文描述的益處。本發明的特定實現可提供本文描述的益處的全部、一些、或未提供本文描述的益處。儘管本文出於呈現的目的以特定的順序次序描述了用於各種技術的操作,但應理解除非要求特定的排序,否則這種描述方式涵蓋了操作順序上的重新安排。例如,在某些情況下,可以重新安排或並發執行順序地描述的操作。本文參照流程圖描述的技術可被用於本文描述的一個或多個系統和/或用於一個或多個其他系統。例如,本文描述的各種過程可用硬體或軟體、或兩者的組合來實現。此外,為了簡單起見,流程圖可能未示出可結合其他技術來使用特定技術的各種方式。I.示例性計算環境圖1示出其中可實現所描述的各實施例中的一個或多個的合適的計算環境(100) 的通用示例。例如,一個或多個這樣的計算環境可用於託管此處討論的各種模塊,諸如應用程式主機、持久保存提供方、實例存儲、結果隊列、發布方、查詢服務、查詢存儲、和/或應用程式工具。一般而言,可使用各種不同的通用或專用計算系統配置。適用於此處所描述的工具和技術的公知計算系統配置的示例包括,但不限於,伺服器場和伺服器群集、個人計算機、伺服器計算機、手持式或膝上型設備、多處理器系統、基於微處理器的系統、可編程消費電子產品、網絡PC、小型機、大型計算機、包括上述系統或設備中的任一個的分布式計算環
±音絕視寸。計算環境(100)不旨在對本發明的使用範圍或功能提出任何限制,因為本發明可以在完全不同的通用或專用計算環境中實現。參考圖1,計算環境(100)包括至少一個處理單元(110)和存儲器(120)。在圖1 中,這一最基本的配置(130)被包括在虛線內。處理單元(110)執行計算機可執行指令,並且可以是真實或虛擬處理器。在多處理系統中,多個處理單元執行計算機可執行指令以提高處理能力。存儲器(120)可以是易失性存儲器(例如,寄存器、高速緩存、RAM)、非易失性存儲器(例如,R0M、EEPR0M、快閃記憶體)、或兩者的某種組合。存儲器(120)存儲實現應用程式實例和查詢存儲的軟體(180)。儘管為了清楚起見用線條示出了圖1的各框,但是,實際上,描繪各組件並不是那樣清楚,並且用比喻方法,圖1以及下文討論的其他附圖的線條更精確地將是灰色的和模糊的。例如,可以將諸如顯示設備等的呈現組件認為是I/O組件。而且,處理器具有存儲器。發明人關於此點認識到,這是本領域的特性,並且重申,圖1的圖示只是例示可結合本發明的一個或多個實施例來使用的示例性計算設備。諸如「工作站」、「伺服器」、「膝上型計算機」、「手持式設備」等分類之間沒有區別,它們全部都被認為是在圖1的範圍之內的並且被稱為「計算機」、「計算環境」、或「計算設備」。計算環境(100)可具有附加特徵。在圖1中,計算環境(100)包括存儲(140)、一個或多個輸入設備(150)、一個或多個輸出設備(160)以及一個或多個通信連接(170)。諸
7如總線、控制器或網絡等互連機制(未示出)將計算環境(100)的各組件互連。通常,作業系統軟體(未示出)為在計算環境(100)中執行的其它軟體提供操作環境,並協調計算環境(100)的各組件的活動。存儲(140)可以是可移動或不可移動的,並可包括諸如磁碟、磁帶或磁帶盒、 CD-R0M、CD-RW、DVD之類的非瞬態計算機可讀存儲介質,或者可用於儲存信息並可在計算環境(100)內訪問的任何其它介質。存儲(140)存儲用於軟體(180)的指令。輸入設備(150)可以是諸如鍵盤、滑鼠、筆或跟蹤球等觸摸輸入設備;語音輸入設備;掃描設備;網絡適配器;CD/DVD讀取器;或可向計算環境(100)提供輸入的另一設備。 輸出設備(160)可以是顯示器、印表機、揚聲器、CD/DVD刻錄機、網絡適配器、或從計算環境 (100)提供輸出的另一設備。通信連接(170)允許通過通信介質與另一計算實體進行通信。因此,計算環境 (100)可使用通往諸如個人計算機、伺服器、路由器、網絡PC、對等設備或另一常見網絡節點等一個或多個遠程計算設備的邏輯連接而工作在聯網環境中。通信介質以已調製數據信號的形式傳達諸如數據或計算機可執行指令或請求等信息。已調製數據信號是以在信號中編碼信息的方式來設置或改變其一個或多個特徵的信號。作為示例而非限制,通信介質包括利用電、光、射頻(RF)、紅外線、聲音或其他載體實現的有線或無線技術。各種工具和技術可以在計算機可讀介質的一般上下文中描述。計算機可讀介質是可以在計算環境內被訪問的任何可用介質。作為示例而非局限,對於計算環境(100),計算機可讀介質包括存儲器(120)、存儲(140)、和以上的組合。這些工具和技術可在諸如程序模塊中所包括的在目標真實或虛擬處理器上的計算環境中執行的計算機可執行指令的一般上下文中描述。一般而言,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、庫、對象、類、組件、數據結構等等。程序模塊的功能可以按需在各個實施例中進行組合或在程序模塊之間拆分。程序模塊的計算機可執行指令可以在本地或分布式計算環境內執行。在分布式計算環境中,程序模塊可以位於本地和遠程計算機存儲介質中。出於表示的目的,詳細描述使用了如「確定」、「選擇」、「調整」和「操作」等術語來描述計算環境中的計算機操作。這些以及其他類似術語是對計算機執行的操作的高層抽象, 並且不應混淆於人類執行的動作,除非明確指出人類(諸如「用戶」)的動作執行。對應於這些術語的實際的計算機操作取決於實現而不同。II.應用程式實例存儲和查詢存儲系統和環境圖2是結合可以實現所描述的實施例中的一個或多個的應用程式實例和查詢存儲計算機環境或系統(200)的框圖。系統(200)可包括被配置為運行一個或多個應用程式實例的至少一個應用程式主機010)。系統(200)還可包括可單獨地查詢應用程式實例的狀態信息的一個或多個應用程式工具012)。這些應用程式工具(21 可支持諸如系統管理、診斷、健康監控、業務流程跟蹤、報告、可視化或分析的特徵。應用程式主機(210)是模塊,諸如可執行應用程式實例並且可操控存儲在實例存儲(220)中的實例狀態以反映實例執行結果的執行工作流程序實例存儲(220)可以是持久存儲的形式,諸如持久資料庫。應用程式主機(210)可通過持久保存提供方(224)向實例存儲(220)提交實例持久保存命令022)。持久保存提供方(224)可連接到實例存儲(220)以及應用程式主機(210)(實際上,持久保存提供方可以是應用程式主機(220)的部分),以將命令傳遞給實例存儲020),並且可響應於所發出的命令022),跟蹤由實例存儲所返回的應用程式狀態結果(226)。使應用程式主機(210)和應用程式工具(212)操作相同的實例存儲(220)可能存在缺點。例如,在兩個進程之間對數據的協調訪問可能導致表、頁、行、值或實例存儲(220) 的其它類型的區域的鎖定。這樣的鎖定可具有計算開銷,當由應用程式工具(212)之一執行查詢時,該計算開銷通過使應用程式主機O10)的執行臨時阻塞來降低執行實例的速率。在正在執行查詢命令時,同一實例存儲(220)上的應用程式實例和查詢的同時執行,通過對實例持久保存命令進行串行化或延遲可類似地引起應用程式級的鎖定開銷。此外,可進行有利於實例執行的實例存儲Q20)中的數據的存儲組織,而不同的存儲組織可有利於查詢。由於應用程式工具可獨立於或者甚至在應用程式主機之後被開發,因此將這些不同的偏好包含在單個存儲方案中可能是困難的。相反,圖2的系統(200)可複製實例存儲(220)的更新,從而實例執行和查詢可彼此相隔離。儘管這種異步的複製可能延遲實例狀態變化到查詢處理器的傳播,但很多種類的應用程式工具(21 對該延遲是不敏感的。例如,交互式應用程式已經被顯示信息和用戶可輸入命令的速率所限制。報告應用程式可以低優先級在後臺運行,並且反映在瀏覽報告之前就已經存在數小時的結果。歷史紀錄可對實例狀態中正在進行的變化不敏感。這些類型的延遲可縮小傳播對查詢中使用的實例存儲O20)的更新的異步延遲。圖2的系統可包括諸如通過實例存儲(220)和/或持久保存提供方(224)連接到應用程式主機O10)的結果隊列040)。結果隊列可以是持久存儲的形式,諸如持久資料庫。結果隊列(MO)可從提供應用程式工具(212)要查詢的狀態更新的表示的後端系統中異步地解耦合與由應用程式主機(210)運行的應用程式實例正在交互的前端系統(諸如持久保存提供方(224)和實例存儲O20))。由於此解耦合,後端系統(可包括一個或多個附加隊列)的引入對於更新的所感知的延遲具有很小或者沒有影響,該後端系統用於傳播對服務查詢中使用的應用程式實例的狀態進行的更新的表示。仍參考圖2,應用程式主機(210)可被配置為執行實例持久保存命令(22 以更新實例存儲Q20)中實例狀態的表示。應用程式主機(210)還可具有應用程式工具(212)感興趣的但不是將要存儲到實例存儲O20)中的實例狀態的部分的應用程式數據042)。持久保存提供方(224)可被配置為向實例存儲(220)提供合適的實例持久保存命令022)。響應於該實例持久保存命令022),實例存儲(220)可存儲由實例持久保存命令 (222)所表示的更新的表示044),並且可向持久保存提供方(224)提供實例持久保存命令 (222)的結果(226)。持久保存提供方(224)可響應於實例持久保存命令022)的結果(226)來創建結果045)。結果(M5)可類似於結果0沈),但使用結果0 )中沒有的來自應用程式主機的應用程式數據( 對其進行補充。此外,結果( 可排除實例持久保存命令(222) 的結果0 )的短暫部分。圖3示出應用程式主機(210)通過持久保存提供方(224)將「保存實例」命令傳遞到實例存儲O20)的情形,可處理命令(322)以對實例狀態更新表示(M4)作出相應的改變。實例存儲(220)可將結果(326)返回給持久保存提供方OM),該結果可包括表示更新
9的以下數據「寫數據奶酪=瑞士乾酪(Cheese = Swiss);上一次更新09年12月17日 01:35 ;未鎖定實例」。應用程式主機(210)可向結果(326)添加應用程式數據(342)(可包括「上一動作批准抵押」)以生成結果(345)。結果(345)還可將短暫的「未鎖定實例」數據從結果(3 )中省略。因此,通過將應用程式數據(342) 「上一動作」添加到結果(326) 並且將短暫的「未鎖定」動作從結果(3 )中移除,可從結果(3 )生成結果(345)。可通過各種模塊中的一個或多個來實現結果(345)的生成,諸如應用程式主機010)、持久保存提供方OM)、實例存儲020)、和/或結果隊列040)。回頭參考圖2,持久保存提供方(224)可將結果(M5)排入到結果隊列(MO)中。 可在事務下執行實例持久保存命令022),其中作為事務的部分原子地進行對應用程式狀態的改變、對實例狀態的改變、以及將作為狀態更新表示046)的結果排入到結果隊列 (240)中。應用程式主機010)、實例存儲Q20)以及結果隊列(MO)可被配置為響應於實例持久保存命令(22 而參與這樣的事務,該實例持久保存命令用於更新運行在應用程式主機(210)上的應用程式的實例的狀態。每個這樣的事務包括響應於用於更新應用程式實例的狀態的實例持久保存命令(22 來啟動事務;將更新的第一表示作為表示044)的部分存儲到實例存儲O20)中;將更新的第二表示作為表示046)的部分存儲到結果隊列 (240)中;並且提交事務。仍參考圖2,一個或多個查詢服務O60和沈幻可連接到結果更新發布方(270), 該結果更新發布方進而連接到結果隊列040)。查詢服務(沈0)通過將訂閱信息(272)發送到與結果隊列(MO)連接的結果更新發布方(270)來註冊對接收實例持久保存命令結果的興趣。訂閱信息(27 可包括過濾器,該過濾器可在訂閱中包括例如實例持久保存命令結果的全部,或者,可替換的,僅實例持久保存命令結果的一部分。例如,過濾器可在訂閱中僅包括用於實例123的實例持久保存命令結果、僅用於下午5點以後運行的命令的實例持久保存命令結果、或者僅設置特定變量的值的實例持久保存命令結果。除了訂閱過濾器,訂閱信息(272)還可包括用於訂閱查詢服務O60)的聯繫人信息。結果更新發布方(270)通過將實例持久保存命令結果(274)從結果隊列(MO)中出列來處理已排隊的更新表示046)。出列的實例持久保存命令結果074)的集合之間的邊界可不同於對應的結果( 被排入時的邊界。例如,持久保存提供方(224)可排入用於單個事務下所進行的全部改變的一批實例持久保存命令結果(M5),而結果更新發布方可單獨地接收出列結果074)中的每個改變。結果更新發布方(270)可應用訂閱信息(272)來向訂閱者中的每一位發布實例持久保存命令結果076),訂閱者的訂閱過濾器與實例持久保存命令結果074)的出列集合相匹配。可通過各種方式中的任一種來發布實例持久保存命令結果。例如,發布方(270) 可通過將發布結果(276)作為消息或事件發送來將結果(276)推至訂閱者查詢服務O60); 或者可創建訂閱者可日後從中閱讀已發布的結果076)的結果光標。結果光標可在它們中間共享已發布的實例持久保存命令結果076)的單個拷貝,而不是為每個訂閱者查詢服務 (260 ^P 262)複製結果。無需鎖定實例存儲(220)可實現結果074和276)的處理和發布。因此,相對於實例存儲Q20)中的操作可異步地進行該發布。每個查詢服務Q60和沈幻可連接到查詢存儲(觀0),並且被配置為使用接收到的實例持久保存命令結果(276)來執行對查詢存儲(觀0)的更新078),從而查詢存儲(觀0) 可包括對應用程式實例的狀態進行的更新的表示,該應用程式實例在實例存儲O20)中由應用程式主機(210)託管,且對應於查詢服務(沈0)接收的已發布的結果076)。查詢存儲(觀0)可以是各種類型的存儲中的任一種,諸如一種持久保存或非持久保存存儲。在圖 2中出於簡便起見,查詢存儲(觀0)被示為用於一個查詢服務060),但不用於另一個查詢服務062)。但是,應當理解,另一個查詢服務( 也可更新它自己的查詢存儲。此外,系統(200)可包括單個查詢服務,或者它可包括比圖2中所示的更多的查詢服務。同樣,系統 (200)可包括更多或更少的其他所示模塊,諸如更多的應用程式主機等。仍參考圖2,依賴於如何配置訂閱過濾器,查詢存儲(觀0)可鏡像實例存儲(220) 或者可僅代表實例存儲O20)的部分。此外,查詢存儲(洲0)可包括實例存儲O20)中沒有的附加的應用程式信息。實例持久保存命令結果可由系統O00)中的各種模塊進行變換。例如,查詢服務 (260)可在使用已發布的實例持久保存命令結果(276)來更新查詢存儲(觀0)之前執行對它們的變換。同樣,查詢存儲O80)的組織可與實例存儲O20)的組織大不相同。例如, 查詢存儲(洲0)可以是分布式高速緩存,而實例存儲(220)可以是關係資料庫。查詢存儲 (280)的模式可包含專用於與查詢存儲(觀0)進行交互的應用程式工具012)的表和列, 諸如例如用於由不是實例存儲(220)的一部分的應用程式主機(210)提供的應用程式數據 (242)的預定義列。應用程式工具(21 集合可在對應的查詢存儲O80)中查詢信息。查詢的執行可獨立於用於實例存儲O20)的存儲組織和運行時偽像,從而無需鎖定實例存儲(220)可更新查詢存儲O80)並且查詢可運行在查詢存儲(觀0)上。這樣,實例存儲(220)上的操作可與查詢存儲(觀0)上的操作異步地運行。有時,對實例存儲(220)和查詢存儲Q80)的內容進行初始同步或重新同步可能是有益的。這些存儲的內容的同步是在兩個資源之間的一種類型的傳輸,但可存在用於執行這種傳輸操作的不同策略。例如,查詢存儲(觀0)可能不是耐久的,或者可能不存在捕捉由集合(21 中應用程式工具所請求的事件的訂閱者。為了將這樣的查詢存儲(觀0)與實例存儲(220)進行同步,查詢服務(260)可向發布方(270)發送與實例存儲進行同步的請求(未示出)。發布方(270)可通過向實例存儲(220)發送對同步信息的同步請求(四0)來進行響應,諸如對之前的實例持久保存命令結果的重傳。實例存儲(220)可通過以普通方式將同步信息排入到結果隊列O40)中來發送所請求的同步信息(諸如以實例持久保存命令結果(M5)的形式)進行響應。發布方O70)以普通方式將來自隊列O40)的這些實例持久保存命令結果 (274,276)發布到查詢服務Q60和/或沈幻中的一個或多個。重傳的實例持久保存命令結果(M5)可能不同於那些原始傳輸的。將參照圖4討論這一差別的示例。如圖4所示,發給實例存儲Q20)的一系列命令(422)導致以下結果序列(426)被返回到持久保存提供方(圖4中未示出)創建實例5 ;實例5奶酪=瑞士乾酪;創建實例6 ;實例6奶酪=菠蘿伏洛乾酪(Cheese = Provolone);實例6奶酪=格裡爾幹奶酪(Cheese = Gruyere);刪除實例5。這樣,實例5已被刪除,並且實例6奶酪的值以前是「菠蘿伏洛乾酪」,但已被重寫為「格裡爾幹奶酪」。實例存儲O20)中的實例狀態的更
11新表示(444)可能僅反映當前的狀態。若是這樣,則當前的狀態可僅指示實例6聲明包括奶酪=格裡爾幹奶酪,沒有指示存在實例5,並且沒有指示實例6奶酪之前已被設置為值「格裡爾幹奶酪」。因此,同步結果可指示導致更新表示G44)中的當前狀態的結果,但不是整個結果序列0 )的歷史。因此,在重寫或刪除實例狀態的部分之後,重傳的實例持久保存命令結果(445)可反映若干實例持久保存命令022)的累計結果,而不是命令022)中的每一個的中間結果。或者,實例存儲(220)可保留命令(422)和/或結果序列0 )的歷史中的某些或全部,使得同步結果(44 可代表上述歷史的全部或部分。回頭參考圖2,實例持久保存命令結果( 和更新表示(444)可具有相關聯的時戳和/或序列號。結果更新發布方(270)和實例存儲(220)可使用這些標識符來對實例存儲Q20)的僅部分進行重新同步。例如,結果更新發布方(270)可指示它只想要用於可與 2009年8月份相關的實例狀態更新的同步信息。作為另一個示例,結果更新發布方(270)可指示它只想要對之前已被發送的具有同步號碼1401-1420的實例持久保存命令結果(M5) 的重傳。類似地,結果更新發布方(270)可將同步請求限制為實例存儲(220)的僅部分,諸如特定實例或特定變量的值。結果更新發布方(270)可通過從同步請求Q90)中排除實例持久保存命令結果( 不會通過訂閱過濾器中的任一個的要求的實例存儲中的部分,來使用由訂閱查詢服務O60和/或沈幻提供的訂閱過濾器以構建這個有界的請求。一旦接收以已發布的結果076)的形式的同步信息,查詢服務可使用該同步信息來對查詢存儲O80)的至少部分和實例存儲O20)的至少部分進行同步,諸如通過以普通方式使用所發布的結果(276)來更新查詢存儲080)。用於在模塊之間傳輸數據(諸如應用程式數據以及用於命令、結果、訂閱信息、更新和查詢的數據)的圖2的模塊之間的連接可以各種方式來實現。例如,可通過函數調用或應用程式編程接口調用的方式實現應用程式主機(210)和持久保存提供方(224)之間的連接。實例存儲020)、結果隊列(MO)和查詢存儲(觀0)可以都是資料庫,並且這些資料庫和其他模塊之間的連接可利用資料庫連接。或者,到實例存儲020)、結果隊列(MO)和 /或查詢存儲O80)的連接中的某些或全部可使用存儲應用程式編程接口來實現。發布方 (270)和查詢服務(沈0)可經由網絡消息傳送連接來連接。代替這些類型的連接和/或除了這些類型的連接之外,還可使用模塊之間的其它類型的連接。III.應用程式實例和查詢存儲技術現在將討論若干應用程式實例和查詢存儲技術。可以在計算環境中執行這些技術中的每一個。例如,可在包括至少一個處理器和存儲器的計算機系統中執行每種技術,該存儲器包括存儲於其上的、在由該至少一個處理器執行時使該至少一個處理器執行該技術的指令(存儲器存儲指令(例如,對象代碼),並且當處理器執行這些指令時,處理器執行該技術)。類似地,一個或多個計算機可讀存儲介質可具有收錄於其上的計算機可執行指令,該些指令在由至少一個處理器執行時使該至少一個處理器執行該技術。參照圖5,將討論實例和查詢存儲技術。技術可包括發出用於更新應用程式的實例的狀態的實例持久保存命令(510)。響應於該持久保存命令,可啟動關於實例存儲的事務 (520)。作為事務的部分,可將更新的第一表示存儲到實例存儲中(530),並可將更新的第二表示存儲到隊列中(540)。在存儲第一和第二表示之後可提交該事務(550)。在提交事務之後(550),可處理更新的第二表示以將更新的第三表示存儲到查詢存儲中(560)。可以標準的方式,諸如使用標準資料庫存儲技術,執行第一、第二和第三表示的存儲。事務可包括鎖定實例存儲的至少一部分,但可實現更新的第二表示的處理而無需鎖定實例存儲。技術可還包括在查詢存儲中查詢第三表示而無需鎖定實例存儲。更新的第一、第二和第三表示可以彼此相同,但可以彼此不同。例如,技術可包括使用第一表示中沒有的應用程式數據來補充更新的第二表示。同樣,實例存儲可包括查詢存儲中沒有的信息,諸如關於應用程式實例的狀態的信息。處理更新的第二表示以將更新的第三表示存儲到查詢存儲中可包括將過濾器應用到第二表示中。現在參照圖6,將討論另一個實例和查詢存儲技術。技術包括從查詢服務接收對應用程式實例狀態更新的結果的訂閱請求(610)。訂閱請求可包括過濾器,並且還可包括其他信息,諸如用於訂閱發送訂閱請求的查詢服務的聯繫人信息。技術還可包括從結果隊列接收一組一個或多個應用程式實例狀態更新的結果(620)。可將來自查詢服務的過濾器應用於該組結果(630),從而將滿足過濾器的一組要求的來自該組的一個或多個結果發布到查詢服務(640)。可將與被發布到查詢服務的結果相對應的一個或多個應用程式實例狀態更新的一個或多個表示存儲到查詢存儲中(650)。圖6的技術還可包括將與該組結果相對應的應用程式實例狀態更新的表示存儲到實例存儲中。無需鎖定實例存儲就可實現發布到查詢服務(640)以及存儲到查詢存儲中 (650)。此外,技術還包括從查詢服務接收與實例存儲進行同步的請求。響應於同步的請求, 可從實例存儲請求同步信息。可從實例存儲接收所請求的同步信息,並且可向查詢服務轉發該同步信息的至少一部分。該同步信息的至少一部分可用於對查詢存儲的至少一部分和實例存儲的至少一部分進行同步。圖6的技術可包括發出用於更新應用程式的應用程式實例的狀態的實例持久保存命令。響應於該持久保存命令,可啟動應用程式和實例存儲之間的事務。作為事務的一部分,可將更新的第一表示存儲到實例存儲中,並可將更新的第二表示存儲到隊列中。在提交事務之後,可處理第二表示以將更新的第三表示存儲到查詢存儲中。儘管用結構特徵和/或方法動作專用的語言描述了本主題,但可以理解,所附權利要求書中定義的主題不必限於上述具體特徵或動作。更確切而言,上述具體特徵和動作是作為實現權利要求的示例形式公開的。
權利要求
1.一種計算機實現的方法,包括發出用於更新應用程式的實例的狀態的實例持久保存命令022);響應於所述持久保存命令022),啟動關於實例存儲Q20)的事務;作為所述事務的一部分,將所述更新的第一表示(M4)存儲到所述實例存儲(220)中;以及作為所述事務的一部分,將所述更新的第二表示(M6)存儲到隊列O40)中; 在存儲所述第一表示(M4)和所述第二表示(M6)之後提交所述事務;以及在提交所述事務之後,處理所述更新的所述第二表示046)以將所述更新的第三表示 (282)存儲到查詢存儲(280)中。
2.如權利要求1所述的方法,其特徵在於,所述事務包括鎖定所述實例存儲的至少一部分,但實現對所述更新的所述第二表示的處理無需鎖定所述實例存儲。
3.如權利要求1所述的方法,其特徵在於,還包括在所述查詢存儲中查詢所述第三表示而無需鎖定所述實例存儲。
4.如權利要求1所述的方法,其特徵在於,所述更新的所述第二表示不同於所述更新的所述第一表示。
5.如權利要求4所述的方法,其特徵在於,處理所述更新的所述第二表示以將所述更新的第三表示存儲到查詢存儲中包括將過濾器應用到所述第二表示中。
6.一個或多個具有收錄於其上的計算機可執行指令的計算機可讀存儲介質,所述指令在由至少一個處理器執行時使所述至少一個處理器執行以下動作從查詢服務(260)接收對應用程式實例狀態更新的結果的訂閱請求,所述訂閱請求包括過濾器;從結果隊列(MO)接收一個或多個應用程式實例狀態更新的一組結果074) 將所述過濾器應用到來自所述結果隊列(MO)的該組結果(274); 將滿足所述過濾器的一組一個或多個要求的該組一個或多個結果發布到所述查詢服務Q60)以及將與被發布到所述查詢服務(260)的一個或多個結果(276)相對應的一個或多個應用程式實例狀態更新的一個或多個表示存儲到查詢存儲O80)中。
7.如權利要求6所述的一個或多個計算機可讀存儲介質,其特徵在於,所述動作還包括將與該組結果相對應的應用程式實例狀態更新的表示存儲到實例存儲中,其中實現發布到所述查詢服務以及存儲到所述查詢存儲無需鎖定所述實例存儲。
8.如權利要求7所述的一種或多種計算機可讀存儲介質,其特徵在於,所述動作還包括從所述查詢服務接收與所述實例存儲進行同步的請求; 響應於對同步的所述請求,從所述實例存儲請求同步信息; 從所述實例存儲接收所請求的同步信息;以及將所述同步信息的至少一部分轉發給所述查詢服務。
9.如權利要求8所述的一種或多種計算機可讀存儲介質,其特徵在於,所述動作還包括,使用所述同步信息的至少一部分來對查詢存儲的至少一部分和所述實例存儲的至少一部分進行同步。
10.如權利要求6所述的一種或多種計算機可讀存儲介質,其特徵在於,所述動作還包括發出用於更新應用程式的應用程式實例的狀態的實例持久保存命令; 響應於所述持久保存命令,啟動所述應用程式和實例存儲之間的事務; 作為所述事務的一部分,將所述更新的第一表示存儲到所述實例存儲中;以及作為所述事務的一部分,將所述更新的第二表示存儲到所述結果隊列中; 提交所述事務;以及在提交所述事務之後,處理所述更新的所述第二表示以將所述更新的第三表示存儲到所述查詢存儲中。
11.一種計算機系統,包括應用程式主機010),被配置為運行一個或多個應用程式實例; 實例存儲020),連接到所述應用程式主機Ο ο)結果隊列040),連接到所述應用程式主機010),其中所述應用程式主機010)、所述實例存儲020),和所述結果隊列(MO)被配置為響應於用於對運行於所述應用程式主機上的應用程式的一個或多個實例的一個或多個狀態的進行更新的實例持久保存命令(222) 而參與事務,所述事務中的每一個包括響應於用於更新應用程式實例的狀態的實例持久保存命令(222)啟動所述事務; 將所述更新的第一表示(M4)存儲到所述實例存儲O20)中; 將所述更新的第二表示(M6)存儲到所述結果隊列O40)中;以及提交所述事務;發布方(270),連接到所述隊列(240);一個或多個查詢服務060),連接到所述發布方070),所述發布方(270)被配置為處理所述結果隊列O40)中的更新表示046)以將來自所述隊列的結果(276)發布到所述一個或多個查詢服務060、262),實現所述處理和發布無需鎖定所述實例存儲Q20);以及一個或多個查詢存儲080),連接到所述一個或多個查詢服務060、262),所述一個或多個查詢服務(沈0、沈幻中的每一個被配置為通過將對應於所接收的結果(276)的更新的表示( 存儲到查詢存儲O80)中來響應所接收的結果(276)。
12.如權利要求11所述的計算機系統,其中所述一個或多個查詢存儲中的至少一個被配置為服務來自應用程式工具的查詢。
13.如權利要求11所述的計算機系統,其特徵在於,所述一個或多個查詢服務被配置為向所述發布方發送訂閱信息;以及所述發布方被配置為應用所述訂閱信息來將結果發布到所述查詢服務。
14.如權利要求13所述的計算機系統,其特徵在於,所述一個或多個查詢服務中的至少一個被配置為將包含過濾器的訂閱信息發送到所述發布方。
15.如權利要求11所述的計算機系統,其特徵在於,所述一個或多個查詢服務中的一個查詢服務被配置為向所述發布方發送與所述實例存儲進行同步的請求;所述發布方被配置為通過向所述實例存儲發送對同步信息的請求來響應對同步的所述請求;所述實例存儲被配置為通過將所請求的同步信息發送到所述隊列來響應對同步信息的所述請求;以及所述發布方被配置為將來自所述隊列的所述同步信息發布到所述一個或多個查詢服務中的至少一個。
全文摘要
本發明揭示了應用程式實例和查詢存儲。可發出用於更新應用程式的實例的狀態的實例持久保存命令。響應於該持久保存命令,可啟動關於實例存儲的事務。作為事務的部分,可將更新的第一表示存儲到實例存儲中,並可將更新的第二表示存儲到隊列中。在存儲第一和第二表示之後可提交該事務。在提交事務之後,可處理第二表示以將更新的第三表示存儲到查詢存儲中。無需鎖定實例存儲就可對查詢存儲中的應用程式實例狀態信息進行更新和查詢,使得查詢存儲中的這樣的操作可與實例存儲中的操作異步地執行。
文檔編號G06F9/46GK102270155SQ20111021994
公開日2011年12月7日 申請日期2011年7月26日 優先權日2010年7月27日
發明者D·舒克拉, J·A·泰勒, K·帕拉瑪斯萬姆, N·A·艾倫 申請人:微軟公司

同类文章

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

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有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-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀