專利名稱:客戶/服務器計算中的服務器處理設備、方法和程序產品的制作方法
技術領域:
本發明涉及客戶/服務器(也稱為“分布式”)計算領域,其中一個計算設備(“客戶”)請求另一計算設備(“服務器”)完成一部分客戶工作。客戶和服務器兩者也可都位于同一物理計算設備上。
過去數年來客戶/服務器計算在信息技術領域中愈來愈重要。這種分布式計算允許一個機器將其一部分工作分派給另一個可能更適合于完成該工作的機器。例如,服務器可能是一個功能強的運行著管理大量數據的數據庫程序的計算機,而客戶只是一個桌上個人計算機(PC),它向數據庫請求信息以便用于其本地程序。
使用眾所周知的稱為面向對象編程(OOP)的計算機編程技術后,更增強了客戶/服務器計算的優勢,OOP允許客戶和服務器位于不同(異構)“平臺”上。平臺是機器用于完成其工作的特定硬件/軟件/操作系統/通信協議的組合。OOP允許客戶應用程序和服務器應用程序各在它們自己的平臺上運行而不必操心客戶應用程序的工作請求如何送出并被服務器應用程序所接收。類似地,服務器應用程序不必操心OOP系統如何接收、翻譯和送回服務器應用程序處理結果至原請求客戶應用程序。
OOP技術如何與異構客戶/服務器系統結合為整體的細節在美國專利號5,440,744和歐洲專利公開申請EP 0677,943 A2中得到解釋。此處包括這后兩項公開以用作參考。然而,下面將給出基本結構的例子,便于前后關聯地理解本發明環境。
如
圖1中所示,客戶計算機10(例如它可以是在其中裝有IBM OS/2操作系統的個人計算機)具有在其操作系統上運行的應用程序40(“IBM”和“OS/2”是國際商業機器公司的注冊商標)。應用程序40周期地要求在服務器計算機20上完成工作及/或自服務器20送回數據以備用應程序40隨后使用。例如,服務器計算機20可以是在IBM的MVS操作系統上運行的強功能大型計算機(“MVS”也是IBM公司的注冊商標)。對于本發明的目的而言,不論要服務器執行通信服務的請求是由第一個應用程序40通過用戶交互所提出的,或是在程序運行期間應用程序40與用戶交互無關地運行并自動地提出請求,都不重要。
當客戶計算機10希望提出請求要服務器計算機20服務時,第一應用程序40將服務請求通知第一邏輯裝置50。例如它可將遠距過程名稱連同一系列輸入和輸出參數送至第一邏輯裝置而做到這點。然后第一邏輯裝置50處理下一任務參照存儲于存儲設備60中的可用通信服務的定義建立與第二計算機20的必要通信。所有可能的服務定義為對象類70的聚合框架,而這些類都從單個對象類派生而來。以此方式定義這些服務,在性能和可重用性方面提供很多優點。
為建立與服務器20的必要通信,第一邏輯裝置50確定需要使用框架中哪個對象類,然后在服務器上建立該對象的實例,向該對象發送一個消息以使該對象調用其方法中的一個。這導致通過連接裝置80與服務器計算機20建立連接,及隨后向第二邏輯裝置90發送請求。
第二邏輯裝置90接著將請求往前送至在服務器計算機20上運行的第二應用程序100(今后稱為服務應用程序),以便服務應用程序100能完成該請求所要求的具體任務,例如運行一個數據檢索過程。一旦完成此任務,服務應用程序可能需將結果送回至第一計算機10。在執行請求的任務期間及當需將結果送回至第一計算機10時,服務應用程序100與第二邏輯裝置90交互作用。第二邏輯裝置90建立對象實例并調用這些對象的合適方法,當由服務應用程序100要求時,從存儲于存儲設備110中的對象類的聚合框架中建立對象實例。
使用上述技術時,客戶應用程序40不會暴露給通信體系結構。此外,服務應用程序100是通過其標準環境機制被調用的,它不知道是被遠程調用的。
對象管理組(OMG)是一個國際性聯合組織,從事于帶有分布式對象(如圖1中所示)的異構平臺上客戶/服務器計算的各方面工作。OMG已刊印標準,客戶計算機(例如10)可據以與服務器計算機(例如20)通信(以OOP形式)。作為這些標準的一部分,定義了一個對象請求代理程序(稱為CORBA-公共對象請求代理體系結構),它在客戶和服務器機器之間提供面向對象的橋梁。ORB將客戶及服務器應用程序與面向對象實施細節分離,完成第一和第二邏輯裝置50和90及連結裝置80的至少部分工作。
作為CORBA軟件結構的一部分,OMG提出了與“事務”有關的標準,這些標準稱為OTS或對象事務服務。例如參閱CORBA對象事務服務規定1.0,OMG文件94.8.4。計算機實現的事務處理系統用于不少工業中的重要業務任務。一個事務規定單個工作單元,它或者應該完全地完成,或者應該不加操作地完全地清除。例如,在用戶自其中提取鈔票的銀行自動取款機的情況下,發放鈔票、減少機器中可用現鈔的結算值和減少用戶的銀行結算值這些操作必須或者全部執行或者一項也不執行。附屬操作中有一項失敗將導致記錄和實際事件之間不一致。
分布式事務處理涉及能影響不止一個物理或邏輯位置處的資源的事務。在上述例子中,一個事務影響到當地自動取款機管理的資源以及銀行主計算機管理的銀行結算。這些事務涉及一個具體客戶計算機(例如10)在一系列由服務器處理的客戶請求上與一個具體服務器計算機(例如20)通信。OMG的OTS負責協調這些分布式事務。
通常,一個在客戶過程上運行的應用程序啟動一個可能調用多個不同服務器的事務,而這些服務器中每一個啟動一個服務器過程以便按照事務中包含的指令改變其本地數據庫。事務結束時或者提交該事務(因而所有服務器最后完成它們本地數據庫的改變),或者放棄該事務(因而所有服務器“滾回”或忽視它們本地數據庫的改變)。為在事務處理期間與服務器通信(例如指示它們將事務中它們的部分或者提交或者放棄),所涉及的過程中的一個必須為該事務維持狀態數據。這通常涉及用于建立一系列事務狀態對象的過程,這些對象中之一是協調對象,它相對于不同服務器而協調事務。
圖2顯示一種常規OTS實施方式,它是由國際商業機器公司開發,并包括于1997年5月所宣布的部件代理系列(IBM公司的注冊商標)產品中。希望啟動一個事務(例如自銀行帳戶中提取現款)的客戶過程21需要尋找一個能建立和保持那些將維持事務狀態的事務對象的過程。由于現代趨勢是建立“瘦”的客戶(因而只具有最少的功能),因此客戶過程21通常沒有能力本地維持事務對象,必需尋找能滿足此目的的服務器過程。
根據現有技術的方法,OTS(或其它服務,例如CORBA生命周期服務)找到一個在其上建立事務狀態對象(包括協調對象223,控制對象221和結束對象222)的服務器過程。根據此現有技術總是挑選同一服務器過程(圖2中服務器A過程22)。找到服務器A過程22后,客戶過程21向服務器A過程22發送一個消息(帶圓圈數1的箭頭)以指令服務器A過程22建立事務狀態對象。控制對象221(在OTS中為CosTransactions∷Control)提供對另兩個事務狀態對象的訪問。結束對象(在OTS中為CosTransactions∷Terminator)用于結束事務。協調對象223(在OTS中為CosTransactions∷Coordinator)在本地存儲器225中維持一個資源對象(例如銀行帳號對象224,231)(在OTS中為CosTransactions∷Resource)的表,這些資源對象在事務期間已將它們的相應數據更新過。此表是需要的,以便協調對象223可在事務結束時一致性地調用它們從而或者實現它們的事務改變(將它們的本地數據作最后改變)或者滾回這些改變(將本地數據恢復至事務開始前的狀態)。例如,當由于資源中的一個不能恰當地工作而使事務不能恰當地結束時,滾回是必需的。
接著服務器A過程22建立事務狀態對象(221,222,223)并向客戶21發送一個包含事務上下文的回答(帶圓圈數2的箭頭)。然后客戶21向服務器B過程23(該過程包括客戶過程21希望從中提取現款的銀行帳戶對象231)發送一個借方銀行帳戶命令(帶圓圈數3的箭頭)。此后一命令帶由服務器A過程22向客戶21提供的事務上下文。以此方式,過程23中的銀行帳戶對象231可向協調對象223登記本身(帶圓圈數4的箭頭)以使銀行帳戶對象231可被命令(帶圓圈數5的箭頭)來在事務結束時由協調對象223執行改變或滾回。
在以上操作中,當協調對象223與其它事務狀態對象221和222一起建立時,協調對象223必須記錄有關它自身和它在本地存儲器225所代表的事務的信息,以便在發生臨時地阻止服務器A過程22繼續事務處理的故障的情況下使事務可以恢復。
有許多事務在同一服務器過程(服務器A過程22)中啟動和結束,同時并不需要資源去更新其本地數據。對于這類事務,實際上啟動事務的是一個服務器過程(而不是上面所討論的客戶過程)。例如,一個在自動取款機(ATM)中運行的客戶過程21代表只想獲取他的銀行帳戶結算的銀行帳戶主人(在圖2中由銀行帳戶對象224所代表)在執行任務。客戶過程21向服務器過程22發送結算查詢命令,服務器過程22包含該客戶希望檢查其結算的銀行帳戶對象224。因此,服務器過程22通過建立三個事務狀態對象221,222和223來啟動事務。協調對象223訪問本地存儲器225以便記錄該事務,使其成為可恢復。事務進而訪問銀行帳戶對象224,讀取其結算并將它返回給客戶過程21。事務結束時使用結束對象222以撤消其它事務狀態對象221和223,然后結束對象222將它自己撤消。
在后面這類事務中,現有技術的實施是效率不高的。由于在整個事務處理期間不須調用更多服務器過程及沒有一個本地資源將本地數據更新,協調程序的將事務登記至存儲器225的功能就成為不必要了。此外,協調程序必須實例化這一不爭的事實占用一些處理功能,而后者本來可以更好地用于服務器過程22其它地方。
根據第一方面,本發明提供一種用于執行事務處理的客戶/服務器計算系統中的服務器處理設備,該設備具有用于接收命令的裝置,該命令指示服務器處理設備執行事務步驟;用于啟動事務的裝置;及用于判斷在執行事務期間是否發生預定觸發事件的裝置,以及只當發生觸發事件時,才相對于執行事務中涉及的多個元件而建立一個用于協調事務的裝置。
觸發事件最好是接收一個將作為事務一部分的本地資源更新的請求。觸發事件還最好是接收一個調用作為事務一部分的附加服務器處理設備的請求。
在最佳實施例中,用于協調的裝置是一個協調對象,正如公共對象請求代理體系結構的對象事務服務(CORBA的OTS)所定義的,以及在執行事務中涉及的元件是本地資源或遠距服務器過程。用于協調的裝置最好命令每個涉及事務的本地資源及/或遠程服務器過程去執行它們相應的事務處理。
根據第二方面,本發明提供一種用于執行以上在第一方面中描述的服務器功能的方法。
根據第三方面,本發明提供一種存儲于計算機可讀存儲媒體上的計算機程序產品,當它在計算機中運行時,用于執行第一方面的功能。
因此,使用本發明后,在發生一個要求使用協調對象的觸發事件之前,并不將協調對象實例化,因而可以高效使用服務器處理器周期。因此,如事務不產生這種觸發事件,則不將協調對象實例化,因而節省服務器的處理器周期。還有,如果不將協調對象實例化,則節省對本地存儲器的寫操作,不然當首次將協調對象實例化以使協調對象為恢復目的而登記事務的存在時,將會發生寫操作。
下面參照附圖閱讀本發明優選實施例的描述時,將能更好地理解本發明。
圖1是一個眾所周知的使用對象技術的異構客戶/服務器體系結構,在它的環境中可應用本發明優選實施例;圖2是顯示常規OTS實施的框圖;圖3是顯示根據本發明優選實施例的OTS實施的框圖;以及圖4是當客戶發出根據圖3的OTS實施的啟動事務命令時,顯示服務器過程內發生的步驟的流程圖。
現參照圖3(框圖)和圖4(功能流程圖)描述本發明優選實施例。在將要使用的闡述例中,假定自動取款機(ATM)是客戶,將要執行的事務是銀行帳號的結算查詢,一個每天進行的世界范圍內的經常執行的公共事務操作。
公共對象請求代理(CORBA)對象事務服務(OTS)提供稱為“Current”的接口對象,后者有一個由在過程中運行的應用程序(源碼)用于啟動事務的“begin”方法。當應用程序在特定體系結構上建立或運行并包含“begin”方法時,基礎OTS軟件將運行(如以上結合現有技術所描述的)以便通過在服務器過程中建立事務狀態對象而建立事務。
應注意,在現有技術中,一旦向遠程服務器過程22送出一個指令服務器執行事務步驟(例如檢查銀行帳戶結算)的命令時,服務器過程22即調用“Current”接口上的“begin”方法,結果在該服務器過程22中將三個事務狀態對象(221,222和223)實例化。本發明只在此早期階段(見圖3)建立控制和結束對象(221和222),從而改變了此現有技術。如將要描述的,只當發生預定觸發事件時才在稍后階段建立協調對象223。
在步41(圖4),服務器過程22自客戶過程21接收結算查詢命令(見圖3中帶圓圈數1的箭頭)。在步42,服務器過程22將控制和結束對象221和222實例化,從而建立事務狀態對象。應清楚地注意到,此處并未建立協調對象223。
然后在服務器過程22中所運行的應用程序的控制下,事務正常地進行。在事務進行期間,服務器過程進至步43,其中它判斷是否下面兩個情況都發生了1)收到更新本地資源的請求否?本地資源(例如銀行帳戶對象224)是一個位于與控制和結束對象(221,222)相同的服務器過程(22)中的對象。當事務進行結果改變了本地資源的值,即發生這類資源更新。例如,如事務命令從由本地資源銀行帳戶對象224所代表的銀行帳戶中取款,這涉及銀行帳戶對象224減少(例如改變)可用資金結算值,而這是對結算值的更新。2)協調對象尚未被實例化否?如下面將看到的,步43可重復地執行,因此有可能在以前運行中通過稍后步驟將協調對象實例化。此情況只確定是否尚未建立協調對象。
因此,在步43,如事務請求更新本地資源(如銀行帳戶對象224)以及如尚未將協調對象223實例化,則控制進至步44以將協調對象223實例化。也即,出現了一個要求將協調對象223調用入事務的觸發事件(已請求將本地資源更新)。事務中在此點之前不需要協調對象223,因此在事務中需要對象223之前本發明并不建立對象223。
然而,如果這兩個情況中之一或兩者都未出現,則控制進至步45,其中服務器過程22確定是否已都出現兩個情況1)收到涉及附加服務器過程的請求否?作為指令該事務的應用程序的一部分,保持事務對象的服務器過程22通常得到指令以調用另一個服務器過程(例如圖2中的服務器B過程23)。當事務試圖訪問該附加服務器過程的資源(例如銀行帳號對象231)時這通常發生。例如,有時一個事務要求比較兩個不同銀行帳戶對象的結算。步45的此第一情況判斷服務器過程22是否已收到調用事務中另一服務器過程的請求。2)協調對象尚未實例化否?再有可能在以前運行中通過流程圖步驟將協調對象實例化(在步44)。此情況只判斷協調對象是否尚未被建立。
因此在步45,如事務請求調用附加服務器過程(例如服務器過程23)以及如協調對象223尚未實例化,則控制進至步44以將協調對象223實例化。也即,出現了要求將協調對象223調用入事務的觸發事件(曾請求調用附加服務器過程)。在事務中此點之前,不需要協調對象223,因此在事務中需要此對象223之前本發明并不建立此對象223。
然而,如步45的兩個情況中之一或兩者都未出現,則控制進至步46,其中服務器過程22判斷事務是否已請求完成事務。如不是,則控制退回至步43以重復步43至46,并依據事務當前狀態采取具體分支(是或否)。
如在步46事務準備結束,則控制進至步47,其中服務器過程22判斷協調對象223是否曾實例化(也即,是否曾執行步44)。如不是(例如客戶ATM只要求檢查由對服務器過程22講是本地的銀行帳戶對象224所代表的銀行帳戶結算的情況),則控制進至步49,其中結束對象222撤消控制對象221,然而撤消它自身。
然而,如在此事務處理期間曾將協調對象223實例化,則協調對象223使用它曾登記入存儲器225的信息來以眾所周知方式執行事務的協調式關閉(步48)。也即,協調對象223調用每一個已更新過其數據的本地資源(例如224)和調用每一個在事務處理期間曾被調用(其結果是此遠程過程23將該調用送至其本地資源231)的遠程服務器過程(例如23),以便指令這些資源或者執行或者滾回它們相應的改變。然后結束對象222完全以現有技術中所知常規方式撤消控制對象221和協調對象223,然后再撤消它自身(步50)。
下面是為實施本發明需對IBM的部件代理產品做編程改變的概要(使用以上討論的現有技術)。
1)當啟動一個事務時,有對象CosTransactions∷Control可供應用程序通常通過對象CosTransactions∷Current來使用。如啟動事務的請求是在服務器內發出的,則只建立對象CosTransactions∷Control(221)和對象CosTransactions∷Terminator(222)。
2)當將可恢復資源更新時,應用程序必須為該事務向對象CosTransactions∷Resource(如224)登記一個對象CosTransactions∷Coordinator(223)。為得到對象CosTransactions∷Coordinator(223),必須調用方法CosTransactions∷Control∷get_coordinator()。如尚未建立對象CosTransactions∷Coordinator(223),則它在調用方法CosTransactions∷Control∷get_coordinator()時被建立。
3)當準備將請求送至其它服務器時,調用OTS截聽程序。它們使用接口CosTransactions∷Current以訪問對象CosTransactions∷Control(221)。然后它們調用方法CosTransactions∷Control∷get_coordinator()去訪問對象CosTransactions∷Coordinator(223)以便獲取CosTransactions∷PropagationContext并將它與請求一起發送。還有,如不存在對象CosTransactions∷Coordinator(223),則在方法CosTransactions∷Control∷get_coordinator()中建立它。
4)當調用對象CosTransactions∷Terminator(222)以結束事務時,它查看是否已建立對象CosTransactions∷Coordinator(223)。如已建立,則調用對象CosTransactions∷Coordinator(223)并以正常方式結束該事務(步48和50)。如不存在對象CosTransactions∷Coordinator(223),則它就簡單地撤消它自身和對象CosTransactions∷Control并返回(步49)。
通過突破常規技術中將所有事務同等對待的禁錮,本發明能大量節省服務器的處理器周期。在當前啟動運行的事務的上下文中需要協調式事務關閉機制(優選實施例中的對象Coordinator 223)之前,并不建立該機制。當現行運行事務不需要登記時,這也可防止事務登記至存儲器中。
權利要求
1.用于執行事務處理的客戶/服務器計算系統中的服務器處理設備,所述設備包括用于接收指令服務器處理設備執行事務處理步驟的命令的裝置;用于啟動事務處理的裝置;以及用于判斷在執行事務處理期間是否出現預定觸發事件的裝置,及只當出現觸發事件時,才建立用于相對于在執行事務處理中涉及的多個元素協調事務處理的裝置。
2.權利要求1的設備,其中所述觸發事件是接收一個將作為事務處理一部分的本地資源更新的請求。
3.權利要求1的設備,其中所述觸發事件是接收一個調用作為事務處理一部分的附加服務器處理設備的請求。
4.權利要求1的設備,其中所述用于協調的裝置是如公共對象請求代理體系結構的對象事務服務(CORBA的OTS)所定義的協調對象。
5.權利要求1的設備,其中所述在執行事務中所涉及的元素是本地資源或遠程服務器過程。
6.權利要求5的設備,其中所述協調操作涉及命令每個在事務處理中涉及的本地資源和/或遠程服務器過程執行它們相應的事務活動。
7.用于執行事務的客戶/服務器計算系統中的服務器處理方法,在服務器上執行的所述方法包括以下步驟接收指令服務器執行事務處理步驟的命令;啟動事務;以及判斷在執行事務處理期間是否出現預定觸發事件,及只當出現觸發事件時,才建立用于相對于在執行事務處理中涉及的多個元素協調事務處理的裝置。
8.權利要求7的方法,其中所述觸發事件是接收一個將作為事務處理一部分的本地資源更新的請求。
9.權利要求7的方法,其中所述觸發事件是接收一個調用作為事務處理一部分的附加服務器處理設備的請求。
10.權利要求7的方法,其中所述用于協調的裝置是如公共對象請求代理體系結構的對象事務服務(CORBA的OTS)所定義的協調對象。
11.權利要求7的方法,其中所述在執行事務中所涉及的元素是本地資源或遠程服務器過程。
12.權利要求11的方法,其中所述協調操作涉及命令每個在事務處理中涉及的本地資源和/或遠程服務器過程執行它們相應的事務活動。
13.存儲于計算機可讀存儲媒體上的計算機程序產品,當所述計算機程序產品在服務器計算機上運行時,所述產品執行在執行事務處理的客戶/服務器計算系統中使用的服務器處理方法,所述方法包括以下步驟接收指令服務器計算機執行事務處理步驟的命令;啟動事務;以及判斷在執行事務處理期間是否出現預定觸發事件,及只當出現觸發事件時,才建立用于相對于在執行事務處理中涉及的多個元素協調事務處理的裝置。
全文摘要
一種用于在執行事務處理的客戶/服務器計算系統中的服務器處理方法具有以下步驟:接收指令服務器執行事務處理步驟的命令;啟動事務;以及判斷在執行事務處理期間是否出現預定觸發事件,及只當出現觸發事件時,才建立用于相對于在執行事務處理中涉及的多個元素協調事務處理的裝置。
文檔編號G06F9/30GK1236918SQ9910395
公開日1999年12月1日 申請日期1999年3月10日 優先權日1998年3月18日
發明者阿曼達·埃里薩貝斯·切瑟爾, 馬丁·穆爾霍蘭德, 卡塞恩·薩哈·沃 申請人:國際商業機器公司