欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在多租戶應(yīng)用服務(wù)器環(huán)境中進(jìn)行事務(wù)恢復(fù)的系統(tǒng)和方法與流程

文檔序號:11530655閱讀:407來源:國知局
在多租戶應(yīng)用服務(wù)器環(huán)境中進(jìn)行事務(wù)恢復(fù)的系統(tǒng)和方法與流程

本發(fā)明的實施例一般而言涉及應(yīng)用服務(wù)器和云環(huán)境,并且具體而言涉及用于在多租戶(multitenant)應(yīng)用服務(wù)器環(huán)境中進(jìn)行事務(wù)恢復(fù)的系統(tǒng)和方法。



背景技術(shù):

應(yīng)用服務(wù)器通常提供其中可以部署并運行軟件應(yīng)用的受管理環(huán)境?;谠频沫h(huán)境允許應(yīng)用在云中運行并利用由云提供的分布式資源。這樣的環(huán)境可以支持大量的用戶或租戶,其中一些用戶或租戶可能具有特定于該用戶或租戶的特定要求。



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

根據(jù)實施例,本文描述了一種用于在多租戶應(yīng)用服務(wù)器環(huán)境中進(jìn)行事務(wù)恢復(fù)的系統(tǒng)和方法。與分區(qū)相關(guān)聯(lián)的至少一個資源管理器可以被指定為用于該分區(qū)的確定器資源管理器,以便支持在處理兩階段提交事務(wù)時消除事務(wù)日志(tlog)。事務(wù)管理器可以在準(zhǔn)備確定器資源管理器之前在中間層事務(wù)系統(tǒng)中準(zhǔn)備所有其它資源管理器。此外,事務(wù)管理器可以依賴于由確定器資源提供的用于恢復(fù)事務(wù)的待提交的未完成事務(wù)的列表。事務(wù)管理器可以提交從資源管理器返回的與從確定器資源管理器返回的不確定事務(wù)列表匹配的不確定事務(wù)。否則,事務(wù)管理器可以回滾不確定事務(wù)。

附圖說明

圖1示出了根據(jù)實施例的、用于在應(yīng)用服務(wù)器、云或其它環(huán)境中支持多租賃(multi-tenancy)的系統(tǒng)。

圖2進(jìn)一步示出了根據(jù)實施例的、用于在應(yīng)用服務(wù)器、云或其它環(huán)境中支持多租賃的系統(tǒng)。

圖3進(jìn)一步示出了根據(jù)實施例的、用于在應(yīng)用服務(wù)器、云或其它環(huán)境中支持多租賃的系統(tǒng)。

圖4示出了根據(jù)實施例的、用于與示例性多租戶環(huán)境一起使用的域配置。

圖5進(jìn)一步示出了根據(jù)實施例的示例性多租戶環(huán)境。

圖6示出了根據(jù)本發(fā)明的實施例的事務(wù)環(huán)境的圖示。

圖7示出了支持在事務(wù)中間件機器環(huán)境中的兩階段提交的圖示。

圖8示出了在事務(wù)中間件機器環(huán)境中恢復(fù)不確定事務(wù)的圖示。

圖9示出了根據(jù)實施例的、支持用于在事務(wù)中間件機器環(huán)境中處理事務(wù)的兩階段提交(2pc,two-phasecommit)調(diào)用的嚴(yán)格排序的圖示。

圖10示出了根據(jù)實施例的、在不使用事務(wù)日志(tlog,transactionlog)的情況下恢復(fù)全局事務(wù)的圖示。

圖11示出了根據(jù)實施例的、在多租戶應(yīng)用服務(wù)器環(huán)境中在不使用事務(wù)日志(tlog)的情況下恢復(fù)全局事務(wù)的圖示。

圖12示出了根據(jù)實施例的、在多租戶應(yīng)用服務(wù)器環(huán)境中在不使用事務(wù)日志(tlog)的情況下恢復(fù)事務(wù)的圖示。

圖13是根據(jù)實施例的在多租戶應(yīng)用服務(wù)器環(huán)境中的事務(wù)恢復(fù)的說明性流程圖。

具體實施方式

根據(jù)實施例,本文描述了一種用于在多租戶應(yīng)用服務(wù)器環(huán)境中進(jìn)行事務(wù)恢復(fù)的系統(tǒng)和方法。與分區(qū)相關(guān)聯(lián)的至少一個資源管理器可以被指定為只用于該分區(qū)的確定器資源管理器,以便支持在處理兩階段提交事務(wù)時消除事務(wù)日志(tlog)。事務(wù)管理器可以在準(zhǔn)備確定器資源之前在中間層事務(wù)系統(tǒng)中準(zhǔn)備所有其它資源管理器。此外,事務(wù)管理器可以依賴于由確定器資源提供的用于恢復(fù)事務(wù)的待提交的未完成事務(wù)的列表。事務(wù)管理器可以提交從資源管理器返回的與從確定器資源管理器返回的不確定事務(wù)列表匹配的不確定事務(wù)。否則,事務(wù)管理器可以回滾不確定事務(wù)。

應(yīng)用服務(wù)器(例如,多租戶,mt)環(huán)境

圖1示出了根據(jù)實施例的、用于在應(yīng)用服務(wù)器、云或其它環(huán)境中支持多租賃的系統(tǒng)。

如圖1中所示,根據(jù)實施例,啟用軟件應(yīng)用的部署和執(zhí)行的應(yīng)用服務(wù)器(例如,多租戶,mt)環(huán)境100或其它計算環(huán)境可被配置為包括域102并且根據(jù)在運行時(runtime)被用來定義應(yīng)用服務(wù)器域的域102配置來操作。

根據(jù)實施例,應(yīng)用服務(wù)器可以包括被定義為在運行時使用的一個或多個分區(qū)104。每個分區(qū)可以與全局唯一的分區(qū)標(biāo)識符(id)和分區(qū)配置關(guān)聯(lián),并且還可以包括一個或多個資源組124,連同對資源組模板126和/或特定于分區(qū)的應(yīng)用或資源128的引用。域級別資源組、應(yīng)用和/或資源140也可以在域級別被定義,可選地具有對資源組模板的引用。

每個資源組模板160可以定義一個或多個應(yīng)用a162、b164、資源a166、b168和/或其它可部署的應(yīng)用或資源170,并且可以由資源組來引用。例如,如圖1中所示,分區(qū)104中的資源組124可以引用190資源組模板160。

一般而言,系統(tǒng)管理員可以定義分區(qū)、域級別資源組和資源組模板以及安全領(lǐng)域(realm);而分區(qū)管理員可以定義其自己的分區(qū)的各方面,例如通過創(chuàng)建分區(qū)級別資源組、將應(yīng)用部署到分區(qū)或者針對分區(qū)引用具體的領(lǐng)域。

圖2進(jìn)一步示出了根據(jù)實施例的、用于在應(yīng)用服務(wù)器、云或其它環(huán)境中支持多租賃的系統(tǒng)。

如圖2中所示,根據(jù)實施例,分區(qū)202可以包括例如資源組205,資源組205包括對資源組模板210的引用206、虛擬目標(biāo)(例如,虛擬主機)信息207以及可插拔數(shù)據(jù)庫(pdb)信息208。資源組模板(例如,210)可以定義,例如,多個應(yīng)用a211和b212,連同諸如java消息服務(wù)器(jms)服務(wù)器213、存儲轉(zhuǎn)發(fā)(saf)代理215、郵件會話組件216或java數(shù)據(jù)庫連接(jdbc)資源217之類的資源。

圖2中所示的資源組模板是作為例子提供的;根據(jù)其它實施例,可以提供不同類型的資源組模板和元素。

