国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于事務(wù)環(huán)境中的資源管理器實例感知支持公共事務(wù)標識符優(yōu)化和事務(wù)親密度的系統(tǒng)和方法與流程

      文檔序號:12481400閱讀:426來源:國知局
      基于事務(wù)環(huán)境中的資源管理器實例感知支持公共事務(wù)標識符優(yōu)化和事務(wù)親密度的系統(tǒng)和方法與流程

      本專利文檔的公開內(nèi)容的一部分包含受版權(quán)保護的素材。版權(quán)擁有者不反對任何人對專利文檔或?qū)@_內(nèi)容按照在專利商標局的專利文件或記錄中出現(xiàn)的那樣進行傳真復(fù)制,但是除此之外在任何情況下都保留所有版權(quán)。

      技術(shù)領(lǐng)域

      本發(fā)明一般而言涉及計算機系統(tǒng)和軟件,并且具體而言涉及事務(wù)系統(tǒng)。



      背景技術(shù):

      事務(wù)中間件系統(tǒng)或面向事務(wù)的中間件包括可以處理組織內(nèi)的各種事務(wù)的企業(yè)應(yīng)用服務(wù)器。隨著諸如高性能網(wǎng)絡(luò)和多處理器計算機的新技術(shù)的發(fā)展,需要進一步改進事務(wù)中間件的性能。這些是本發(fā)明的實施例旨在解決的一般領(lǐng)域。



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

      本文描述了可以支持事務(wù)環(huán)境中的事務(wù)處理的系統(tǒng)和方法。用于全局事務(wù)的協(xié)調(diào)器操作來將公共事務(wù)標識符和用于資源管理器實例的信息傳播到事務(wù)環(huán)境中全局事務(wù)的一個或多個參與者。協(xié)調(diào)器允許與協(xié)調(diào)器共享資源管理器實例的所述一個或多個參與者使用公共事務(wù)標識符,并且協(xié)調(diào)器可以利用一個事務(wù)分支來為共享資源管理器實例的所述一個或多個參與者處理全局事務(wù)。

      本文描述了可以支持事務(wù)環(huán)境中的事務(wù)處理的系統(tǒng)和方法。事務(wù)系統(tǒng)操作來將請求路由到事務(wù)服務(wù)器,其中事務(wù)服務(wù)器連接到資源管理器(RM)實例。另外,事務(wù)系統(tǒng)可以向事務(wù)服務(wù)器分配親密度上下文,其中親密度上下文指示事務(wù)服務(wù)器與之相關(guān)聯(lián)的RM實例,并且事務(wù)系統(tǒng)可以基于親密度上下文將與該請求相關(guān)的一個或多個后續(xù)請求路由到事務(wù)服務(wù)器。

      本文描述了可以支持事務(wù)環(huán)境中的事務(wù)處理的系統(tǒng)和方法。事務(wù)服務(wù)器操作來從與一個或多個RM實例相關(guān)聯(lián)的數(shù)據(jù)源接收資源管理器(RM)實例信息,其中接收到的實例信息允許事務(wù)服務(wù)器感知事務(wù)服務(wù)器當(dāng)前連接到哪個RM實例。此外,事務(wù)服務(wù)器操作來將接收到的實例信息保存到與事務(wù)服務(wù)器相關(guān)聯(lián)的一個或多個表中。然后,事務(wù)服務(wù)器可以基于保存在一個或多個表中的實例信息處理全局事務(wù)。

      附圖說明

      圖1示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中支持資源管理器(RM)實例感知的圖示。

      圖2示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中維護各種狀態(tài)表的圖示。

      圖3示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中支持服務(wù)器表(ST)的圖示。

      圖4示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中更新實例信息的圖示。

      圖5示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中支持具有各種檢查點的事務(wù)處理的圖示。

      圖6示出了根據(jù)本發(fā)明實施例的用于在事務(wù)環(huán)境中支持資源管理器(RM)實例感知的示例性流程圖。

      圖7示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中基于實例感知支持事務(wù)親密度的圖示。

      圖8示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中支持事務(wù)親密度路由的圖示。

      圖9示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中發(fā)送具有親密度上下文的消息的圖示。

      圖10示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中接收具有親密度上下文的消息的圖示。

      圖11示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中的客戶端上下文內(nèi)支持親密度路由的圖示。

      圖12示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中跨不同域傳播親密度上下文的圖示。

      圖13示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中將親密度上下文傳播到應(yīng)用服務(wù)器的圖示。

      圖14示出了根據(jù)本發(fā)明實施例的用于在事務(wù)環(huán)境中基于實例感知支持事務(wù)親密度的示例性流程圖。

      圖15示出了根據(jù)本發(fā)明實施例的利用不同事務(wù)標識符(XID)在事務(wù)環(huán)境中處理全局事務(wù)的圖示。

      圖16示出了根據(jù)本發(fā)明實施例的利用公共事務(wù)標識符(XID)在事務(wù)環(huán)境中處理全局事務(wù)的圖示。

      圖17示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中基于數(shù)據(jù)庫實例感知來支持一階段提交(1PC)處理模型的圖示。

      圖18示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中基于數(shù)據(jù)庫實例感知來處理全局事務(wù)的圖示。

      圖19示出了根據(jù)本發(fā)明實施例的利用公共XID在事務(wù)環(huán)境中跨多個域處理全局事務(wù)的圖示。

      圖20示出了根據(jù)本發(fā)明實施例的用于利用公共XID在事務(wù)環(huán)境中處理全局事務(wù)的示例性流程圖。

      具體實施方式

      在附圖的圖中,通過示例而非限制的方式示出了本發(fā)明,其中相同的標記指示相似的元素。應(yīng)當(dāng)注意,在本公開內(nèi)容中對“一個”或“一些”實施例的引用不一定是相同的實施例,并且這樣的引用意味著至少一個。

      以下本發(fā)明的描述使用Tuxedo環(huán)境作為事務(wù)中間件機器環(huán)境的例子。對本領(lǐng)域技術(shù)人員顯而易見的是,可以使用其它類型的事務(wù)中間件機器環(huán)境而沒有限制。

      本文描述的是可以在諸如事務(wù)中間件機器環(huán)境的事務(wù)環(huán)境中支持事務(wù)處理的系統(tǒng)和方法。

      事務(wù)中間件機器環(huán)境

      根據(jù)本發(fā)明的實施例,系統(tǒng)包括高性能硬件(例如64位處理器技術(shù))、高性能大存儲器、以及冗余InfiniBand和以太網(wǎng)網(wǎng)絡(luò)、連同應(yīng)用服務(wù)器或中間件環(huán)境(諸如WebLogic Suite)的組合,以提供包括可以被快速供給并且可按需縮放的大規(guī)模并行存儲器中網(wǎng)格的完整Java EE應(yīng)用服務(wù)器集合體。根據(jù)實施例,該系統(tǒng)可以被部署為提供應(yīng)用服務(wù)器網(wǎng)格、存儲區(qū)域網(wǎng)絡(luò)和InfiniBand(IB)網(wǎng)絡(luò)的全、半或四分之一機架或其它配置。中間件機器軟件可以提供應(yīng)用服務(wù)器、中間件和其它功能,諸如像WebLogic Server、JRockit或Hotspot JVM、Oracle Linux或Solaris以及Oracle VM。根據(jù)實施例,該系統(tǒng)可以包括經(jīng)由IB網(wǎng)絡(luò)彼此通信的多個計算節(jié)點、IB交換網(wǎng)關(guān)和存儲節(jié)點或單元。當(dāng)實現(xiàn)為機架配置時,機架的未使用部分可以留空或被填充物(filler)占據(jù)。

      根據(jù)本發(fā)明的實施例,該系統(tǒng)提供用于托管諸如Oracle Middleware SW套件或Weblogic的中間件或應(yīng)用服務(wù)器軟件的易于部署的解決方案。如本文所述,根據(jù)實施例,該系統(tǒng)是包括一個或多個服務(wù)器、存儲單元、用于存儲聯(lián)網(wǎng)的IB架構(gòu)、以及托管中間件應(yīng)用所需的所有其它部件的“盒中網(wǎng)格”。通過利用使用例如Real Application Clusters和Exalogic Open存儲的大規(guī)模并行網(wǎng)格體系架構(gòu),可以為所有類型的中間件應(yīng)用提供顯著的性能。系統(tǒng)提供具有線性I/O可擴展性的改進的性能、易于使用和管理、并且提供關(guān)鍵任務(wù)的可用性和可靠性。

      根據(jù)本發(fā)明的實施例,諸如Oracle Tuxedo系統(tǒng)的事務(wù)中間件系統(tǒng)可以利用諸如Oracle Exalogic中間件機器的具有多個處理器的高速機器以及諸如IB網(wǎng)絡(luò)的高性能網(wǎng)絡(luò)連接。此外,Oracle Tuxedo系統(tǒng)(也被簡單地稱為“Tuxedo”)可以利用集群數(shù)據(jù)庫,諸如Oracle Real Application Clusters(RAC)企業(yè)數(shù)據(jù)庫,這是具有共享高速緩存體系架構(gòu)的集群數(shù)據(jù)庫并且可以是云體系架構(gòu)的部件。Oracle RAC可以克服傳統(tǒng)無共享和共享盤方法的限制,為業(yè)務(wù)應(yīng)用提供高度可擴展和可用的數(shù)據(jù)庫解決方案。

      根據(jù)本發(fā)明的實施例,Oracle Tuxedo系統(tǒng)提供了一組軟件模塊,其使得能夠構(gòu)建、執(zhí)行和管理高性能、分布式業(yè)務(wù)應(yīng)用,并且已被多個多層應(yīng)用開發(fā)工具用作事務(wù)中間件。Tuxedo是可用來管理分布式計算環(huán)境中的分布式事務(wù)處理的中間件平臺。它是經(jīng)過驗證的平臺,用于解鎖企業(yè)傳統(tǒng)應(yīng)用并將其擴展到面向服務(wù)的體系架構(gòu),同時提供無限的可擴展性和基于標準的互操作性。

      此外,Oracle Tuxedo系統(tǒng)可以符合開放組(Open Group)的X/Open標準,包括支持用于兩階段提交(2PC)處理的XA標準、X/Open ATMI API、以及用于語言國際化的X/開放可移植性指南(Open Portability Guide,XPG)標準。當(dāng)事務(wù)應(yīng)用服務(wù)器使用XA標準時,它可以被稱為XA服務(wù)器。例如,屬于Tuxedo組的每個Tuxedo應(yīng)用服務(wù)器都可以利用OPENINFO屬性進行配置。Tuxedo組中的所有XA服務(wù)器都可以使用OPENINFO屬性來建立到資源管理器(RM)的連接。

      實例感知

      圖1示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中支持資源管理器(RM)實例感知的圖示。如圖1所示,事務(wù)環(huán)境100中的事務(wù)系統(tǒng)101可以利用與諸如數(shù)據(jù)庫的數(shù)據(jù)源102相關(guān)聯(lián)的一個或多個資源管理器(RM)實例來支持事務(wù)處理。

      根據(jù)本發(fā)明的實施例,事務(wù)系統(tǒng)101可以感知數(shù)據(jù)源102中的RM實例信息104。例如,事務(wù)系統(tǒng)101中的事務(wù)服務(wù)器103可以通過利用用戶回調(diào)110從數(shù)據(jù)源102獲得RM實例信息104。事務(wù)系統(tǒng)101可以使用不同的機制來注冊用戶回調(diào)110,例如靜態(tài)注冊機制和動態(tài)注冊機制。

      當(dāng)支持XA服務(wù)器時,可以使用靜態(tài)注冊機制。XA服務(wù)器是使用統(tǒng)一XA接口來控制事務(wù)的服務(wù)器。例如,在Tuxedo中,在調(diào)用xa_open()函數(shù)之后,可以在tpopen()函數(shù)中調(diào)用靜態(tài)注冊。一旦注冊成功,則當(dāng)事務(wù)服務(wù)器103建立到例如Oracle數(shù)據(jù)庫的數(shù)據(jù)庫的連接時,可以調(diào)用用戶回調(diào)110。此外,在調(diào)用xa_close()函數(shù)之前,可以在tpclose()函數(shù)中取消注冊用戶回調(diào)110。

      可替代地,事務(wù)服務(wù)器103可以動態(tài)地注冊用戶回調(diào)110,例如,基于與數(shù)據(jù)源102相關(guān)聯(lián)的共享庫105。例如,當(dāng)用戶利用非XA服務(wù)器(例如,經(jīng)由OCI或Pro*c/c++)連接到Oracle數(shù)據(jù)庫時,Tuxedo可以動態(tài)注冊回調(diào)。Tuxedo可以首先動態(tài)加載Oracle OCI庫OCI API并且獲得相關(guān)的OCI環(huán)境句柄。然后,Tuxedo可以經(jīng)由OCISessionBegin函數(shù)中的OCIUserCallbackRegister注冊用戶回調(diào)。

      如圖1所示,系統(tǒng)可以將獲得的實例信息104保存在與事務(wù)服務(wù)器103相關(guān)聯(lián)的相關(guān)上下文106中。此外,事務(wù)服務(wù)器103可以將實例信息104存儲在共享存儲器107中的不同狀態(tài)表108中(例如Tuxedo中的全局公告板(BB))。這些表108可以被同步到不同的節(jié)點,并且可以被多個事務(wù)服務(wù)器(例如,服務(wù)器111-112)和/或本地客戶端訪問。

      圖2示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中維護各種狀態(tài)表的圖示。如圖2所示,事務(wù)系統(tǒng)200可以將實例信息220存儲在共享存儲器201中的不同狀態(tài)表中。

      這些狀態(tài)表可以包括存儲唯一RM/數(shù)據(jù)庫名稱的資源管理器表211,存儲RM/數(shù)據(jù)庫實例名稱的實例表212和存儲RM/數(shù)據(jù)庫服務(wù)名稱的服務(wù)表213。此類信息可以幫助其它服務(wù)器知道與特定服務(wù)器相關(guān)聯(lián)的實例信息。

      此外,事務(wù)系統(tǒng)200可以在共享存儲器201中維護服務(wù)器表(ST)214。ST 214可以包括一個或多個服務(wù)器表條目(STE),每個服務(wù)器表條目可以在實例表212中存儲索引。例如,如果服務(wù)器是單線程服務(wù)器,則每個STE可以存儲實例標識符(ID)。

      如圖2所示,服務(wù)器表214可以指向共享存儲器201中的其它表211-213。因此,事務(wù)系統(tǒng)200可以使用服務(wù)器表214來獲得實例信息(諸如關(guān)于特定服務(wù)器當(dāng)前連接到哪個RM實例的信息),并且事務(wù)系統(tǒng)200可以不直接使用存儲在不同狀態(tài)表211-213中的實例信息。

      圖3示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中支持服務(wù)器表(ST)的圖示。如圖3所示,事務(wù)系統(tǒng)300中的服務(wù)器表(ST)310可以包括一個或多個服務(wù)器表條目(STE)311-312,每個服務(wù)器表條目(STE)311-312可以包括一個或多個實例標識符(ID)。例如,STE 311可以包括實例ID 321-322,并且STE 312可以包括實例ID 323-324。

      根據(jù)本發(fā)明的實施例,每個實例ID 321-324可以包括各種實例信息。如圖3所示,實例ID 322可以識別實例名稱301、數(shù)據(jù)庫名稱302和服務(wù)名稱303。

      例如,實例ID可以利用整數(shù)來實現(xiàn),例如,包括三個部分:位0-11、位12-19和位20-31的32位整數(shù)。第一部分即位0-11可以存儲RM/數(shù)據(jù)庫實例名稱301的條目索引。第二部分即位12-19可以存儲RM/數(shù)據(jù)庫名稱302的條目索引。第三部分即位20-31可以存儲RM/數(shù)據(jù)庫服務(wù)名稱303的條目索引。此外,特殊值0xFFFFFFFF可以用于指示無效的實例ID。

      根據(jù)本發(fā)明的實施例,事務(wù)系統(tǒng)300可以通過簡單地比較相關(guān)位來檢查實例ID 322中的實例信息。因此,系統(tǒng)可以避免由于串比較而導(dǎo)致的性能問題,因為串比較操作比位比較操作更昂貴。

      圖4示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中更新實例信息的圖示。如圖4所示,事務(wù)環(huán)境400中的事務(wù)系統(tǒng)401可以從例如在數(shù)據(jù)庫中的資源管理器(RM)402獲得相關(guān)的實例信息404。

      當(dāng)調(diào)用用戶回調(diào)410時,可以從RM 402檢索最新的實例信息404,并且可以將其存儲到上下文405中。此外,事務(wù)系統(tǒng)401可以設(shè)置標志409,其指示接收到最新的實例信息404。

      根據(jù)本發(fā)明的實施例,事務(wù)處理403可以配置有一個或多個檢查點。例如,可以在服務(wù)調(diào)用之前和之后以及在初始化例程之后觸發(fā)檢查點。此外,當(dāng)建立或丟棄連接時,可以觸發(fā)檢查點。

      如圖4所示,在檢查點408處,事務(wù)處理403可以檢查標志409。如果標志409是有效(up),則事務(wù)服務(wù)器403可以基于檢索到的實例信息404更新事務(wù)上下文407,并將檢索到的實例信息404存儲到(共享存儲器中的)狀態(tài)表406中。

      圖5示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中支持具有各種檢查點的事務(wù)處理的圖示。如圖5所示,在步驟501處,事務(wù)處理開始。然后,事務(wù)處理可以前進到在步驟502處的初始化處理。

      初始化處理502可以包括一個或多個實例檢查點,例如,檢查點510。例如,在Tuxedo中,當(dāng)使用動態(tài)注冊時,在初始化例程(例如,tpsvrinit)之后,檢查點510可以位于服務(wù)器的啟動例程中。此外,當(dāng)服務(wù)器試圖建立到RM的連接時(例如,在tpopen()函數(shù)調(diào)用中成功調(diào)用xa_open()函數(shù)調(diào)用之后),可以觸發(fā)檢查點510。

      此外,在步驟512處,事務(wù)處理可以在初始化處理502期間檢索實例信息以啟用實例感知能力。

      另外,在步驟503處,事務(wù)處理可以檢查是否存在服務(wù)請求。在步驟505處,事務(wù)處理可以調(diào)用服務(wù)調(diào)度器,例如,tmsvcdsp()。如圖5所示,可以在調(diào)用服務(wù)例程507處理請求消息之前觸發(fā)檢查點506。此外,可以在完成服務(wù)例程507之后觸發(fā)另一個檢查點508。在步驟509處,事務(wù)處理可以結(jié)束服務(wù)調(diào)度器。

      否則,如果沒有服務(wù)請求并且事務(wù)處理要被關(guān)閉,則在步驟504處,事務(wù)處理可以開始關(guān)閉處理511。關(guān)閉處理511可以觸發(fā)檢查點513來清除實例ID信息。例如,在Tuxedo中,當(dāng)服務(wù)器要關(guān)閉到RM的連接時(例如,在tpclose()函數(shù)調(diào)用中調(diào)用xa_close()函數(shù)調(diào)用之前),可以觸發(fā)檢查點513。最后,事務(wù)處理在步驟514處結(jié)束。

      根據(jù)本發(fā)明的實施例,當(dāng)系統(tǒng)使用靜態(tài)注冊而不是動態(tài)注冊時,系統(tǒng)可以在檢查點512和檢查點513處表現(xiàn)不同??梢灾苯訖z索和更新實例信息而不用檢查啟動器。例如,當(dāng)使用靜態(tài)注冊時,XA服務(wù)器可以使用tpopen()/tpclose()函數(shù)調(diào)用來建立/刪除到RM的連接。此外,tpopen()函數(shù)可以在定制的tpsvrinit()函數(shù)調(diào)用中被調(diào)用,并且tpclose()函數(shù)可以在定制的tpsvrdone()函數(shù)中被調(diào)用。

      圖6示出了根據(jù)本發(fā)明實施例的用于在事務(wù)環(huán)境中支持資源管理器(RM)實例感知的示例性流程圖。如圖6所示,在步驟601處,事務(wù)服務(wù)器可以從與一個或多個RM實例相關(guān)聯(lián)的資源來源接收資源管理器(RM)實例信息,其中接收到的實例信息允許事務(wù)服務(wù)器感知事務(wù)服務(wù)器當(dāng)前連接到哪個RM實例。然后,在步驟602處,系統(tǒng)可以將接收到的實例信息保存到與事務(wù)服務(wù)器相關(guān)聯(lián)的一個或多個表中。此外,在步驟603處,系統(tǒng)允許事務(wù)服務(wù)器基于保存在一個或多個表中的實例信息處理全局事務(wù)。

      事務(wù)親密度

      圖7示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中基于實例感知支持事務(wù)親密度的圖示。如圖7所示,事務(wù)環(huán)境700可以利用一個或多個資源管理器(RM),例如與數(shù)據(jù)庫704相關(guān)聯(lián)的RM實例702,來支持全局事務(wù)710的處理。

      事務(wù)系統(tǒng)701可以將用于數(shù)據(jù)庫連接的請求711路由到事務(wù)服務(wù)器703(例如,利用默認路由策略)。此外,系統(tǒng)可以將親密度上下文705分配給事務(wù)服務(wù)器703。包含識別RM實例702的信息的親密度上下文705可以存儲在共享存儲器(例如Tuxedo中的全局事務(wù)表(GTT))中,并且可以利用消息來傳播。例如,事務(wù)服務(wù)器703可以基于上述實例感知特征通過親密度上下文705獲得RM實例名稱、RM/數(shù)據(jù)庫名稱和RM/數(shù)據(jù)庫服務(wù)名稱。

      另外,后續(xù)請求712可以基于親密度上下文705被路由到事務(wù)服務(wù)器703。此外,其它后續(xù)請求也可以被路由到連接到RM實例702的事務(wù)服務(wù)器703,直到全局事務(wù)710完成(或客戶端上下文結(jié)束)。

      根據(jù)本發(fā)明的實施例,事務(wù)親密度確保連接到RM實例702的相關(guān)數(shù)據(jù)庫請求711-712可以被路由到同一事務(wù)服務(wù)器703。因此,事務(wù)親密度可以通過最大化數(shù)據(jù)庫集群利用率來提高應(yīng)用的性能,因為事務(wù)親密度可以通過增加高速緩存命中的可能性來提高數(shù)據(jù)庫的性能。

      根據(jù)本發(fā)明的實施例,系統(tǒng)可以與其它路由策略一起應(yīng)用事務(wù)親密度路由策略,用于執(zhí)行全局事務(wù)710。例如,在Tuxedo中可以支持以下路由優(yōu)先級:

      1.用于域的事務(wù)優(yōu)先級路由

      2.客戶/服務(wù)器親密度路由

      3.事務(wù)親密度路由

      4.根據(jù)服務(wù)負載的負載均衡

      圖8示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中支持事務(wù)親密度路由的圖示。如圖8所示,事務(wù)系統(tǒng)可以利用事務(wù)親密度路由策略來支持全局事務(wù)的處理。

      在步驟801處,系統(tǒng)可以接收涉及數(shù)據(jù)庫連接的事務(wù)請求。然后,在步驟802處,系統(tǒng)可以檢查是否存在現(xiàn)有的親密度上下文。

      如果在全局事務(wù)中不涉及親密度上下文,則在步驟809處,系統(tǒng)可以執(zhí)行負載均衡路由。

      如果在全局事務(wù)中涉及現(xiàn)有的親密度上下文,則系統(tǒng)可以應(yīng)用事務(wù)親密度路由策略以便找到服務(wù)器。

      在步驟803處,系統(tǒng)可以嘗試找到與相同實例名稱、相同數(shù)據(jù)庫(DB)名稱和相同服務(wù)名稱相關(guān)聯(lián)的服務(wù)器。

      如果系統(tǒng)不能找到服務(wù)器,則在步驟804處,系統(tǒng)可以嘗試找到與相同的DB名稱和相同的服務(wù)名稱相關(guān)聯(lián)并且在當(dāng)前全局事務(wù)不涉及的組中的服務(wù)器。

      如果系統(tǒng)不能找到服務(wù)器,則在步驟805處,系統(tǒng)可以嘗試找到與相同的DB名稱和相同的實例名稱相關(guān)聯(lián)的服務(wù)器。

      如果事務(wù)系統(tǒng)不能找到服務(wù)器,則在步驟806處,系統(tǒng)可以嘗試找到與相同的DB名稱相關(guān)聯(lián)的服務(wù)器。

      在步驟807處,系統(tǒng)可以能夠基于現(xiàn)有的親密度上下文來找到服務(wù)器。另一方面,在步驟808處,系統(tǒng)可能不能找到服務(wù)器。然后,在步驟809處,系統(tǒng)可以嘗試根據(jù)負載均衡路由找到服務(wù)器。

      圖9示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中發(fā)送具有親密度上下文的消息的圖示。如圖9所示,事務(wù)系統(tǒng)901可以支持事務(wù)環(huán)境900中的事務(wù)處理。此外,事務(wù)系統(tǒng)901中的事務(wù)服務(wù)器903可以基于事務(wù)上下文907(例如Tuxedo中的TUXC)來支持事務(wù)處理。

      如圖9所示,事務(wù)服務(wù)器903可以從共享存儲器902(例如Tuxedo中的GTT)獲得相關(guān)的親密度上下文904,并且可以利用相關(guān)的親密度上下文914來更新事務(wù)上下文907。當(dāng)檢查點908被觸發(fā)時,系統(tǒng)可以將相關(guān)的親密度上下文914從事務(wù)上下文907復(fù)制到消息隊列905中的消息906中。

      因此,在將消息906發(fā)送到服務(wù)之前,事務(wù)系統(tǒng)901可以引用事務(wù)上下文907中相關(guān)的親密度上下文914用于服務(wù)路由。

      圖10示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中接收具有親密度上下文的消息的圖示。如圖10所示,事務(wù)環(huán)境1000中的事務(wù)系統(tǒng)1001可以使用消息隊列1005來接收一個或多個消息(例如消息1006)。

      事務(wù)系統(tǒng)1001中的事務(wù)服務(wù)器1003可以在初始引導(dǎo)之后連續(xù)地使消息出列(包含請求)。如圖10所示,事務(wù)服務(wù)器1003可以從消息隊列1005讀取消息1006,并且處理消息1006中的服務(wù)請求。

      在服務(wù)請求的處理期間,系統(tǒng)可以觸發(fā)檢查點1008,以便將親密度上下文從消息1006復(fù)制到事務(wù)上下文1007中。然后,系統(tǒng)可以使用事務(wù)上下文1007中的親密度上下文1014來更新共享存儲器1002中的親密度上下文1004。

      一旦消息1006中的請求已被處理,事務(wù)服務(wù)器1003進程就可以從消息隊列1005讀取更多消息。否則,事務(wù)服務(wù)器1003可以等待消息隊列1005,直到下一個請求到達。

      圖11示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中的客戶端上下文內(nèi)支持親密度路由的圖示。如圖11所示,事務(wù)環(huán)境1100中的事務(wù)系統(tǒng)1101可以利用一個或多個資源管理器(RM)支持客戶端上下文1110中的事務(wù)處理,一個或多個資源管理器(RM)例如是與數(shù)據(jù)庫1104相關(guān)聯(lián)的RM實例1102。例如,在客戶端上下文1110內(nèi),web對話可以被連接和斷開多次。在每個這些連接期間,對話可以引用和/或訪問相同(或相似)的數(shù)據(jù),諸如購物車。

      根據(jù)本發(fā)明的實施例,系統(tǒng)可以將用于數(shù)據(jù)庫連接的請求1111路由到事務(wù)服務(wù)器1103(例如,基于默認路由策略)。此外,系統(tǒng)可以向事務(wù)服務(wù)器1103分配指示RM 1102的親密度上下文1105。

      另外,客戶端上下文1110內(nèi)的一個或多個后續(xù)請求(例如,請求1112)可以基于親密度上下文1105被路由到事務(wù)服務(wù)器1103,直到客戶端上下文1110結(jié)束或相關(guān)的事務(wù)完成。因此,事務(wù)系統(tǒng)1101可以確保客戶端上下文1110內(nèi)的各種數(shù)據(jù)庫操作可以被引導(dǎo)到相同的RM實例1102。

      根據(jù)本發(fā)明的實施例,事務(wù)系統(tǒng)1101可以從數(shù)據(jù)庫接收各種負載均衡建議事件,其提示客戶端上下文1110內(nèi)的親密度。例如,在Tuxedo中,從數(shù)據(jù)庫接收到的負載均衡建議事件可以包括參數(shù)AFFINITY HINT,它是指示對于特定實例和服務(wù)組合親密度是活動的還是不活動的標志。當(dāng)負載均衡建議通過在服務(wù)上設(shè)置目標被啟用時,作為在web會話持續(xù)時間內(nèi)持續(xù)的臨時親密度的AFFINITYHINT參數(shù)可以被自動啟用。此外,提供相同服務(wù)的不同實例可以具有不同的AFFINITY HINT設(shè)置。

      根據(jù)本發(fā)明的實施例,如果相關(guān)的數(shù)據(jù)庫操作在事務(wù)內(nèi),則事務(wù)系統(tǒng)1101可以應(yīng)用事務(wù)親密度路由策略,而不是基于客戶端上下文的親密度策略。另一方面,系統(tǒng)可以基于默認的tuxedo負載均衡路由策略來實現(xiàn)基于客戶端上下文的親密度路由策略。

      圖12示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中跨不同域傳播親密度上下文的圖示。如圖12所示,事務(wù)環(huán)境1200可以利用一個或多個資源管理器(RM)支持事務(wù)處理,一個或多個資源管理器(RM)例如是與數(shù)據(jù)庫1215相關(guān)聯(lián)的RM實例1205。

      根據(jù)本發(fā)明的實施例,系統(tǒng)可以將用于數(shù)據(jù)庫連接的請求1211路由到事務(wù)服務(wù)器1203(例如,利用默認路由策略)。此外,系統(tǒng)可以向事務(wù)服務(wù)器1203分配指示RM實例1202的親密度上下文1207。

      另外,如果請求1211要在不同域之間傳送,則事務(wù)環(huán)境1200中的事務(wù)域可以跨域傳播親密度上下文信息。

      如圖12所示,事務(wù)域1201可以在將親密度關(guān)鍵字串1208發(fā)送到遠程域1202之前,將親密度上下文1207轉(zhuǎn)換成親密度關(guān)鍵字串1208。在接收到親密度關(guān)鍵字串1208之后,事務(wù)域1202可以將親密度關(guān)鍵字串1208轉(zhuǎn)換成可以由事務(wù)域1202中的事務(wù)服務(wù)器1004使用的親密度上下文1206。

      因此,一個或多個后續(xù)請求(例如請求1212)可以基于親密度上下文1206被引導(dǎo)到RM實例1202。

      圖13示出根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中將親密度上下文傳播到應(yīng)用服務(wù)器的圖示。如圖13所示,事務(wù)環(huán)境1300中的事務(wù)系統(tǒng)1301可以利用一個或多個資源管理器(RM)來支持事務(wù)處理,一個或多個資源管理器(RM)例如是與數(shù)據(jù)庫1315相關(guān)聯(lián)的RM實例1305。

      根據(jù)本發(fā)明的實施例,系統(tǒng)可以將用于數(shù)據(jù)庫連接的請求1311路由到事務(wù)服務(wù)器1303(例如,使用默認路由策略)。此外,系統(tǒng)可以向事務(wù)服務(wù)器1303分配指示RM實例1305的親密度上下文1307。

      另外,事務(wù)系統(tǒng)1301(例如,Tuxedo TDomain)可以經(jīng)由親密度關(guān)鍵字串1308將親密度上下文1307信息傳播到應(yīng)用服務(wù)器1302(例如,WebLogic應(yīng)用服務(wù)器)。例如,親密度上下文1307可以經(jīng)由連接器1304(例如,Tuxedo WTC)在事務(wù)系統(tǒng)1301和應(yīng)用服務(wù)器1302之間進行交換。

      當(dāng)事務(wù)系統(tǒng)1301發(fā)送請求到連接器1304時,事務(wù)系統(tǒng)1301可以將親密度上下文1307轉(zhuǎn)換成親密度關(guān)鍵字串1308。當(dāng)連接器1304接收到來自事務(wù)系統(tǒng)1301的請求時,連接器1306可以將親密度關(guān)鍵字串1308轉(zhuǎn)換成可由應(yīng)用服務(wù)器1302使用的事務(wù)上下文1306。

      當(dāng)連接器1304發(fā)送請求到事務(wù)系統(tǒng)1301時,連接器1304可以從與應(yīng)用服務(wù)器1302相關(guān)聯(lián)的事務(wù)上下文1306獲得親密度上下文。當(dāng)事務(wù)系統(tǒng)1301接收到來自連接器1304的請求時,事務(wù)系統(tǒng)1301可以將親密度關(guān)鍵字串1308轉(zhuǎn)換為親密度上下文1307。

      因此,應(yīng)用服務(wù)器1312中的一個或多個后續(xù)請求(例如,請求1312)可以基于親密度上下文1305被引導(dǎo)到RM實例1302。

      圖14示出了根據(jù)本發(fā)明實施例的用于在事務(wù)環(huán)境中基于實例感知支持事務(wù)親密度的示例性流程圖。如圖14所示,在步驟1401處,系統(tǒng)可以將請求路由到事務(wù)服務(wù)器,其中事務(wù)服務(wù)器連接到資源管理器(RM)實例。然后,在步驟1402處,系統(tǒng)可以向事務(wù)服務(wù)器分配親密度上下文,其中親密度上下文指示事務(wù)服務(wù)器與之相關(guān)聯(lián)的RM實例。另外,在步驟1403處,系統(tǒng)可以基于親密度上下文將與該請求相關(guān)的一個或多個后續(xù)請求路由到事務(wù)服務(wù)器。

      公共事務(wù)標識符(XID)

      圖15示出根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中利用不同事務(wù)標識符(XID)處理全局事務(wù)的圖示。如圖15所示,事務(wù)系統(tǒng)1500可以利用不同的資源管理器(RM)實例來支持全局事務(wù)1510的處理,不同的資源管理器(RM)實例例如是連接到數(shù)據(jù)庫1506的RM實例1504-1505。

      根據(jù)本發(fā)明的實施例,全局事務(wù)1510可以與全局事務(wù)標識符(GTRID 1520)相關(guān)聯(lián)。在全局事務(wù)1510中,在同一組中的涉及的事務(wù)服務(wù)器可以共享一個事務(wù)分支,而在不同組中的事務(wù)服務(wù)器可以使用不同的事務(wù)分支。

      如圖15所示,事務(wù)系統(tǒng)1500可以使用多個分支(例如,分支A-C 1521-1523)來處理全局事務(wù)1510。分支A-C 1521-1523中的每一個可以與分支限定符相關(guān)聯(lián),分支限定符例如是BQUAL A-C 1531-1533。

      根據(jù)本發(fā)明的實施例,事務(wù)系統(tǒng)1500可以使用不同的事務(wù)管理器(TM)(例如,TM A-C 1501-1503)來管理全局事務(wù)1510在不同分支A-C 1521-1523上的處理。

      例如,與事務(wù)標識符(XID)A 1511相關(guān)聯(lián)的TM A 1501可以負責(zé)管理全局事務(wù)1510在分支A 1521上的處理。與事務(wù)標識符(XID)B 1512相關(guān)聯(lián)的TM B 1502可以負責(zé)管理全局事務(wù)1510在分支B 1522上的處理。與事務(wù)標識符(XID)C 1513相關(guān)聯(lián)的TM C 1503可以負責(zé)管理全局事務(wù)1510在分支C 1523上的處理。

      如圖15所示,用于全局事務(wù)1510中的不同分支AC 1521-1523的XID AC 1511-1513可以共享同一GTRID 1520(和格式ID),并且可以具有不同的分支限定符(即,BQUAL AC 1531-1533)。

      根據(jù)本發(fā)明的實施例,當(dāng)全局事務(wù)1510中涉及多于一組的事務(wù)服務(wù)器時,系統(tǒng)可以對全局事務(wù)1510調(diào)用兩階段提交(2PC)處理。

      如圖15所示,即使當(dāng)全局事務(wù)1510中不同的參與的事務(wù)組(例如TM A-B 1501-1502)實際上與同一RM實例1504相關(guān)聯(lián)時,系統(tǒng)也可以使用2PC模型來處理全局事務(wù)1510。

      根據(jù)本發(fā)明的實施例,當(dāng)多于一個組在同一資源管理器實例1504上運行時,系統(tǒng)可以通過利用公共XID來提高處理全局事務(wù)1510的性能。

      圖16示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中利用公共XID處理全局事務(wù)的圖示。如圖16所示,事務(wù)系統(tǒng)1600可以利用連接到數(shù)據(jù)庫1606的資源管理器(RM)實例1604-1605來支持與GRTID 1620相關(guān)聯(lián)的全局事務(wù)1610的處理。

      此外,事務(wù)系統(tǒng)1600可以使用事務(wù)管理器(TM)A-C 1601-1603來管理全局事務(wù)1610在不同事務(wù)組(例如分支A-C 1621-1623)中的不同事務(wù)應(yīng)用服務(wù)器上的處理。

      根據(jù)本發(fā)明的實施例,資源管理器(RM)1604-1605中的每一個可以例如基于數(shù)據(jù)庫名稱、服務(wù)器名稱和實例名稱被唯一識別?;跀?shù)據(jù)庫實例感知能力,事務(wù)系統(tǒng)1600中的事務(wù)服務(wù)器能夠知道它當(dāng)前連接到哪個RM實例。

      如圖16所示,事務(wù)系統(tǒng)1600可以包括協(xié)調(diào)器,諸如TM A 1601。協(xié)調(diào)器TM A 1601與識別RM實例1604的實例ID 1641相關(guān)聯(lián)。

      此外,全局事務(wù)1610可以包括一個或多個參與服務(wù)器(例如參與者TM B-C 1602-1603),其可以位于協(xié)調(diào)器1601所位于的本地服務(wù)器節(jié)點上或者可以位于遠程服務(wù)器節(jié)點處。參與者TM B-C 1602-1603中的每一個還可以與識別其連接到的RM實例的實例ID(例如實例ID 1642-1643)相關(guān)聯(lián)。

      根據(jù)本發(fā)明的實施例,當(dāng)公共XID特征被啟用用于處理全局事務(wù)1610時,用于協(xié)調(diào)器TM A 1601的XID 1611可以在全局事務(wù)1610內(nèi)共享(即,XID 1611被用作公共XID)。因此,涉及多個組并在諸如Oracle數(shù)據(jù)庫的集群數(shù)據(jù)庫上運行的事務(wù)應(yīng)用可以通過利用數(shù)據(jù)庫實例感知來提高事務(wù)性能。

      如圖16所示,用于全局事務(wù)1610的協(xié)調(diào)器TM A 1601可以在全局事務(wù)1610的生命周期內(nèi)向不同參與者TM B-C 1602-1603傳播各種類型的信息,諸如XID 1611和實例ID 1641。

      另外,參與者TM B-C 1602-1603中的每一個可以通過將接收到的實例ID 1641與其自己的實例ID進行比較來確定它是否與協(xié)調(diào)器TM A 1601共享同一RM。如果實例ID相同,則參與者TM B-C 1602-1603可以將其自身標記為公共-XID服務(wù)器(或組)。

      例如,系統(tǒng)可以在分支B 1622上找到匹配,因為TM B 1602與TM A 1601共享同一RM實例1604。因此,TM B 1602可以使用公共XID 1611而不是它自己的XID用于支持事務(wù)處理。然后,TM B 1602可以通知協(xié)調(diào)器TM A 1601它使用公共XID 1611。在這種情況下,當(dāng)協(xié)調(diào)器TM A 1601操作來提交或回滾全局事務(wù)1610時,系統(tǒng)可以忽略分支B 1622,因為它使用公共XID 1611(其基于BQUAL A 1631)。

      另一方面,系統(tǒng)可能未在分支C 1623(其使用XID C 1613和BQUAL C 1633)上找到匹配,因為TM C 1603與不同的RM 1605(具有實例ID 1643)相關(guān)聯(lián)??蛇x地,TM C 1603可以通知協(xié)調(diào)器TM A 1601它不使用公共XID 1611。然后,系統(tǒng)可以根據(jù)兩階段提交(2PC)處理模型處理事務(wù)分支C 1623。

      根據(jù)本發(fā)明的實施例,不同的公共XID組(即,與協(xié)調(diào)器1601一樣與RM實例1604相關(guān)聯(lián)的事務(wù)服務(wù)器的組)可以經(jīng)由公共XID 1611訪問RM實例1604。

      另外,當(dāng)調(diào)用提交請求時,協(xié)調(diào)器1601可以不向本地公共-XID組發(fā)送任何消息。系統(tǒng)可以將每個本地公共-XID組的狀態(tài)立即改變?yōu)橹蛔x。此外,遠程公共-XID組可以接收來自協(xié)調(diào)器1601的準備請求,并且可以在沒有任何真實數(shù)據(jù)庫操作的情況下將其狀態(tài)改變?yōu)橹蛔x。因此,系統(tǒng)可能僅需要準備/提交這些組中的一個(例如協(xié)調(diào)器的組)。

      此外,如果實例ID改變,則系統(tǒng)可以改變公共-XID組以變?yōu)榉枪?XID組。例如,如果分支B 1622改變?yōu)槭褂昧硪粋€RM實例,則系統(tǒng)可以改為(例如,基于BQUAL B 1632)調(diào)用兩階段提交(2PC)處理。

      圖17示出了根據(jù)本發(fā)明實施例的在事務(wù)環(huán)境中基于數(shù)據(jù)庫實例感知來支持一階段提交(1PC)處理模型的圖示。如圖17所示,事務(wù)系統(tǒng)1700可以利用連接到數(shù)據(jù)庫1706的資源管理器(RM)實例1704來支持與GRTID 1720相關(guān)聯(lián)的全局事務(wù)1710的處理。

      事務(wù)系統(tǒng)1701可以包括多個事務(wù)管理器(TM)A-C 1701-1703,其用來管理全局事務(wù)1710在不同事務(wù)組(即分支A-C 1721-1723)中的處理。

      另外,TM A-C 1701-1703可以基于單個資源管理器(RM)實例1704管理全局事務(wù)1710的處理。TM A-C 1701-1703中的每一個可以維護實例標識符(ID),例如實例ID 1741-1743。

      如圖17所示,事務(wù)系統(tǒng)1700可以包括協(xié)調(diào)器(例如TM A 1701)。用于全局事務(wù)1710的協(xié)調(diào)器TM A 1701可以在全局事務(wù)1710的生命周期內(nèi)將諸如公共XID 1711和實例ID 1741的各種類型的信息傳播到不同的參與事務(wù)服務(wù)器(例如TM B-C 1702-1703)。

      根據(jù)本發(fā)明的實施例,基于事務(wù)親密度能力,系統(tǒng)可以將全局事務(wù)1710中的所有相關(guān)請求路由到同一RM實例1704。另外,基于實例感知能力,TM AC 1701-1703能夠知道在全局事務(wù)1710中只使用單個RM實例1704,因為不同的實例ID 1741-1743都識別同一RM實例1704。因此,協(xié)調(diào)器TM A 1701可以使用公共XID 1711(例如,基于BQUAL A 1731和GRTID 1720的其自己的XID),用于協(xié)調(diào)事務(wù)環(huán)境1700中的全局事務(wù)1710。

      如圖17所示,協(xié)調(diào)器TM A 1701可以在提交階段不向其它組發(fā)送任何“準備/提交”請求,因為它們都是公共-XID組。另外,系統(tǒng)可以利用一階段提交(1PC)處理模型。

      根據(jù)本發(fā)明的實施例,只讀一階段提交優(yōu)化可以顯著地提高系統(tǒng)性能。如果所有其它組都返回只讀,則它可以對保留的組執(zhí)行1PC處理。當(dāng)全局事務(wù)的所有分支被緊密耦合(例如在同一實例或同一RAC中)時,可以提高性能。

      例如,事務(wù)環(huán)境1700可以具有N個(其中N>1)參與的組用于處理全局事務(wù)1710。其中,M個(其中M<N)參與的組可以具有與協(xié)調(diào)器的實例ID相同的實例ID。

      在沒有數(shù)據(jù)庫實例感知的情況下利用兩階段提交(2PC)處理模型,系統(tǒng)可以對數(shù)據(jù)庫執(zhí)行N個準備操作和一個提交操作(例如,如圖15所示)。此外,系統(tǒng)可能需要寫事務(wù)日志。

      可替代地,基于數(shù)據(jù)庫實例感知(例如,如圖16所示),系統(tǒng)可能需要對數(shù)據(jù)庫執(zhí)行N-M個準備操作和一個提交操作(其中減少了M個準備操作)。

      另外,當(dāng)M=N-1時,其指示全局事務(wù)中的所有其它參與的組可以與協(xié)調(diào)器共享同一事務(wù)分支。然后,在處理全局事務(wù)時只有一個分支。系統(tǒng)可能只需要執(zhí)行一個提交操作,其中減少了N(或M+1)個準備操作。此外,系統(tǒng)可能不需要寫事務(wù)日志。

      圖18示出了根據(jù)本發(fā)明實施例的在事務(wù)中間件環(huán)境中基于數(shù)據(jù)庫實例感知來處理全局事務(wù)的圖示。如圖18所示,例如Oracle Tuxedo系統(tǒng)的事務(wù)系統(tǒng)可以利用多個事務(wù)組(例如,Tuxedo組A-B 1802-1803)來支持全局事務(wù)的處理。

      另外,Tuxedo組A-B 1802-1803中的每一個可以具有一組事務(wù)管理器服務(wù)器(TMS)。例如,組A 1802包括服務(wù)器A 1804和TMS A 1806,TMS A 1806可以充當(dāng)協(xié)調(diào)器。此外,組A 1802可以包括共享存儲器,例如Tuxedo公告板(BB)A 1808。另外,組B 1803包括服務(wù)器B 1805和TMS B 1807,以及共享存儲器,例如Tuxedo BB B 1809。

      在如圖18所示的例子中,在步驟1811處,客戶端1801可以通過調(diào)用函數(shù)調(diào)用tpcall(服務(wù)A)來訪問服務(wù)器A 1804上的服務(wù)(例如服務(wù)A)。然后,在步驟1812處,服務(wù)器A 1804可以在Tuxedo BB A 1808中創(chuàng)建相關(guān)的全局事務(wù)表條目(GTTE)。

      此外,在步驟1813處,客戶端1801可以通過調(diào)用函數(shù)調(diào)用tpcall(服務(wù)B)來訪問服務(wù)器B 1805上的另一服務(wù)(例如服務(wù)B)。在步驟1814處,服務(wù)器A 1804可以將關(guān)于組A 1802的相關(guān)信息添加到Tuxedo BB B 1809中。此外,在步驟1815處,客戶端1801可以將關(guān)于組B 1803的相關(guān)信息添加到Tuxedo BB A 1808。

      另外,在步驟1816處,客戶端1801可以通過調(diào)用函數(shù)調(diào)用tpcommit()來請求提交事務(wù)。如果全局事務(wù)中涉及的所有組在同一RM實例上運行,則Tuxedo可以對全局事務(wù)直接調(diào)用1PC。在步驟1817處,協(xié)調(diào)器TMS A 1806可以前進到提交全局事務(wù)。

      如果1PC調(diào)用成功,則在步驟1818處,協(xié)調(diào)器TMS A 1806可以在本地節(jié)點中刪除GTTE。然后,在步驟1819處,協(xié)調(diào)器1806可以通知組B(遠程公共-XID組)1803忘記其分支。最后,在步驟1820處,TMS B 1807可以更新Tuxedo BB B 1809。

      圖19示出了根據(jù)本發(fā)明實施例的利用公共XID在事務(wù)環(huán)境中跨多個域處理全局事務(wù)的圖示。如圖19所示,事務(wù)系統(tǒng)1900可以基于連接到數(shù)據(jù)庫1906的資源管理器(RM)實例1904支持全局事務(wù)1910跨例如域A-B 1951-1952的多個域的處理。

      此外,在事務(wù)系統(tǒng)1900中不同分支A-B 1921-1923可以共享GTRID 1920。本地域A 1951中的協(xié)調(diào)器TM A 1901可以將事務(wù)標識符(XID)1911和基于實例ID 1941的實例信息傳播到遠程域B 1952。

      根據(jù)本發(fā)明的實施例,由于不同的服務(wù)器引導(dǎo)順序,在域A 1951內(nèi)唯一的實例ID 1941在不同域(例如域B 1952)中可以是不同的。

      如圖19所示,不是跨域直接傳播實例ID 1941,而是協(xié)調(diào)器TM A 1901可以在實例ID 1941跨域傳播之前將實例ID 1941轉(zhuǎn)換為格式化的串1908。例如,格式化的串1908可以包括數(shù)據(jù)庫名稱、服務(wù)器名稱和實例名稱。

      此外,域網(wǎng)關(guān)服務(wù)器1905可以用于支持本地域A 1951和遠程域B 1952之間的通信。域網(wǎng)關(guān)服務(wù)器1905的出站接口可以將來自實例ID 1941的實例信息映射到格式化的串1908。域網(wǎng)關(guān)服務(wù)器1905的入站可以將從格式化的串1908的實例信息映射到實例ID 1941。

      例如,在Tuxedo中,由于業(yè)務(wù)原因,用戶可以將Tuxedo組劃分到不同的域中。諸如GWTDOMAIN服務(wù)器的網(wǎng)關(guān)服務(wù)器可以用于支持不同域之間的通信。另外,協(xié)調(diào)器域中的GWTDOMAIN服務(wù)器可以充當(dāng)代理。此外,當(dāng)通過GWTDOMAIN服務(wù)器在其它域中涉及的所有服務(wù)器都設(shè)置為使用公共XID時,GWTDOMAIN服務(wù)器可以被配置為使用公共XID。

      根據(jù)本發(fā)明的實施例,遠程域B 1952可以將公共XID 1911存儲為導(dǎo)入的XID 1913。如圖19所示,如果導(dǎo)入的XID 1913存在并且與導(dǎo)入的XID 1913相關(guān)聯(lián)的BQUAL A 1931有效,則分支B 1923(即公共-XID組)可以使用導(dǎo)入的XID 1943用于訪問數(shù)據(jù)庫。

      根據(jù)本發(fā)明的實施例,基于數(shù)據(jù)庫實例感知,當(dāng)域間事務(wù)涉及單個RM實例時,系統(tǒng)也可以在處理域間事務(wù)中利用一階段提交(1PC)模型。

      圖20示出了根據(jù)本發(fā)明實施例的用于利用公共XID在事務(wù)環(huán)境中處理全局事務(wù)的示例性流程圖。如圖20所示,在步驟2001處,用于全局事務(wù)的協(xié)調(diào)器可以將公共事務(wù)標識符和用于資源管理器實例的信息傳播到事務(wù)環(huán)境中全局事務(wù)的一個或多個參與者。然后,在步驟2002處,系統(tǒng)允許與協(xié)調(diào)器共享資源管理器實例的所述一個或多個參與者使用公共事務(wù)標識符。此外,在步驟2003處,協(xié)調(diào)器可以利用一個事務(wù)分支為共享資源管理器實例的所述一個或多個參與者處理全局事務(wù)。

      根據(jù)本發(fā)明的實施例,提供了用于在事務(wù)環(huán)境中支持事務(wù)處理的方法,包括:將請求路由到事務(wù)服務(wù)器,其中事務(wù)服務(wù)器連接到資源管理器(RM)實例;將親密度上下文分配給事務(wù)服務(wù)器,其中親密度上下文指示事務(wù)服務(wù)器與之相關(guān)聯(lián)的RM實例;以及基于親密度上下文將與該請求相關(guān)的一個或多個后續(xù)請求路由到事務(wù)服務(wù)器。

      根據(jù)本發(fā)明的實施例,該方法還包括:允許所述RM實例是集群數(shù)據(jù)庫中的實例。

      根據(jù)本發(fā)明的實施例,該方法還包括:允許所述請求和所述一個或多個后續(xù)請求與全局事務(wù)相關(guān)聯(lián)。

      根據(jù)本發(fā)明的實施例,該方法還包括:利用親密度路由策略路由所述一個或多個后續(xù)請求,其中親密度路由策略基于RM名稱、實例名稱和服務(wù)名稱。

      根據(jù)本發(fā)明的實施例,該方法還包括:允許所述請求和所述一個或多個后續(xù)請求與客戶端上下文相關(guān)聯(lián)。

      根據(jù)本發(fā)明的實施例,該方法還包括:在發(fā)送消息之前,經(jīng)由事務(wù)服務(wù)器在該消息中包括親密度上下文。

      根據(jù)本發(fā)明的實施例,該方法還包括:基于從另一事務(wù)服務(wù)器接收到的消息更新事務(wù)服務(wù)器中的親密度上下文。

      根據(jù)本發(fā)明的實施例,該方法還包括:利用親密度上下文串將親密度上下文從事務(wù)域轉(zhuǎn)移到另一事務(wù)域。

      根據(jù)本發(fā)明的實施例,該方法還包括:利用連接器將親密度上下文從事務(wù)系統(tǒng)轉(zhuǎn)移到應(yīng)用服務(wù)器。

      根據(jù)本發(fā)明的實施例,該方法還包括:利用連接器從應(yīng)用服務(wù)器接收親密度上下文。

      根據(jù)本發(fā)明的實施例,計算機程序包括當(dāng)由系統(tǒng)執(zhí)行時使系統(tǒng)執(zhí)行前述方法的方法的指令。

      根據(jù)本發(fā)明的實施例,計算機程序包括當(dāng)由系統(tǒng)執(zhí)行時使系統(tǒng)執(zhí)行前述方法的方法的指令。根據(jù)本發(fā)明的實施例,提供了用于支持在事務(wù)中間件環(huán)境中處理全局事務(wù)的系統(tǒng),包括:一個或多個微處理器;事務(wù)系統(tǒng),其在所述一個或多個微處理器上運行,其中事務(wù)系統(tǒng)操作來執(zhí)行包括以下各項的步驟:將請求路由到事務(wù)服務(wù)器,其中事務(wù)服務(wù)器連接到資源管理器(RM)實例;將親密度上下文分配給事務(wù)服務(wù)器,其中親密度上下文指示事務(wù)服務(wù)器與之相關(guān)聯(lián)的RM實例;以及基于親密度上下文將與請求相關(guān)的一個或多個后續(xù)請求路由到事務(wù)服務(wù)器。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,所述RM實例是集群數(shù)據(jù)庫中的實例。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,所述請求和所述一個或多個后續(xù)請求與全局事務(wù)相關(guān)聯(lián)。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,事務(wù)系統(tǒng)操作來使用親密度路由策略路由所述一個或多個后續(xù)請求,其中親密度路由策略基于RM名稱、實例名稱和服務(wù)名稱。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,所述請求和所述一個或多個后續(xù)請求與客戶端上下文相關(guān)聯(lián)。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,事務(wù)系統(tǒng)操作來在發(fā)送消息之前在該消息中包括親密度上下文。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,事務(wù)系統(tǒng)操作來基于從另一事務(wù)服務(wù)器接收到的消息更新事務(wù)服務(wù)器中的親密度上下文。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,事務(wù)系統(tǒng)操作來使用親密度上下文串將親密度上下文從事務(wù)域轉(zhuǎn)移到另一事務(wù)域。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,事務(wù)系統(tǒng)操作來使用連接器來進行以下中的至少一個:將親密度上下文從事務(wù)系統(tǒng)轉(zhuǎn)移到應(yīng)用服務(wù)器,以及從應(yīng)用服務(wù)器接收親密度上下文。

      根據(jù)本發(fā)明的實施例,提供了具有存儲在其上的指令的非暫時性機器可讀存儲介質(zhì),當(dāng)所述指令被執(zhí)行時使得系統(tǒng)執(zhí)行包括以下各項的步驟:將請求路由到事務(wù)服務(wù)器,其中事務(wù)服務(wù)器連接到資源管理器(RM)實例;將親密度上下文分配給事務(wù)服務(wù)器,其中親密度上下文指示事務(wù)服務(wù)器與之相關(guān)聯(lián)的RM實例;以及基于親密度上下文將與該請求相關(guān)的一個或多個后續(xù)請求路由到事務(wù)服務(wù)器。

      根據(jù)本發(fā)明的實施例,提供了用于在事務(wù)環(huán)境中支持事務(wù)處理的方法,包括:經(jīng)由事務(wù)服務(wù)器從與一個或多個RM實例相關(guān)聯(lián)的數(shù)據(jù)源接收資源管理器(RM)實例信息,其中接收到的實例信息允許事務(wù)服務(wù)器感知事務(wù)服務(wù)器當(dāng)前連接到哪個RM實例;將接收到的實例信息保存到與事務(wù)服務(wù)器相關(guān)聯(lián)的一個或多個表中;以及允許事務(wù)服務(wù)器基于保存在所述一個或多個表中的實例信息處理全局事務(wù)。

      根據(jù)本發(fā)明的實施例,該方法還包括:將所述一個或多個表存儲在可由多個事務(wù)服務(wù)器訪問的共享存儲器中。

      根據(jù)本發(fā)明的實施例,該方法還包括:向RM注冊回調(diào)操作,其中當(dāng)回調(diào)操作被觸發(fā)時,事件服務(wù)器操作來從RM檢索實例信息。

      根據(jù)本發(fā)明的實施例,該方法還包括:允許回調(diào)操作被靜態(tài)或動態(tài)地注冊。

      根據(jù)本發(fā)明的實施例,該方法還包括:將接收到的實例信息存儲在上下文中,并且啟用指示實例信息的接收的標志。

      根據(jù)本發(fā)明的實施例,該方法還包括:在執(zhí)行事務(wù)時在一個或多個檢查點處檢查標志,以及當(dāng)實例信息被更新時更新保存在所述一個或多個表中的實例信息。

      根據(jù)本發(fā)明的實施例,該方法還包括:允許所述一個或多個表包括以下中的至少一個:存儲一個或多個唯一數(shù)據(jù)庫名稱的RM表、存儲一個或多個實例名稱的實例表、以及存儲一個或多個數(shù)據(jù)庫服務(wù)名稱的服務(wù)表。

      根據(jù)本發(fā)明的實施例,該方法還包括:允許所述一個或多個表包括包含一個或多個服務(wù)器表條目的服務(wù)器表。

      根據(jù)本發(fā)明的實施例,該方法還包括:允許每個所述服務(wù)器表條目包含與事務(wù)服務(wù)器當(dāng)前連接到的RM實例相關(guān)聯(lián)的實例標識符(ID)。

      根據(jù)本發(fā)明的實施例,該方法還包括:允許每個所述實例ID是具有多個部分的整數(shù)。

      根據(jù)本發(fā)明的實施例,計算機程序包括當(dāng)由系統(tǒng)執(zhí)行時使系統(tǒng)執(zhí)行前述方法的方法的指令。

      根據(jù)本發(fā)明的實施例,提供了用于在事務(wù)環(huán)境中支持事務(wù)處理的系統(tǒng),包括:一個或多個微處理器;以及事務(wù)服務(wù)器,其在所述一個或多個微處理器上運行,其中事務(wù)服務(wù)器操作來執(zhí)行包括以下各項的步驟:從與一個或多個RM實例相關(guān)聯(lián)的數(shù)據(jù)源接收資源管理器(RM)實例信息,其中接收到的實例信息允許事務(wù)服務(wù)器感知事務(wù)服務(wù)器當(dāng)前連接到的RM實例;將接收到的實例信息保存到與事務(wù)服務(wù)器相關(guān)聯(lián)的一個或多個表中;以及基于保存在所述一個或多個表中的實例信息處理全局事務(wù)。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,事務(wù)服務(wù)器操作來將所述一個或多個表存儲在可由多個事務(wù)服務(wù)器訪問的共享存儲器中。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,事務(wù)服務(wù)器操作來向RM注冊回調(diào)操作,其中當(dāng)回調(diào)操作被觸發(fā)時,事務(wù)服務(wù)器操作來從RM檢索實例信息。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,回調(diào)操作適于靜態(tài)或動態(tài)地被注冊。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,事務(wù)服務(wù)器操作來將接收到的實例信息存儲在上下文中,并且啟用指示實例信息的接收的標志。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,在執(zhí)行事務(wù)時,事務(wù)服務(wù)器操作來:在一個或多個檢查點處檢查標志,并且當(dāng)實例信息被更新時,更新保存在一個或多個表中的實例信息。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,所述一個或多個表包括以下中的至少一個:存儲一個或多個唯一數(shù)據(jù)庫名稱的RM表、存儲一個或多個實例名稱的實例表、以及存儲一個或多個數(shù)據(jù)庫服務(wù)名稱的服務(wù)表。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,所述一個或多個表包括包含一個或多個服務(wù)器表條目的服務(wù)器表。

      根據(jù)本發(fā)明的實施例,在上述系統(tǒng)中,每個所述服務(wù)器表條目包含實例ID,其與事務(wù)服務(wù)器當(dāng)前連接到的RM實例相關(guān)聯(lián),并且其中所述實例ID是具有多個部分的整數(shù)。

      根據(jù)本發(fā)明的實施例,一種其上存儲有指令的非暫時性機器可讀存儲介質(zhì),當(dāng)所述指令被執(zhí)行時使系統(tǒng)執(zhí)行包括以下各項的步驟:經(jīng)由事務(wù)服務(wù)器從與一個或多個RM實例相關(guān)聯(lián)的數(shù)據(jù)源接收資源管理器(RM)實例信息,其中接收到的實例信息允許事務(wù)服務(wù)器感知事務(wù)服務(wù)器當(dāng)前連接到哪個RM實例;將接收到的實例信息保存到與事務(wù)服務(wù)器相關(guān)聯(lián)的一個或多個表中;以及允許事務(wù)服務(wù)器基于保存在所述一個或多個表中的實例信息處理全局事務(wù)。

      根據(jù)本發(fā)明的實施例,一種計算機程序包括當(dāng)由系統(tǒng)執(zhí)行時使系統(tǒng)執(zhí)行用于執(zhí)行前述方法的方法的方法的指令。

      本發(fā)明的許多特征可以在硬件、軟件、固件或其組合中、利用硬件、軟件、固件或其組合、或在硬件、軟件、固件或其組合的輔助下執(zhí)行。因此,本發(fā)明的特征可以利用處理系統(tǒng)(例如,包括一個或多個處理器)來實現(xiàn)。

      技術(shù)人員將認識到,根據(jù)任何給定實現(xiàn)的特定情況和要求,上述特征可以適當(dāng)?shù)乇舜私M合和/或與所附權(quán)利要求中限定的特征組合。

      本發(fā)明的特征可以在計算機程序產(chǎn)品中、利用計算機程序產(chǎn)品、或在計算機程序產(chǎn)品的輔助下實現(xiàn),其中計算機程序產(chǎn)品是具有存儲在其上/其中可用來編程處理系統(tǒng)以執(zhí)行本文給出的任何特征的指令的存儲介質(zhì)或計算機可讀介質(zhì)。存儲介質(zhì)可以包括但不限于任何類型的盤,包括軟盤、光盤、DVD、CD-ROM、微型驅(qū)動器和磁光盤、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、閃存存儲器設(shè)備、磁卡或光卡、納米系統(tǒng)(包括分子存儲器IC)或適于存儲指令和/或數(shù)據(jù)的任何類型的介質(zhì)或設(shè)備。

      存儲在任何一個機器可讀介質(zhì)上,本發(fā)明的特征可以結(jié)合在軟件和/或固件中,用于控制處理系統(tǒng)的硬件,并且用于使處理系統(tǒng)能夠與利用本發(fā)明的結(jié)果的其它機制交互。這種軟件或固件可以包括但不限于應(yīng)用代碼、設(shè)備驅(qū)動器、操作系統(tǒng)和執(zhí)行環(huán)境/容器。

      本發(fā)明的特征還可以利用例如諸如專用集成電路(ASIC)的硬件部件在硬件中實現(xiàn)。實現(xiàn)硬件狀態(tài)機以便執(zhí)行本文所描述的功能對相關(guān)領(lǐng)域的技術(shù)人員將是顯而易見的。

      此外,本發(fā)明可以利用包括一個或多個處理器、存儲器和/或根據(jù)本公開內(nèi)容的教導(dǎo)編程的計算機可讀存儲介質(zhì)的一個或多個常規(guī)通用或?qū)S脭?shù)字計算機、計算設(shè)備、機器或微處理器來方便地實現(xiàn)。如對軟件領(lǐng)域技術(shù)人員將顯而易見的,基于本公開內(nèi)容的教導(dǎo),適當(dāng)?shù)能浖幋a可以容易地由熟練的程序員準備。

      雖然以上已經(jīng)描述了本發(fā)明的各種實施例,但是應(yīng)當(dāng)理解,它們是作為例子而不是限制而給出。對于相關(guān)領(lǐng)域技術(shù)人員將顯而易見的是,在不脫離本發(fā)明的精神和范圍的情況下,可以在其中進行形式和細節(jié)上的各種改變。

      以上已經(jīng)借助于示出指定功能的執(zhí)行及其關(guān)系的功能構(gòu)建塊來描述本發(fā)明。為了方便描述,這些功能構(gòu)建塊的邊界在本文往往被任意地定義。只要適當(dāng)?shù)貓?zhí)行指定功能及其關(guān)系,就可以定義可替代的邊界。任何此類可替代的邊界因此在本發(fā)明的范圍和精神之內(nèi)。

      出于說明和描述的目的提供了本發(fā)明的前述描述。它并不旨在窮舉或?qū)⒈景l(fā)明限定到所公開的精確形式。本發(fā)明的寬度和范圍不應(yīng)受到任何上述示例性實施例的限制。許多修改和變化對本領(lǐng)域技術(shù)人員將是顯而易見的。修改和變化包括所公開特征的任何相關(guān)組合。選擇和描述實施例是為了最好地解釋本發(fā)明的原理及其實際應(yīng)用,從而使本領(lǐng)域其它技術(shù)人員能夠理解本發(fā)明的各種實施例和具有適于預(yù)期的特定用途的各種修改。意圖是本發(fā)明的范圍由所附權(quán)利要求及其等同物來限定。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1