根據(jù)實施例,當(dāng)分區(qū)(例如,202)內(nèi)的資源組引用220特定的資源組模板(例如,210)時,與特定分區(qū)關(guān)聯(lián)的信息可以與所引用的資源組模板結(jié)合使用,以指示特定于分區(qū)的信息230,例如特定于分區(qū)的pdb信息。然后,特定于分區(qū)的信息可以被應(yīng)用服務(wù)器用來配置資源,例如pdb資源,以供分區(qū)使用。例如,與分區(qū)202關(guān)聯(lián)的特定于分區(qū)的pdb信息可以被應(yīng)用服務(wù)器用來利用適當(dāng)?shù)膒db238配置232容器數(shù)據(jù)庫(cdb)236,以供那個分區(qū)使用。

類似地,根據(jù)實施例,與特定分區(qū)關(guān)聯(lián)的虛擬目標(biāo)信息可被用來定義239特定于分區(qū)的虛擬目標(biāo)240以供該分區(qū)使用,虛擬目標(biāo)240例如是baylandurgentcare.com,然后可以使該虛擬目標(biāo)經(jīng)由統(tǒng)一資源定位符(url)(例如,http://baylandurgentcare.com)可訪問。

圖3進(jìn)一步示出了根據(jù)實施例的、用于在應(yīng)用服務(wù)器、云或其它環(huán)境中支持多租賃的系統(tǒng)。

根據(jù)實施例,諸如config.xml配置文件之類的系統(tǒng)配置被用來定義分區(qū),包括用于與那個分區(qū)關(guān)聯(lián)的資源組的配置元素,和/或其它分區(qū)特性??梢允褂锰匦悦Q/值對來為每個分區(qū)指定值。

根據(jù)實施例,多個分區(qū)可以在受管理的服務(wù)器/集群242內(nèi)或者在可以提供對cdb243的訪問并可經(jīng)由web層244訪問的類似環(huán)境內(nèi)執(zhí)行。這允許例如域或分區(qū)與(cdb的)pdb中的一個或多個關(guān)聯(lián)。

根據(jù)實施例,多個分區(qū)中的每個分區(qū),在這個例子中是分區(qū)a250和分區(qū)b260,可被配置為包括與那個分區(qū)關(guān)聯(lián)的多個資源。例如,分區(qū)a可被配置為包括資源組251,資源組251包含應(yīng)用a1252、應(yīng)用a2254和jmsa256,連同與pdba259關(guān)聯(lián)的數(shù)據(jù)源a257,其中該分區(qū)可經(jīng)由虛擬目標(biāo)a258訪問。類似地,分區(qū)b260可被配置為包括資源組261,資源組261包含應(yīng)用b1262、應(yīng)用b2264和jmsb266,連同與pdbb269關(guān)聯(lián)的數(shù)據(jù)源b267,其中該分區(qū)可經(jīng)由虛擬目標(biāo)b268訪問。

雖然上面的幾個例子示出了cdb和pdb的使用,但是根據(jù)其它實施例,可以支持其它類型的多租戶或非多租戶數(shù)據(jù)庫,其中可針對每個分區(qū)提供特定的配置,例如通過概要(schema)的使用,或不同數(shù)據(jù)庫的使用。

資源

根據(jù)實施例,資源是可被部署到環(huán)境的域的系統(tǒng)資源、應(yīng)用或者其它資源或?qū)ο蟆@?,根?jù)實施例,資源可以是可被部署到服務(wù)器、集群或其它應(yīng)用服務(wù)器目標(biāo)的應(yīng)用、jms、jdbc、javamail、wldf、數(shù)據(jù)源或者其它系統(tǒng)資源或其它類型的對象。

分區(qū)

根據(jù)實施例,分區(qū)是可以與分區(qū)標(biāo)識符(id)和配置關(guān)聯(lián)的域的運行時和管理細(xì)分或切片,并且可以通過資源組和資源組模板的使用來包含應(yīng)用和/或引用域范圍的資源。

一般而言,分區(qū)可以包含其自己的應(yīng)用、經(jīng)由資源組模板來引用域范圍的應(yīng)用、并且具有其自己的配置??煞謪^(qū)的實體可以包括資源,例如jms、jdbc、javamail、wldf資源,以及其它組件,諸如jndi命名空間、網(wǎng)絡(luò)流量、工作管理器以及安全策略和領(lǐng)域之類。在多租戶環(huán)境的背景下,系統(tǒng)可被配置為向租戶提供對與租戶關(guān)聯(lián)的分區(qū)的管理和運行時方面的訪問。

根據(jù)實施例,分區(qū)內(nèi)的每個資源組可以可選地引用資源組模板。分區(qū)可以具有多個資源組,并且資源組中的每一個可以引用資源組模板。每個分區(qū)可以定義用于在該分區(qū)的資源組引用的資源組模板中未指定的配置數(shù)據(jù)的特性。這使得分區(qū)能夠用來將在資源組模板中定義的可部署資源綁定到用于與那個分區(qū)一起使用的具體值。在一些情況下,分區(qū)可以重寫由資源組模板指定的配置信息。

根據(jù)實施例,例如由config.xml配置文件定義的分區(qū)配置可以包括多個配置元素,例如:“partition(分區(qū))”,其包含定義分區(qū)的屬性和子元素;“resource-group(資源組)”,其包含部署到分區(qū)的應(yīng)用和資源;“resource-group-template(資源組模板)”,其包含由那個模板定義的應(yīng)用和資源;“jdbc-system-resource-override(jdbc系統(tǒng)資源重寫)”,其包含特定于數(shù)據(jù)庫的服務(wù)名稱、用戶名和密碼;及“partition-properties(分區(qū)特性)”,其包含可用于資源組模板中的宏替換的特性鍵值。

在啟動時,系統(tǒng)可以使用由配置文件提供的信息根據(jù)資源組模板為每個資源生成特定于分區(qū)的配置元素。

資源組

根據(jù)實施例,資源組是可部署資源的被命名的、完全合格的集合,所述可部署資源可以在域級別或分區(qū)級別定義,并可以引用資源組模板。資源組中的資源被認(rèn)為是完全合格的,因為管理員已經(jīng)提供了開啟或連接到那些資源所需的所有信息,例如用于連接到數(shù)據(jù)源的憑據(jù)或者用于應(yīng)用的目標(biāo)信息。

系統(tǒng)管理員可以在域級別或者在分區(qū)級別聲明資源組。在域級別,資源組提供了一種方便的方式來分組相關(guān)的資源。系統(tǒng)可以與管理未分組的資源相同地管理在域級別資源組中聲明的資源,使得資源可以在系統(tǒng)啟動期間被開啟,并在系統(tǒng)關(guān)閉期間被停止。管理員還可以單獨地停止、開啟或移除組中的資源,并可以通過對組的操作來隱式地對組中的所有資源執(zhí)行動作。例如,停止資源組停止該組中尚未停止的所有資源;開啟資源組開啟該組中尚未開啟的任何資源;以及移除資源組移除該組中包含的所有資源。

在分區(qū)級別,系統(tǒng)或分區(qū)管理員可以在分區(qū)中配置零個或更多個服從任意安全限制的資源組。例如,在saas用例中,各種分區(qū)級別資源組可以引用域級別資源組模板;而在paas用例中,可以創(chuàng)建不引用資源組模板的分區(qū)級別資源組,而是表示將使得僅在那個分區(qū)內(nèi)可用的應(yīng)用及所述應(yīng)用相關(guān)的資源。

根據(jù)實施例,資源分組可被用來將應(yīng)用和它們使用的資源分組在一起,作為域內(nèi)的不同管理單元。例如,在下面描述的醫(yī)療記錄(medrec)應(yīng)用中,資源分組定義medrec應(yīng)用及其資源。多個分區(qū)可以運行相同的medrec資源組,每個分區(qū)使用特定于分區(qū)的配置信息,使得作為每個medrec實例的一部分的應(yīng)用特定于每個分區(qū)。

資源組模板

根據(jù)實施例,資源組模板是在域級別定義的可部署資源的集合,資源組模板可以從資源組引用,并且激活資源組模板的資源所需的一些信息可以不作為模板本身的一部分被存儲,使得資源組模板支持分區(qū)級別配置的規(guī)范(specification)。域可以包含任何數(shù)量的資源組模板,每個資源組模板可以包括例如一個或多個相關(guān)的java應(yīng)用和這些應(yīng)用所依賴的資源。關(guān)于這種資源的一些信息可以跨所有分區(qū)是相同的,而其它信息可以從一個分區(qū)到下一個分區(qū)變化。并非所有配置都需要在域級別指定–分區(qū)級別配置可以代替地通過宏或特性名稱/值對的使用來在資源組模板中指定。

根據(jù)實施例,特定的資源組模板可以被一個或多個資源組引用。一般而言,在任何給定的分區(qū)內(nèi),資源組模板一次可以被一個資源組引用,即,不是被同一分區(qū)內(nèi)的多個資源組同時引用;但是,它可以被不同分區(qū)中的另一資源組同時引用。包含資源組的對象,例如域或分區(qū),可以使用特性名稱/值分配來設(shè)置資源組模板中任何標(biāo)記(token)的值。當(dāng)系統(tǒng)利用進(jìn)行引用的資源組激活資源組模板時,它可以用在資源組的包含對象中設(shè)置的值來替換這些標(biāo)記。在一些情況下,系統(tǒng)還可以使用靜態(tài)配置的資源組模板和分區(qū)來為每個分區(qū)/模板組合生成運行時配置。

例如,在saas用例中,系統(tǒng)可以多次激活相同的應(yīng)用和資源,包括針對將使用所述應(yīng)用和資源的每個分區(qū)進(jìn)行一次激活。當(dāng)管理員定義資源組模板時,他們可以使用標(biāo)記來表示將在其它地方提供的信息。例如,在連接到crm相關(guān)的數(shù)據(jù)資源時使用的用戶名可以在資源組模板中被指示為\${crmdatausername}。

租戶

根據(jù)實施例,在諸如多租戶(mt)應(yīng)用服務(wù)器環(huán)境之類的多租戶環(huán)境中,租戶是可以由一個或多個分區(qū)和/或一個或多個用戶已知(tenant-aware)應(yīng)用表示或以其它方式與一個或多個分區(qū)和/或一個或多個用戶已知應(yīng)用關(guān)聯(lián)的實體。

例如,租戶可以表示確切的用戶組織,諸如不同的外部公司或特定企業(yè)內(nèi)的不同部門(例如,hr和財務(wù)部門),確切的用戶組織中的每一個可以與不同的分區(qū)相關(guān)聯(lián)。租戶全局唯一身份(租戶id)是特定用戶在特定時刻與特定租戶的關(guān)聯(lián)。系統(tǒng)可以從用戶身份得出特定用戶屬于哪個租戶,例如通過參考用戶身份存儲庫(store)。用戶身份使系統(tǒng)能夠?qū)嵤┯脩舯皇跈?quán)執(zhí)行的那些動作,包括但不限于用戶可以屬于哪個租戶。

根據(jù)實施例,系統(tǒng)使得能夠?qū)⒉煌鈶舻墓芾砗瓦\行時彼此隔離。例如,租戶可以配置他們的應(yīng)用的一些行為以及他們可以訪問的資源。系統(tǒng)可以確保特定的租戶不能管理屬于另一租戶的制造品(artifact);并且,在運行時,代表特定租戶工作的應(yīng)用僅參考與那個租戶相關(guān)聯(lián)的資源,而不參考與其他租戶相關(guān)聯(lián)的資源。

根據(jù)實施例,租戶未知(tenant-unaware)的應(yīng)用是不包含明確處理租戶的邏輯的應(yīng)用,使得該應(yīng)用使用的任何資源都可以是可訪問的,而不管哪個用戶提交了該應(yīng)用正在對其進(jìn)行響應(yīng)的請求。相比之下,用戶已知的應(yīng)用包括明確處理租戶的邏輯。例如,基于用戶的身份,應(yīng)用可以導(dǎo)出用戶所屬的租戶并且使用那個信息來訪問特定于租戶的資源。

根據(jù)實施例,系統(tǒng)使用戶能夠部署明確寫為用戶已知的應(yīng)用,使得應(yīng)用開發(fā)者可以獲得當(dāng)前租戶的租戶id。然后,用戶已知的應(yīng)用可以使用租戶id來處理正在使用應(yīng)用的單個實例的多個租戶。

例如,支持單個醫(yī)生的辦公室或醫(yī)院的medrec應(yīng)用可以對兩個不同的分區(qū)或租戶可見,例如baylandurgentcare(bayland緊急護(hù)理)租戶和valleyhealth(valley健康)租戶,每個租戶能夠訪問特定于租戶的單獨資源,諸如單獨的pdb,而無需改變底層應(yīng)用代碼。

示例性域配置和多租戶環(huán)境

根據(jù)實施例,應(yīng)用可以在域級別被部署到資源組模板,或者被部署到范圍限定到分區(qū)或范圍限定到域的資源組??梢允褂脼槊總€應(yīng)用或每個分區(qū)指定的部署計劃來重寫應(yīng)用配置。部署計劃也可以指定為資源組的一部分。

圖4示出了根據(jù)實施例的、用于與示例性多租戶環(huán)境一起使用的域配置。

根據(jù)實施例,當(dāng)系統(tǒng)開啟分區(qū)時,它根據(jù)所提供的配置向相應(yīng)的數(shù)據(jù)庫實例創(chuàng)建虛擬目標(biāo)(例如,虛擬主機)和連接池,包括每個分區(qū)一個虛擬目標(biāo)和連接池。

通常,每個資源組模板可以包括一個或多個相關(guān)的應(yīng)用和那些應(yīng)用所依賴的資源。通過提供資源組模板中可部署的資源到與分區(qū)關(guān)聯(lián)的具體值的綁定,每個分區(qū)可以提供未在它所引用的資源組模板中指定的配置數(shù)據(jù);在一些情況下,包括重寫由資源組模板指定的某些配置信息。這使得系統(tǒng)能夠利用每個分區(qū)已經(jīng)定義的特性值來為每個分區(qū)不同地激活由資源組模板表示的應(yīng)用。

在一些實例中,分區(qū)可以包含不引用資源組模板或直接定義它們自己的分區(qū)范圍限定的可部署資源的資源組。在分區(qū)中定義的應(yīng)用和數(shù)據(jù)源一般僅可用于那個分區(qū)。資源可以被部署成使得它們可以利用partition:<partitionname>/<resourcejndiname>或domain:<resourcejndiname>跨多個分區(qū)被訪問。

例如,medrec應(yīng)用可以包括多個java應(yīng)用、數(shù)據(jù)源、jms服務(wù)器和郵件會話。為了為多個租戶運行medrec應(yīng)用,系統(tǒng)管理員可以定義單個medrec資源組模板286,在該模板中聲明那些可部署的資源。

與域級別的可部署資源相比,在資源組模板中聲明的可部署資源可能未在模板中完全配置,或者不能按原樣被激活,這是因為它們?nèi)鄙僖恍┡渲眯畔ⅰ?/p>

例如,medrec資源組模板可以聲明由應(yīng)用使用的數(shù)據(jù)源,但它可以不指定用于連接到數(shù)據(jù)庫的url。與不同租戶關(guān)聯(lián)的分區(qū),例如分區(qū)buc-a290(baylandurgentcare,buc)和分區(qū)vh-a292(valleyhealth,vh),通過每個分區(qū)包括引用296、297medrec資源組模板的medrec資源組293、294,可以引用一個或多個資源組模板。然后,該引用可被用來創(chuàng)建302、306用于每個租戶的虛擬目標(biāo)/虛擬主機,包括與buc-a分區(qū)關(guān)聯(lián)的虛擬主機baylandurgentcare.com,以供baylandurgentcare租戶使用;以及與vh-a分區(qū)關(guān)聯(lián)的虛擬主機valleyhealth.com308,以供valleyhealth租戶使用。

圖5進(jìn)一步示出了根據(jù)實施例的示例性多租戶環(huán)境。如圖5中所示,并且繼續(xù)上面的例子,其中兩個分區(qū)引用medrec資源組模板,根據(jù)實施例,伺服小程序(servlet)引擎310可被用來支持多個租戶環(huán)境,在這個例子中是baylandurgentcarephysician(bayland緊急護(hù)理醫(yī)師)租戶環(huán)境320和valleyhealthphysician(valley健康醫(yī)師)租戶環(huán)境330。

根據(jù)實施例,每個分區(qū)321、331可以定義不同虛擬目標(biāo)以及不同url322、332,在所述不同虛擬目標(biāo)上接受用于該租戶環(huán)境的傳入流量,所述不同url322、332用于連接到該分區(qū)及其資源324、334,在這個例子中資源324、334分別包括baylandurgentcare(bayland緊急護(hù)理)數(shù)據(jù)庫或valleyhealth(valley健康)數(shù)據(jù)庫。數(shù)據(jù)庫實例可以使用兼容概要,因為相同的應(yīng)用代碼將對這兩個數(shù)據(jù)庫都執(zhí)行。當(dāng)系統(tǒng)開啟分區(qū)時,它可以創(chuàng)建到相應(yīng)數(shù)據(jù)庫實例的連接池和虛擬目標(biāo)。

事務(wù)環(huán)境和全局事務(wù)

圖6示出了根據(jù)本發(fā)明的實施例的事務(wù)環(huán)境的圖示。如圖6所示,事務(wù)環(huán)境600可以包括應(yīng)用程序602、一個或多個事務(wù)管理器(tm)603、多個資源管理器(rm)604-606以及一個或多個持久存儲庫,例如,數(shù)據(jù)庫610。

根據(jù)本發(fā)明的實施例,應(yīng)用程序602可以指定構(gòu)成事務(wù)的動作。如所示出的,應(yīng)用程序602與事務(wù)管理器603通信,以開始、提交或中止事務(wù),并且事務(wù)管理器603可以將事務(wù)的開始、結(jié)束和處置發(fā)送回應(yīng)用程序602。此外,應(yīng)用程序602可以為事務(wù)管理器603定義事務(wù)邊界,事務(wù)管理器603可以與多個資源管理器(rm)604-606交換事務(wù)信息。此外,應(yīng)用程序602可以經(jīng)由嵌入式結(jié)構(gòu)化查詢(sql)與多個資源管理器604-606通信以進(jìn)行工作。

多個資源管理器604-606可以提供對持久存儲庫的訪問,例如,數(shù)據(jù)庫610(或多個數(shù)據(jù)庫)。根據(jù)本發(fā)明的實施例,多個資源管理器604-606可以實現(xiàn)xa(extendedarchitecture,擴展體系架構(gòu))接口,以處理數(shù)據(jù)庫到持久存儲庫的透明的連接和斷開。xa接口可以基于描述用于事務(wù)協(xié)調(diào)、提交和恢復(fù)的協(xié)議的規(guī)范。參與事務(wù)的xa資源可以包括xa資源管理器和后端持久存儲庫。

根據(jù)本發(fā)明的各種實施例,事務(wù)系統(tǒng)可以支持全局事務(wù),全局事務(wù)可以在多于一個服務(wù)器上執(zhí)行并且能夠訪問來自多于一個資源管理器的數(shù)據(jù)。

全局事務(wù)可以被視為由四個特性(即,原子性、一致性、隔離性和持久性(acid))表征的特定操作序列。全局事務(wù)可以是邏輯工作單元,其中事務(wù)的所有部分或者成功或者沒有效果。同樣,執(zhí)行將資源從一個一致性狀態(tài)正確地變換到另一個一致狀態(tài)的操作。此外,在全局事務(wù)內(nèi),中間結(jié)果通常不可由其它事務(wù)訪問,但是同一事務(wù)中的其它進(jìn)程可以訪問該數(shù)據(jù)。同樣,全局事務(wù)的已完成序列的效果通常不會由于失敗而改變。

此外,根據(jù)實施例,全局事務(wù)可以包括若干個本地事務(wù),每個本地事務(wù)訪問單個資源管理器。本地事務(wù)可以訪問單個數(shù)據(jù)庫或文件,并且可以由負(fù)責(zé)在該確切的數(shù)據(jù)庫處執(zhí)行更新的并發(fā)控制和原子性的資源管理器控制。給定的本地事務(wù)在完成其訪問時可以或者成功或者不成功。

根據(jù)實施例,事務(wù)管理器603可以向事務(wù)環(huán)境600中的不同事務(wù)分配全局事務(wù)標(biāo)識符(gtrid)。事務(wù)管理器603可以監(jiān)視事務(wù)的進(jìn)展,并且負(fù)責(zé)確保事務(wù)完成以及提供故障恢復(fù)。此外,事務(wù)管理器603可以經(jīng)由xa接口與多個資源管理器604-605通信以交換事務(wù)信息,諸如向資源管理器604-605發(fā)送兩階段提交調(diào)用。

兩階段提交(2pc)

兩階段提交(2pc)協(xié)議可以用于執(zhí)行事務(wù),諸如松散耦合的全局事務(wù)。兩階段提交協(xié)議(2pc)可以包括準(zhǔn)備階段和提交階段。在準(zhǔn)備階段中,協(xié)調(diào)事務(wù)管理器(tm)指示參與的資源管理器(rm)采取用于提交或者中止事務(wù)的必要步驟。在提交階段中,事務(wù)管理器(tm)基于準(zhǔn)備階段的結(jié)果決定是提交事務(wù)還是中止事務(wù)。

圖7示出了支持在事務(wù)中間件機器環(huán)境中的兩階段提交的圖示。如圖7所示,事務(wù)環(huán)境700可以包括支持各種事務(wù)的執(zhí)行的事務(wù)管理器701以及管理一個或多個數(shù)據(jù)源(例如,數(shù)據(jù)庫705)的一個或多個資源管理器702-704。

例如,事務(wù)管理器701可以執(zhí)行涉及事務(wù)分支a711、事務(wù)分支b712和事務(wù)分支c713的事務(wù),其中每個事務(wù)分支可以分別針對資源管理器702-704執(zhí)行。如果任何分支在事務(wù)中失敗,則事務(wù)管理器701可以幫助資源管理器702-704決定是提交事務(wù)還是回滾事務(wù)。

如圖7所示,事務(wù)管理器701可以在所有三個分支上向資源管理器702-704發(fā)送準(zhǔn)備指令(步驟1、2和3)。在資源管理器702-704返回“ok”投票(步驟4、5和6)之后,事務(wù)管理器701可以向數(shù)據(jù)庫705寫入事務(wù)日志(tlog)(步驟7)。

事務(wù)日志可以被寫入文件或數(shù)據(jù)庫,使得如果在提交階段期間任何分支失敗,則事務(wù)管理器701可以具有足夠的信息來恢復(fù)事務(wù)。

然后,事務(wù)管理器701可以指示資源管理器702-704提交所有三個分支(步驟8、9和10)。資源管理器702-704可以在成功完成提交階段(步驟11、12和13)之后通知事務(wù)管理器701。

基于事務(wù)日志(tlog)的事務(wù)恢復(fù)

根據(jù)本發(fā)明的一個實施例,事務(wù)日志(tlog)可以存儲用于由事務(wù)管理器做出的提交事務(wù)的決定。例如,tlog可以存儲資源檢查點記錄,其可以由事務(wù)管理器持久保存以使其能夠跟蹤不同的參與的xa資源。

當(dāng)事務(wù)管理器在準(zhǔn)備階段之后從所有事務(wù)分支接收到成功投票時,事務(wù)可以被寫入到tlog中。tlog中的事務(wù)記錄可以至少包括事務(wù)標(biāo)識符(xid),該事務(wù)標(biāo)識符進(jìn)一步包括由事務(wù)管理器分配的gtrid和由執(zhí)行事務(wù)的資源管理器分配的本地xid。

此外,tlog可以保持被標(biāo)記為要提交的正在處理的(in-flight)事務(wù)的狀態(tài)的記錄。tlog有益于恢復(fù)不確定事務(wù),不確定事務(wù)是已經(jīng)被準(zhǔn)備但尚未在中間層事務(wù)系統(tǒng)中提交的事務(wù),例如在系統(tǒng)崩潰之后。在不恢復(fù)不確定事務(wù)的情況下,系統(tǒng)可能在崩潰之后處于不正確和不一致的狀態(tài)。

例如,如果系統(tǒng)在兩階段提交事務(wù)期間失敗,那么對一個后端數(shù)據(jù)存儲庫的更新可能已經(jīng)提交,但是在同一事務(wù)中對另一個數(shù)據(jù)存儲庫的更新可能尚未被指示提交,即,數(shù)據(jù)存儲庫的更新仍然未決。一旦系統(tǒng)的失敗部分已被重新啟動,保持未決更新的數(shù)據(jù)存儲庫就可能無法知道更新應(yīng)該被提交還是回滾。

圖8示出了在事務(wù)中間件機器環(huán)境中恢復(fù)不確定事務(wù)的圖示。如圖8所示,事務(wù)中間件機器環(huán)境800包括事務(wù)管理器801、以及多個資源管理器802-804和持久存儲庫,即,數(shù)據(jù)庫805。

事務(wù)管理器801可以通過讀取/引用tlog來自動地確定全局事務(wù)是否是不確定的(步驟1)。然后,事務(wù)管理器801可以輪詢參與的資源管理器802-804的相關(guān)后端數(shù)據(jù)存儲庫。每個參與的資源管理器802-804可以返回不確定事務(wù)的列表,所述不確定事務(wù)是事務(wù)管理器801不知道是將其回滾還是提交的事務(wù)(步驟2、4和6)。

此外,事務(wù)管理器801可以將每個不確定事務(wù)與tlog匹配,并且繼續(xù)提交或回滾在不同資源管理器802-804上的不確定事務(wù)(步驟3、5和7)。例如,當(dāng)不確定事務(wù)出現(xiàn)在tlog中時,可以調(diào)用xaresource.commit()來將不確定事務(wù)提交給在tlog中指定的資源管理器。另一方面,當(dāng)事務(wù)不在tlog中時,即,在崩潰之前尚未對事務(wù)做出提交決定時,可以調(diào)用xaresource.rollback()以在資源管理器上基于事務(wù)標(biāo)識符(xid)將其回滾。

如圖8所示,可能已在資源管理器802上準(zhǔn)備好事務(wù),并且系統(tǒng)在資源管理器802可以向事務(wù)管理器801發(fā)送成功投票之前崩潰。然后,事務(wù)管理器801可能不能從所有事務(wù)分支接收成功投票,并且因此可能無法在tlog中記錄事務(wù)。因此,事務(wù)管理器801可以在分支事務(wù)各自的資源管理器802-804上回滾所有分支事務(wù)。因此,使用這種一致的和可預(yù)測的事務(wù)恢復(fù)方法,事務(wù)管理器可以避免其中一些分支被提交而一些分支被回滾的混合啟發(fā)式完成。

減輕對事務(wù)管理器恢復(fù)日志的需要

在事務(wù)環(huán)境中,為了進(jìn)行恢復(fù)和確保acid特性而將恢復(fù)信息持久保存到穩(wěn)定存儲的需要通常是兩階段的設(shè)計要求。但是,將恢復(fù)信息持久保存到穩(wěn)定存儲(例如,tlog)的需要以及對資源管理器的實際協(xié)議網(wǎng)絡(luò)調(diào)用,會對2pc事務(wù)造成性能成本。它也會帶來由于高可用性穩(wěn)定存儲所需的共享文件系統(tǒng)或數(shù)據(jù)庫存儲而導(dǎo)致的顯著的資產(chǎn)容量成本以及由于該存儲的管理而導(dǎo)致的管理成本。這些成本僅在其中需要(同步地)復(fù)制及管理該存儲的站點范圍的災(zāi)難恢復(fù)的情況下才增加。在這種系統(tǒng)中,從輔助活動站點上的應(yīng)用服務(wù)器訪問駐留在主站點附近的數(shù)據(jù)庫,并且該數(shù)據(jù)庫又必須被同步地同步到輔助/備用站點。在這種非常常見的情況下,經(jīng)常需要跨有意隔開一段距離的至少兩個站點進(jìn)行(往返地)通信,并且強迫對于每個單個事務(wù)在這兩個站點上的穩(wěn)定存儲。

例如,利用xa兩階段記錄算法的典型2pc事務(wù)可以涉及以下步驟。應(yīng)用可以在事務(wù)中使用多個xa資源,并為該事務(wù)發(fā)起(issue)提交。然后,事務(wù)管理器可以在所有xa資源參與者(例如,資源管理器)上發(fā)起準(zhǔn)備(例如,xaresource.prepare)。然后,事務(wù)管理器可以將事務(wù)日志持久保存到穩(wěn)定存儲(例如,數(shù)據(jù)庫),其中事務(wù)日志至少包含事務(wù)的格式id和全局事務(wù)id。在從資源管理器接收到成功(ok)投票之后,事務(wù)管理器可以在所有xa資源參與者上發(fā)起提交(xaresource.commit)。然后,事務(wù)管理器可以(通常是懶惰、批量地等)清除/刪除事務(wù)記錄。在失敗的情況下,持久保存的事務(wù)記錄與從在所有涉及的資源管理器上做出的xaresource.recover調(diào)用返回的不確定事務(wù)id進(jìn)行匹配,并且相應(yīng)地通過提交或回滾進(jìn)行恢復(fù)。

根據(jù)實施例,減輕對事務(wù)管理器記錄和持久保存恢復(fù)日志的需要可以是對現(xiàn)有系統(tǒng)提供顯著改進(jìn)的優(yōu)化,可以通過減少對額外通信和持久性開銷的需要來提供所述顯著改進(jìn)。

根據(jù)本發(fā)明的實施例,通過使用涉及兩階段提交調(diào)用的嚴(yán)格排序和將至少一個資源參與者分類為恢復(fù)的確定器資源的技術(shù),可以減輕對事務(wù)日志的需要,同時仍然提供事務(wù)恢復(fù)和acid特性。

根據(jù)實施例,事務(wù)管理器可以利用事務(wù)中的多個資源并為事務(wù)發(fā)起提交。多個資源中的特定資源可以被配置為被指定為事務(wù)的確定器(在本文中也被稱為確定器資源和確定器資源管理器)。在多租戶應(yīng)用服務(wù)器環(huán)境的情況下,分區(qū)可以為每個事務(wù)指定至少一個特定于分區(qū)的確定器資源。如果沒有配置/選擇確定器資源,則事務(wù)系統(tǒng)可以提名一個確定器資源并且將該確定器資源持久保存在配置中。如果在多租戶應(yīng)用服務(wù)器環(huán)境中未配置確定器資源,則諸如與分區(qū)內(nèi)的實例化的資源組相關(guān)聯(lián)的應(yīng)用之類的應(yīng)用可以提名特定于分區(qū)的確定器資源,并且將該特定于分區(qū)的確定器資源持久保存在配置中。

根據(jù)實施例,當(dāng)資源(包括被指定為確定器資源的資源)的組(例如,組合)被第一次使用時,或者資源的新組合在兩階段事務(wù)中被第一次使用時,資源的組合(即,資源管理器的組合)可以由事務(wù)處理子系統(tǒng)自動地捕獲并持久保存在配置中。這種配置的持久保存剛好發(fā)生在為這種事務(wù)發(fā)起第一次準(zhǔn)備之前。如果該配置改變失敗,則事務(wù)可以被回滾。雖然不是必需的,但是這可以提供進(jìn)一步的優(yōu)化,因為它減少了在恢復(fù)期間需要xaresource.recover調(diào)用的資源集合。

根據(jù)實施例,在其中資源被指定為確定器資源并且嚴(yán)格排序被強制執(zhí)行的事務(wù)期間,事務(wù)管理器放棄任何事務(wù)記錄。事務(wù)管理器可以在所有資源參與者上發(fā)起準(zhǔn)備(xaresource.prepare),最后準(zhǔn)備“確定器”資源。如果在除確定器資源之外的資源上的準(zhǔn)備調(diào)用失敗,則將不準(zhǔn)備確定器,并且事務(wù)可以被回滾。如果失敗在確定器資源的準(zhǔn)備期間發(fā)生,則所有非確定器資源可以被回滾,隨后是確定器資源的回滾。

根據(jù)實施例,事務(wù)管理器可以僅在一旦確定器資源已指示其已經(jīng)成功準(zhǔn)備時才在事務(wù)中在資源上發(fā)起提交。然后,事務(wù)管理器可以發(fā)起提交(xaresource.commit)。事務(wù)管理器在所有xa資源參與者上發(fā)起xaresource.commit,最后提交確定器資源。與準(zhǔn)備調(diào)用一樣,確定器資源直到所有非確定器資源已成功提交之后才提交。可以發(fā)起全局重試提交直到放棄定時器到期為止。

根據(jù)實施例,在失敗的情況下,可以在配置中的所有非確定器資源上進(jìn)行xaresource.recover掃描,并且將不確定事務(wù)id與從確定器資源的xaresource.recovery返回的不確定事務(wù)id進(jìn)行匹配。如果在確定器資源列表中存在匹配(例如,現(xiàn)有事務(wù)id),則可以發(fā)起通過提交的恢復(fù)。可替代地,如果未找到匹配,則可以發(fā)起回滾。

上述技術(shù)可以在以下部分中進(jìn)行更詳細(xì)地描述。

兩階段提交(2pc)調(diào)用的嚴(yán)格排序

根據(jù)本發(fā)明的實施例,系統(tǒng)可以基于兩階段提交調(diào)用的嚴(yán)格排序來消除處理事務(wù)中的中間層事務(wù)日志(tlog)。

圖9示出了根據(jù)實施例的、支持用于在事務(wù)中間件機器環(huán)境中處理事務(wù)的兩階段提交(2pc)調(diào)用的嚴(yán)格排序的圖示。如圖9所示,可以在包括事務(wù)管理器(tm)901、多個資源管理器(rm)902-904的中間層事務(wù)系統(tǒng)900中支持諸如全局事務(wù)之類的事務(wù)910。資源管理器(rm)902-903參與全局事務(wù)910,并且資源管理器904不參與全局事務(wù)910。根據(jù)實施例,事務(wù)910不跨越多個事務(wù)管理器。

根據(jù)實施例,資源管理器902可以被指定為用于圖9中繪出的事務(wù)的確定器資源。這種指定可以例如由事務(wù)管理器或由分區(qū)來執(zhí)行,在由分區(qū)執(zhí)行的情況下,確定器資源將是不能從另一個分區(qū)訪問的特定于分區(qū)的確定器資源。將資源管理器(rm)902作為確定器資源的指定可以被持久保存在用于事務(wù)機器環(huán)境的配置中。當(dāng)在配置中在事務(wù)中沒有指定確定器資源時,事務(wù)管理器901可以提名數(shù)據(jù)源作為確定器資源(步驟1)并將其持久保存在配置中。此外,確定器資源902可以是除數(shù)據(jù)庫之外的資源,諸如消息隊列。

此外,每當(dāng)資源在處理兩階段全局事務(wù)910中被第一次使用時或者資源的新組合在處理兩階段全局事務(wù)910中被第一次使用時,新資源或資源的新組合可以由事務(wù)管理器901自動地捕獲并持久保存在諸如配置文件之類的配置中。該配置的持久保存可以在為兩階段事務(wù)發(fā)起第一次準(zhǔn)備請求之前發(fā)生。如果該配置改變失敗,則事務(wù)910可以被回滾。

根據(jù)本發(fā)明的實施例,事務(wù)管理器901可以確保確定器資源(例如,資源管理器902)是最后準(zhǔn)備的,并且如果所有資源管理器在準(zhǔn)備之后返回好(okay)的投票,則事務(wù)管理器還可以確保對于2pc事務(wù)910,確定器資源902在所有參與的資源管理器當(dāng)中是最后被提交的。

如圖9所示,事務(wù)管理器901可以在準(zhǔn)備確定器資源(步驟4)之前首先準(zhǔn)備資源管理器(rm)903(步驟2)。在從參與的資源管理器(rm)902-903接收到ok投票(步驟3和5)之后,事務(wù)管理器901可以提交資源管理器(rm)903(步驟6),隨后是確定器資源(步驟8)。事務(wù)可以在事務(wù)管理器901從資源管理器902-903中的每一個接收到成功指示之后完成(步驟7和9)。

通過強迫提交和準(zhǔn)備調(diào)用的嚴(yán)格排序,事務(wù)管理器901可以放棄對資源/檢查點的任何記錄,包括在準(zhǔn)備階段被成功處理之后寫tlog。通過將從除確定器資源管理器(例如,圖9中的確定器rm902)之外的每個資源管理器(例如,圖9中繪出的實施例中的rm903)檢索到的不確定事務(wù)列表與從確定器資源管理器檢索到的不確定事務(wù)列表進(jìn)行比較,系統(tǒng)可以提高事務(wù)的性能,同時允許中間層事務(wù)系統(tǒng)900通過從每個資源管理器檢索不確定事務(wù)列表來恢復(fù)事務(wù)910,并且隨后恢復(fù)所有不確定事務(wù)而不使用事務(wù)日志。

恢復(fù)不確定事務(wù)可以涉及將從除確定器資源管理器之外的每個資源管理器檢索到的不確定事務(wù)列表與從確定器資源管理器檢索到的不確定事務(wù)列表進(jìn)行比較;并且然后回滾出現(xiàn)在從除確定器資源管理器之外的每個資源管理器檢索到的不確定事務(wù)列表中但未出現(xiàn)在從確定器資源管理器檢索到的不確定事務(wù)列表中的不確定事務(wù)。通過強制執(zhí)行2pc事務(wù)的嚴(yán)格排序,系統(tǒng)可以通過將每個資源管理器的日志與最終的、確定器資源管理器的日志進(jìn)行比較來恢復(fù)失敗的事務(wù)。

根據(jù)實施例,由于確定器資源管理器是最后要準(zhǔn)備的資源管理器,因此如果確定器資源管理器被準(zhǔn)備,則所有在前的資源管理器必須已經(jīng)被準(zhǔn)備。如果確定器資源已經(jīng)被成功準(zhǔn)備,則事務(wù)管理器能夠確定所有其它資源管理器已經(jīng)被成功地準(zhǔn)備,并且因此在恢復(fù)期間在所有資源管理器上提交事務(wù)是安全的。如果只有一些資源管理器已經(jīng)被準(zhǔn)備,但是確定器資源管理器(行中最后一個)尚未被準(zhǔn)備,則事務(wù)管理器可以確定準(zhǔn)備階段沒有完成,并且事務(wù)必須在恢復(fù)期間被回滾。該分析僅依賴于比較參與的資源管理器和確定器資源管理器的不確定(已準(zhǔn)備但未提交)事務(wù),并且消除了使用單獨的事務(wù)日志的需要。

在不使用tlog的情況下恢復(fù)全局事務(wù)

圖10示出了根據(jù)實施例的、在不使用事務(wù)日志(tlog)的情況下恢復(fù)全局事務(wù)的圖示。如圖10所示,在包括事務(wù)管理器(tm)1001、多個資源管理器(rm)1002-1004的中間層事務(wù)系統(tǒng)1000中可以支持諸如全局事務(wù)之類的2pc事務(wù)1010。

當(dāng)諸如在失敗之后,事務(wù)1010需要被恢復(fù)時,事務(wù)管理器1001可以例如通過在確定器資源1002上進(jìn)行xa_recover()調(diào)用來嘗試恢復(fù)(步驟1)。事務(wù)管理器1001可以從確定器資源1002接收不確定事務(wù)(已準(zhǔn)備但未提交的事務(wù))列表(步驟2)。此外,事務(wù)管理器1001可以使用該不確定事務(wù)列表來構(gòu)建/重建全局事務(wù)表(gtt)1006(步驟3)。

根據(jù)實施例,當(dāng)在兩階段提交事務(wù)中成功地準(zhǔn)備確定器資源1002時,不確定事務(wù)列表可以與事務(wù)管理器1001已經(jīng)指示參與的資源管理器1002-1003進(jìn)行提交的中間層未完成事務(wù)相同。

然后,事務(wù)管理器1001可以例如通過在事務(wù)中間層系統(tǒng)1000中的所有其它資源管理器(包括參與的資源管理器1003(步驟9)和未參與的資源管理器1004(步驟10))上進(jìn)行xa_recover()調(diào)用來嘗試恢復(fù)。

例如,事務(wù)管理器1001可以從參與的資源管理器1003接收不確定事務(wù)列表(步驟5)。事務(wù)管理器1001可以將列表中的不確定事務(wù)與gtt1006表匹配,以生成恢復(fù)列表(步驟6和7)。然后,事務(wù)管理器1001可以基于該恢復(fù)列表來恢復(fù)參與的資源管理器1003(步驟8)。例如,事務(wù)管理器1001可以提交與gtt1006表匹配的不確定事務(wù),并且可以回滾與gtt1006表不匹配的不確定事務(wù)。

上述過程可以在作為未參與資源的資源管理器1004上執(zhí)行。如圖10所示,在資源管理器1004上進(jìn)行xa_recover()調(diào)用之后,事務(wù)管理器1001可以接收不確定事務(wù)列表(步驟11),其可以與gtt1006進(jìn)行匹配以生成恢復(fù)列表(步驟12)。然后,事務(wù)管理器1001可以在資源管理器1004上提交/回滾不確定事務(wù)(步驟14和15)。

一旦所有其它資源管理器1003-1004被恢復(fù)(步驟9和15),事務(wù)管理器1001就可以將已準(zhǔn)備事務(wù)的列表中的所有事務(wù)提交到確定器資源管理器(步驟16和17)。最后,事務(wù)管理器1001可以移除gtt1006中的條目(步驟18)。

根據(jù)實施例,即使一個或多個資源管理器不是事務(wù)的部分,來自不確定事務(wù)列表的事務(wù)也直到所有其它資源管理器1003-1004都已經(jīng)被恢復(fù)之后才能被提交到確定器資源管理器1002。

根據(jù)實施例,事務(wù)管理器1001可以知道事務(wù)的參與資源1002、1003,并且關(guān)于參與資源1002、1003的附加信息可以在準(zhǔn)備階段中傳遞并持久保存到確定器資源1002。利用附加信息,事務(wù)管理器1001可以提交從確定器資源管理器1002返回的不確定事務(wù)列表中的事務(wù),而無需等待所有已知資源管理器1002-1004恢復(fù)。事務(wù)管理器1001可以僅需要等待到事務(wù)的所有事務(wù)的參與者,即,確定器資源管理器1002和資源管理器1003被恢復(fù)為止。此外,在事務(wù)中間層系統(tǒng)1000的干凈關(guān)閉或重新啟動期間,可以按在啟動期間可避免不必要的恢復(fù)和處理的方式清除或標(biāo)記配置。

在多租戶環(huán)境中在不使用tlog的情況下恢復(fù)事務(wù)

圖11示出了根據(jù)實施例的、在多租戶應(yīng)用服務(wù)器環(huán)境中在不使用事務(wù)日志(tlog)的情況下恢復(fù)全局事務(wù)的圖示。

根據(jù)實施例,多個分區(qū)可以在受管理的服務(wù)器/集群242或可以提供對cdb243的訪問并可經(jīng)由web層244訪問的類似環(huán)境內(nèi)執(zhí)行。這允許例如域或分區(qū)與(cdb的)pdb中的一個或多個相關(guān)聯(lián)。

根據(jù)實施例,多個分區(qū)中的每一個(在這個例子中,分區(qū)a250和分區(qū)b260)可以被配置為包括與該分區(qū)相關(guān)聯(lián)的資源管理器和多個資源。例如,分區(qū)a可以被配置為包括資源組1120,資源組1120包含應(yīng)用1121、資源管理器1122和配置了分區(qū)的確定器資源管理器a1123,并且其中該分區(qū)可經(jīng)由虛擬目標(biāo)a258訪問。類似地,分區(qū)b260可以被配置為包括資源組1130,資源組1130包含應(yīng)用1131、資源管理器1132和配置了分區(qū)的確定器資源管理器b1133,并且其中該分區(qū)可經(jīng)由虛擬目標(biāo)a258訪問。受管理的服務(wù)器可以附加地包括可以被實例化到每個分區(qū)中的事務(wù)管理器1110,如圖中示為tm1110'和1110”。

根據(jù)實施例,圖11中繪出的系統(tǒng)可以利用如上所述的嚴(yán)格順序來執(zhí)行兩階段提交事務(wù)。例如,實例化的事務(wù)管理器1110'可以向與在分區(qū)a250的背景(context)下執(zhí)行的應(yīng)用相關(guān)聯(lián)的資源發(fā)起準(zhǔn)備調(diào)用。資源管理器(資源管理器1123)可以由分區(qū)指定(例如,在運行時或經(jīng)由配置文件)為事務(wù)的確定器資源管理器。該指定可以指示確定器資源管理器是特定于分區(qū)的確定器資源管理器,并且因此不能從另一個分區(qū)訪問。將資源管理器(rm)1123作為確定器資源的指定可以被持久保存在用于事務(wù)機器環(huán)境的配置中。

根據(jù)本發(fā)明的實施例,事務(wù)管理器1110'可以確保確定器資源(例如,確定器資源管理器1123)是最后準(zhǔn)備的,并且如果所有資源管理器在準(zhǔn)備之后返回好(okay)的投票,則事務(wù)管理器還可以確保對于兩階段提交事務(wù),確定器資源管理器1123在所有參與的資源管理器當(dāng)中是最后被提交的。

根據(jù)實施例,由于確定器資源管理器是特定于分區(qū)的,因此如果分區(qū)內(nèi)的事務(wù)失敗,則系統(tǒng)仍然可以允許與其它分區(qū)相關(guān)聯(lián)的其它事務(wù)運行(即使該確定器資源管理器與在另一個分區(qū)中的確定器資源管理器是相同的)。由于每個確定器資源管理器與特定分區(qū)相關(guān)聯(lián),因此系統(tǒng)仍然可以具有使用相同資源的兩個分區(qū),因此系統(tǒng)仍然可以允許一個分區(qū)運行而不允許另一個分區(qū)運行。即,由于特定于分區(qū)的確定器資源,在一個分區(qū)處的失敗事務(wù)將不一定影響運行事務(wù)的另一個分區(qū)。

根據(jù)實施例,與分區(qū)相關(guān)聯(lián)的確定器資源管理器可以是特定于分區(qū)的。由于這個原因,并且由于資源可以是特定于分區(qū)的事實,因此可以支持在分區(qū)級別的確定器資源的配置。由于特定于分區(qū)的資源可以使其分區(qū)名稱聯(lián)系到資源名稱,因此不存在復(fù)制或重寫資源注冊的問題。對于使用相同資源組模板的分區(qū),也可以如此-資源名稱可以是唯一的并且因此確定器規(guī)范對分區(qū)保持唯一。例如,分區(qū)a可以具有與包括資源resourcea的分區(qū)b相同的資源組模板。但是,在這種情況下,分區(qū)a可以將resourcea配置為確定器資源,因為在內(nèi)部資源名稱是不同的,例如,resourcea_partitiona和resourcea_partitionb。

圖12示出了根據(jù)實施例的、在多租戶環(huán)境中在不使用事務(wù)日志(tlog)的情況下恢復(fù)事務(wù)的圖示。如圖12所示,根據(jù)實施例,多個分區(qū)可以在受管理的服務(wù)器/集群242或者可以提供對cdb243的訪問并可以經(jīng)由web層244訪問的類似環(huán)境中執(zhí)行。這允許例如域或分區(qū)與(cdb的)pdb中的一個或多個相關(guān)聯(lián)。

根據(jù)實施例,多個分區(qū)中的每一個(在這個例子中,分區(qū)a250和分區(qū)b260)可以被配置為包括與該分區(qū)相關(guān)聯(lián)的資源管理器和多個資源。受管理的服務(wù)器可以附加地包括可以被實例化到每個分區(qū)中的事務(wù)管理器1210,如圖中示為tm1210'。分區(qū)a250可以包括資源管理器(參與者)1203和用于分區(qū)a1204的確定器資源管理器。

根據(jù)實施例,可以在多租戶環(huán)境中支持2pc事務(wù),該多租戶環(huán)境包括在分區(qū)中實例化的事務(wù)管理器(tm)1210(例如,tm1210')、多個資源管理器(例如,資源管理器(rm)1203-1204)。應(yīng)當(dāng)注意,為了簡單起見,圖12僅示出了參與事務(wù)恢復(fù)的兩個資源管理器。應(yīng)當(dāng)理解,系統(tǒng)中還可以包括參與和未參與的多個資源管理器。

當(dāng)事務(wù)需要被恢復(fù)時,諸如在失敗之后,事務(wù)管理器可以例如通過在確定器資源1204上進(jìn)行xa_recover()調(diào)用來嘗試恢復(fù)(步驟1)。事務(wù)管理器可以從確定器資源1204接收不確定事務(wù)(已準(zhǔn)備但未提交的事務(wù))列表(步驟2)。此外,事務(wù)管理器1001可以使用該不確定事務(wù)列表來構(gòu)建/重建事務(wù)表。

根據(jù)實施例,當(dāng)在兩階段提交事務(wù)中成功地準(zhǔn)備確定器資源1204時,不確定事務(wù)列表可以與事務(wù)管理器已經(jīng)指示參與的資源管理器1203進(jìn)行提交的中間層未完成事務(wù)相同。

然后,事務(wù)管理器可以例如通過在所有其它資源管理器(包括參與的資源管理器1203)上進(jìn)行xa_recover()調(diào)用來嘗試恢復(fù)(步驟3)。

例如,事務(wù)管理器可以從參與的資源管理器1203接收不確定事務(wù)列表(步驟4)。事務(wù)管理器可以將列表中的不確定事務(wù)與事務(wù)表匹配,以生成恢復(fù)列表。然后,事務(wù)管理器可以基于恢復(fù)列表來恢復(fù)參與的資源管理器1203(步驟5),并且資源管理器1203可以返回成功(步驟6)。例如,事務(wù)管理器可以提交與事務(wù)表匹配的不確定事務(wù),并且可以回滾與事務(wù)表不匹配的不確定事務(wù)。

一旦所有其它資源管理器1203被恢復(fù),事務(wù)管理器就可以將已準(zhǔn)備的事務(wù)列表中的所有事務(wù)提交到確定器資源管理器,該確定器資源管理器可以返回成功(步驟8)。

根據(jù)實施例,即使一個或多個資源管理器不是事務(wù)的部分,來自不確定事務(wù)列表的事務(wù)也直到所有其它資源管理器已經(jīng)被恢復(fù)之后才能被提交到確定器資源管理器1204。

圖13是根據(jù)實施例的在多租戶應(yīng)用服務(wù)器環(huán)境中的事務(wù)恢復(fù)的說明性流程圖。如圖13所示,在步驟1310,該方法可以在包括在其上執(zhí)行的應(yīng)用服務(wù)器環(huán)境的一個或多個計算機處提供可以在該應(yīng)用服務(wù)器環(huán)境內(nèi)使用的多個可部署資源、定義域內(nèi)的可部署資源的分組的一個或多個資源組模板、以及一個或多個分區(qū),其中每個分區(qū)提供可以與租戶相關(guān)聯(lián)的、域的管理和運行時細(xì)分。

在步驟1320,如上所述,該方法可以操作應(yīng)用服務(wù)器環(huán)境內(nèi)的事務(wù)管理器。

在步驟1330,該方法可以將確定器資源管理器與一個或多個分區(qū)中的一個分區(qū)相關(guān)聯(lián)。此外,確定器資源管理器可以在事務(wù)中使用。

在步驟1340,該方法可以提供多個資源管理器,其中所述多個資源管理器也可以在事務(wù)中使用。

在步驟1350,事務(wù)管理器可以通過僅在接收到在所述多個資源管理器上的成功準(zhǔn)備動作的確認(rèn)之后才向確定器資源管理器發(fā)送準(zhǔn)備消息,并且僅在接收到在所述多個資源管理器上的成功提交動作的確認(rèn)之后才向確定器資源管理器發(fā)送提交消息來處理事務(wù)。

在失敗的情況下,在步驟1360,該方法可以從所述多個資源管理器中的每一個和確定器資源管理器檢索不確定事務(wù)列表,并且然后在不使用事務(wù)日志的情況下恢復(fù)所有不確定事務(wù)。

本發(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可以由技術(shù)程序員容易地準(zhǔn)備。

在一些實施例中,本發(fā)明包括計算機程序產(chǎn)品,其是具有存儲在其上/其中的指令的非暫態(tài)存儲介質(zhì)或計算機可讀介質(zhì)(媒介),所述指令可用來對計算機進(jìn)行編程以執(zhí)行本發(fā)明的任何過程。存儲介質(zhì)可以包括但不限于任何類型的盤,包括軟盤、光盤、dvd、cd-rom、微型驅(qū)動器以及磁光盤、rom、ram、eprom、eeprom、dram、vram、閃存存儲器設(shè)備、磁卡或光卡、納米系統(tǒng)(包括分子存儲器ic),或適于存儲指令和/或數(shù)據(jù)的任何類型的介質(zhì)或設(shè)備。

出于說明和描述的目的,提供了本發(fā)明的前述描述。其并不旨在是詳盡的或者將本發(fā)明限制到所公開的精確形式。許多修改和變型對本領(lǐng)域技術(shù)人員將是清楚的。這些修改和變型包括所公開特征的任何相關(guān)組合。選擇和描述實施例是為了最好地解釋本發(fā)明的原理及其實際應(yīng)用,從而使本領(lǐng)域的其他技術(shù)人員能夠理解本發(fā)明的適于預(yù)期的特定用途的各種實施例以及各種修改。本發(fā)明的范圍旨在由以下權(quán)利要求及其等同物定義。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
沽源县| 深圳市| 柳江县| 克山县| 昌黎县| 剑川县| 德州市| 长子县| 镇平县| 贞丰县| 辽中县| 泰兴市| 扬中市| 临澧县| 博罗县| 淅川县| 长岭县| 鞍山市| 丹棱县| 宜都市| 乌拉特中旗| 西贡区| 天柱县| 同德县| 青州市| 旬阳县| 邳州市| 南阳市| 南靖县| 屏南县| 枝江市| 南城县| 弥勒县| 富宁县| 都匀市| 安溪县| 宜春市| 福贡县| 井陉县| 太和县| 钦州市|