專利名稱:防止在進程中長期超時的制作方法
技術領域:
本發(fā)明通常涉及計算機和計算機網絡領域,并且尤其是涉及用于防止在兩個或多個計算機上所運行的進程中長期超時的設備、方法、系統、以及計算機程序產品。
在計算機領域中,為大家所熟知的是一進程運行在一個計算機上,該進程有時必須在另一個計算機上進行某些計算。這類通信通常是以面向客戶機-服務器通信的會話形式而提供的。
在這類系統中,客戶機利用對數據進行處理的請求來調用服務器。提供這類功能的一類軟件是微軟公司所提供的分布式組件模型(DCOM)。在DCOM中,利用TCP/IP協議而從客戶機至服務器進行遠程過程調用(RPC)。因為網絡的不穩(wěn)定性,因此如果服務器或客戶機失去其網絡連接,那么這些調用在很長一段時間內將被擱置。這是由于這樣的事實,即DCOM試圖在產生錯誤信號之前重復調用服務器若干次。這類超時可長達6分鐘之久,這在許多應用中是不可接受的。
EP940750描述了其包括有一客戶機和一服務器的系統,其中當將一消息從客戶機對象發(fā)送到服務器對象時,預備了一數據區(qū)。如果正確的結束了服務器對象所執(zhí)行的處理,那么表明處理結果的數據存儲在數據區(qū)中。如果沒有正確的結束服務器對象所執(zhí)行的處理,那么表明服務器對象狀態(tài)的數據存儲在數據區(qū)中。通過讀取數據區(qū)中的數據,如果已正確的結束了服務器對象的處理,那么客戶機對象接收該處理結果的數據。如果沒有正確的結束服務器對象的處理,那么客戶機對象接收狀態(tài)數據。然而該文獻沒有描述如果例如由于網絡未連接而造成沒有結束處理,那么可避免多長時間的超時。
本發(fā)明致力于解決當其難以將計算結果提供給客戶機的服務器進行進程調用時所出現的長期超時問題。因此本發(fā)明致力于提供一種其可避免長期超時的客戶機。
通過其可防止在網絡中的至少第一計算設備上所運行的進程中長期超時的方法來解決該問題,所述處理調用對第二計算設備進行處理,并且該方法包括步驟將狀態(tài)請求發(fā)送到第二計算設備,并且如果在第二計算設備未對狀態(tài)請求做出響應的情況下將對數據進行處理的阻塞請求自動發(fā)送到第二計算設備。
該問題還可通過其經由一網絡而與其他計算設備相連的計算設備來解決,該計算設備包括一應用單元,該應用單元執(zhí)行計算任務并且請求對另一個計算設備進行處理;一狀態(tài)確定單元,該狀態(tài)確定單元與應用單元相連且將狀態(tài)請求發(fā)送到用于為應用單元執(zhí)行計算任務的另一個計算設備,并且如果未接收到來自另一個計算機的響應,那么該狀態(tài)確定單元自動的將對數據進行處理的阻塞請求發(fā)送到第二計算設備。
這還可通過一種其包括有一計算機可讀介質的程序產品來實現的,該計算機可讀介質上具有計算機程序代碼裝置,當將所述程序加載在計算機上時,該裝置可使計算機執(zhí)行將狀態(tài)請求發(fā)送到另一個計算機,并且在另一個計算機未對狀態(tài)請求做出響應的情況下,自動的將對數據進行處理的阻塞請求發(fā)送到另一個計算機。
根據本發(fā)明的另一個方面,提供了一種方法和服務器,該方法和服務器有助于避免客戶機中長期超時。
這是通過一種用于確定下述計算設備的狀態(tài)的方法來實現的,所述計算設備通過一網絡來接收來自另一個計算設備的處理調用,該方法包括步驟接收來自另一個計算設備的狀態(tài)請求、產生對該請求的至少一個響應、并且將該響應發(fā)送到另一個計算設備。
這還是通過這樣一種計算設備來實現的,該計算設備通過一網絡而與其他計算設備相連,該計算設備包括一應用單元,當被其他計算設備請求這樣做時,該應用單元為其計算單元執(zhí)行計算任務;以及一狀態(tài)響應單元,該狀態(tài)響應單元接收來自另一個計算設備的狀態(tài)請求、產生對該請求的至少一個響應、并且將該響應發(fā)送到另一個計算設備0。
這還是通過一種其包括有一計算機可讀介質的程序產品來實現的,該計算機可讀介質上具有計算機程序代碼裝置,當將所述程序加載在計算機上時,該裝置可使計算機執(zhí)行接收來自另一個計算機的狀態(tài)請求產生對該請求的至少一個響應;以及將該響應發(fā)送到另一個計算機。
根據本發(fā)明的又一個方面,提供了一種計算機網絡,該計算機網絡可避免普通網絡中所存在的客戶機與服務器之間長期超時。
這是通過這樣一種計算設備的系統來實現的,該系統包括其通過一網絡而彼此相連的至少第一和第二計算設備。第一計算設備包括一應用單元,該應用單元執(zhí)行計算任務;一狀態(tài)確定單元,該狀態(tài)確定單元與應用單元相連并且將狀態(tài)請求發(fā)送到第二計算設備,所述第二計算設備為應用單元執(zhí)行某些計算任務,并且如果未接收到來自第二計算設備的響應,那么該狀態(tài)確定單元自動的將對數據進行處理的阻塞請求發(fā)送到第二計算設備,所述處理請求是由應用所引起的。第二計算設備包括一應用單元,該應用單元為第一計算單元執(zhí)行計算任務;以及一狀態(tài)響應單元,該狀態(tài)響應單元接收來自第一計算設備的狀態(tài)請求、產生對該請求的至少一個響應、并且將該響應發(fā)送到第一計算設備。
參考在下文中所描述的實施例,可顯而易見的得知這發(fā)明的這些及其他方面并對其進行闡明。
參考附圖在下文中對本發(fā)明進行描述,在附圖中
圖1圖示了通過一網絡而彼此相連的兩個計算機設備的示意圖;圖2圖示了圖1中的兩個計算機設備的方框圖;圖3圖示了其與第二計算設備中的狀態(tài)響應單元相連的第一計算設備中的狀態(tài)確定單元的方框圖;圖4圖示了根據本發(fā)明的在第一計算設備中所執(zhí)行的第一方法的第一部分的流程圖;圖5圖示了第一方法的第二部分的流程圖;圖6圖示了第一方法的第三部分的流程圖;圖7圖示了根據本發(fā)明的在第二計算設備中所執(zhí)行的第二方法的第一部分的流程圖;圖8圖示了第二方法的第二部分的流程圖;以及圖9圖示了一計算機可讀介質,在該計算機可讀介質中存儲有用于執(zhí)行第一和/或第二方法的程序代碼。
兩個計算設備或計算機10,14通過計算機網絡12而彼此相連。該網絡支持諸如TCP/IP和UDP/IP這樣的兩類通信協議。為了較容易的理解本發(fā)明,圖1中僅給出了兩個計算機。應該清楚的是,可以有更多的計算機連接在該網絡中。
圖2圖示了通過網絡12彼此相連的兩個計算機10和14的簡單方框圖。在這里由一直線來表示網絡12。第一計算機10是所謂的客戶機,同時第二計算機14是一服務器。第一計算機10具有與客戶機DCOM(分布元件模型)單元18相連的一應用單元16,該客戶機DCOM單元18與第二計算機14中的相應服務器DCOM單元24進行通信。應用單元16和DCOM單元18還與第一狀態(tài)確定單元或HPS(宿主輪詢服務)客戶機20相連,該第一狀態(tài)確定單元或HPS客戶機20還與第二計算機14中的狀態(tài)響應單元或HPS服務器22進行通信。服務器DCOM單元24與用于執(zhí)行客戶應用的不同計算任務的服務器應用單元26相連。當客戶機DCOM單元18調用第二計算機14時,如果第二計算機沒有與網絡相連,那么可能造成長期超時。這是由于這樣的事實,即在產生一錯誤之前客戶機DCOM單元18重試調用第二計算機若干次。這種長期超時是不可接受的,而本發(fā)明在第二計算機中的狀態(tài)響應單元22的幫助下通過使用第一計算機10中的狀態(tài)確定單元20可解決上述問題。
圖3圖示了通過網絡12與第二計算機的狀態(tài)響應單元22相連的第一計算機的狀態(tài)確定單元20的方框圖。在這里仍以直線的形式示出了網絡12。
狀態(tài)確定單元20包括一客戶機控制單元28,該客戶機控制單元28與DCOM單元(向上箭頭所表示的)以及應用單元(向左箭頭所表示的)相連??蛻魴C控制單元28與客戶機發(fā)送計時器30以及響應計時器32相連。客戶機控制單元28通過網絡12與第二計算機的服務器控制單元34進行通信。服務器控制單元34與請求計時器38以及服務器發(fā)送計時器36相連。
現在對該設備的功能進行更為詳細的描述。應用單元16運行某類應用。該應用單元例如可以是某種電子郵件應用或網絡文件系統或顧客特定客戶機/服務器應用。當應用需要服務器執(zhí)行某些處理時,例如取得最新所接收的電子郵件,它與客戶機數據通信模塊單元18相連并且請求對數據進行處理以便對服務器進行DCOM調用。通常采用TCP/IP協議來執(zhí)行DCOM調用。同時該應用與狀態(tài)確定單元或HPS(宿主輪詢服務)客戶機20的客戶機控制單元28相連,并且還將處理請求發(fā)送到控制單元。當客戶機控制單元28接收到該請求時,它開始執(zhí)行圖4所描述的方法的第一部分。因此在步驟40通過接收應用對DCOM調用的請求而開始該方法。一旦通過應用的第一DCOM調用開始該方法,它則繼續(xù)監(jiān)控該應用所進行的任何連續(xù)DCOM調用。在步驟42,客戶機控制單元28讀取其必須輪詢的HPS服務器的配置,該配置是開放式配置。如果在步驟44對該配置的檢查結果為否,那么在步驟46產生了一錯誤信息,在步驟48記錄該錯誤并且使終結HPS客戶機。在步驟44如果結果為是,那么在步驟50將狀態(tài)請求或HPS請求從客戶機控制單元28發(fā)送到服務器控制單元34。將該請求發(fā)送到這類輪詢所專用的特定端口上并且利用UDP/IP(用戶數據報協議網際協議)協議將其作為空請求包來發(fā)送。該信息包包括信息源、目的端口號、對包長度的標識、以及校驗和以作為包頭,并且僅包括一零值以作為數據或負載,其中零值表明一請求消息。在步驟52,客戶機控制單元28啟動客戶機發(fā)送計時器或HPS發(fā)送計時器30,并且在步驟54啟動響應計時器或HPS響應計時器32。此后在步驟56客戶機控制單元28輸入一狀態(tài)WaitforResponse。
該WaitforResponse狀態(tài)如圖5所示。在狀態(tài)WaitforResponse中,在步驟58,客戶機控制單元具有其視不同事件而定的兩個選項。如果在步驟60控制單元接收到HPS響應,那么在步驟62該控制單元使HPS響應計時器32復位并啟動該HPS響應計時器32,并且此后在步驟64與DCOM單元18相連,所述DCOM單元18通過發(fā)送一信號EnaOut_Enabled可進行DCOM通信,并且此后在步驟66控制單元進入被激活狀態(tài)。隨后就HPS服務器而言對HPS響應的格式進行描述。在與請求所發(fā)送的端口號相同的特定端口號上接收該響應。
客戶機控制單元28對HPS發(fā)送計時器30的狀態(tài)進行連續(xù)檢查。如果在步驟68發(fā)送計時器30已超時,在步驟70客戶機控制單元28決定發(fā)送另一請求,并且在步驟72對發(fā)送計時器30進行復位并使其啟動。此后在步驟74控制單元結束并且在步驟58回到初始狀態(tài)WaitforResponse。
圖6給出了在狀態(tài)Enabled下所發(fā)生的。在被激活狀態(tài)中,在步驟76,客戶機控制單元具有其視不同事件而定的三個選項。如果在步驟78它接收到一HPS響應,那么它對HPS響應計時器32進行復位并使其啟動,此后在步驟82結束,并且此后在步驟76回到初始的被激活狀態(tài)。
客戶機控制單元28對發(fā)送計時器30進行檢查,并且在步驟84如果客戶機HPS發(fā)送計時器已出現發(fā)送計時器超時,那么在步驟86客戶機控制單元發(fā)送一HPS請求,并且此后在步驟88對發(fā)送計時器30進行復位并使其啟動。當這樣做時,在步驟90控制單元28結束,并且在步驟76回到初始的被激活狀態(tài)。
客戶機控制單元還對響應計時器32進行檢查并且在步驟92如果HPS響應計時器已達到響應計時器超時,那么在步驟94客戶機控制單元28通過將一信號EnaOut_Disabled發(fā)送到客戶機DCOM單元來禁止DCOM通信,此后在步驟96控制單元28回到WaitForResponse狀態(tài),該狀態(tài)就圖5已在前面進行了描述。如果在響應計時器超時之前未接收到HPS響應,那么禁止DCOM調用。
現在結合圖7和圖8的流程圖來對第二計算機中的服務器控制單元34的工作進行描述。首先轉到圖7,在步驟98,將服務器控制單元34初始化為狀態(tài)WaitforRequest,在該狀態(tài)下服務器控制單元34等待,直到在步驟100它接收到來自客戶機的一HPS請求。在它接收到該請求之后,在步驟102服務器控制單元34對HPS請求計時器38進行復位并使其啟動,并且此后在步驟104發(fā)送一HPS響應。該HPS響應具有與所接收到的請求類型完全相同的包頭。唯一的差別在于該負載或數據是值1而不是值0。值1表明對該請求的響應。此外利用UDP/IP來發(fā)送該消息。將該請求以及該響應發(fā)送到其與HPS客戶機所使用的端口號相同的特定端口上并且在該相同的特定端口上接收該請求以及該響應。此后在步驟106服務器控制單元34還使服務器HPS發(fā)送計時器36復位并使其啟動,因此在步驟108它進入被激活狀態(tài)。
在圖8中對該被激活狀態(tài)進行了描述。在該被激活狀態(tài)中,在步驟110,服務器控制單元34具有其視不同事件而定的三個選項。如果在步驟112接收到HPS請求,那么在步驟114服務器控制單元34對HPS請求計時器38進行復位并使其啟動,因此在步驟116服務器控制單元34結束,并且在步驟110回到初始的使能狀態(tài)。該服務器控制單元34連續(xù)的對服務器發(fā)送計時器36進行檢查,并且如果在步驟118出現了很小的發(fā)送超時,那么在步驟120發(fā)送一HPS響應,在步驟122再次對HPS發(fā)送計時器進行復位并使其啟動,因此在步驟124控制單元結束并且回到初始的被激活狀態(tài)110??刂茊卧?4此外對請求計時器38進行監(jiān)控,并且如果在步驟126出現了HPS請求超計時器時,那么在步驟128控制單元34使發(fā)送計時器36停止并且在步驟130進入狀態(tài)WaitforRequest,就圖7已對該狀態(tài)進行了描述。
按照下述方法來對超時進行處理。在相應控制單元中對定時器值與所設定的超時值進行比較,并且如果計時器到達了設定值,那么由所述控制單元來執(zhí)行相應動作。
定時器值應當與所設定的標準相匹配,以便在故障超時時所出現的故障進行檢測。
必須將客戶機HPS響應計時器設置為是HPS發(fā)送計時器的2.5倍。這可使HPS客戶機錯過一個HPS響應包。
必須將服務器HPS請求計時器設置為是客戶機HPS發(fā)送計時器的1.5倍以便在停止可能的獨立傳輸之前可發(fā)送兩個響應。下面給出了其略述了優(yōu)選計時器設置的表格。
DCOM單元18最終按照下述方法來進行工作。當它接收到應用對DCOM調用的請求時,它檢測在進行調用之前是否已接收到來自客戶機控制單元的EnaOut_enabled信號。如果未接收到,它則將一失敗消息立刻返回到該應用。這例如可以利用如下的一小段代碼來實現If(HostEnabled){HRESULT DCOMFunctl(par1,par2,par3);}else{HRESULT=B_FAIL;}在控制單元和計時器單元的情況下對本發(fā)明進行了描述。這些最好是以一個或多個處理器以及適當程序存儲器的形式而提供的,所述程序存儲器包含有可執(zhí)行該方法的軟件。該軟件還可以提供于諸如CD-ROM盤片這樣的其可載入計算機中的計算機可讀介質上。圖9給出了其包含有用于客戶機、或服務器、或這兩者的程序代碼的一盤片132。該盤片當然還包含用于DCOM單元的上述程序代碼。
所描述的發(fā)明具有若干優(yōu)點。通過使用簡單協議來檢查服務器的狀態(tài),在網絡故障的情況下可使響應更快。按照這種方法,當網絡未連接時,可阻塞對服務器的調用處理。應用會更快的返回并且看起來并未“掛起”。
雖然該協議不是標準的請求/響應協議,但是更像是請求/響應觸發(fā)協議,因此可使巡回延遲減少了標準請求/響應協議下的值的一半(即僅是傳輸延遲減少而并非傳輸和接收延遲)。當網絡負載很重時這尤其有利。
通過根據接收請求而具有所適當設置的響應計時器,還可根據客戶的興趣而使對響應的發(fā)送保護合理的級別。
類似地,將發(fā)送計時器和響應計時器設置成以適度的短間隔來發(fā)送狀態(tài)請求并且可以可靠的方式而更快的閉塞DCOM調用。
在對網絡故障進行檢查的情況下對本發(fā)明進行了描述。然而可使用本發(fā)明的原則以檢查服務器以及服務器應用的其他類型的狀態(tài)。在這種情況下,狀態(tài)請求以及對該請求的響應包含位于數據段中的更多信息或者該消息的負載。
此外在TCP/IP以及UDP/IP的情況下對本發(fā)明進行了描述。然而應當認識到,可利用面向計算機協議的任何會話來實現本發(fā)明。
僅使用兩個計算機已對本發(fā)明進行了描述。根據客戶機上的不同應用需要向多少計算機請求處理,本發(fā)明可用于更多的計算機上。
就DCOM而言,本發(fā)明已對其進行了描述。然而本發(fā)明可用于這樣的其他中間件應用,該中間件應用引導對“用戶應用”進行即刻控制之外的其自己的重試機制。
權利要求
1.一種可防止在網絡中的至少第一計算設備上所運行的進程中長期超時的方法,所述進程調用對第二計算設備進行處理,該方法包括步驟將狀態(tài)請求發(fā)送到第二計算設備,以及在第二計算設備對狀態(tài)請求未響應的情況下,將對數據進行處理的阻塞請求自動的發(fā)送到第二計算設備。
2.根據權利要求1的方法,包括步驟產生對數據進行處理的請求,這引發(fā)了狀態(tài)請求的發(fā)送。
3.根據權利要求1的方法,其中狀態(tài)請求包括與第二計算設備的網絡連接有關的信息請求并且對該狀態(tài)請求的響應包括來自第二計算設備的與網絡連接有關的信息。
4.根據權利要求1的方法,進一步包括對下述時限進行設置的步驟,在所述時限之內接收對狀態(tài)請求的響應,并且包括這樣的步驟,即如果在該時限之內未接收到響應則執(zhí)行處理的阻塞請求。
5.根據權利要求4的方法,其中第二計算設備具有一時限,在該時限之內將響應發(fā)送到第一計算設備,接收響應的時限位于比第二計算設備的發(fā)送時限要長兩倍與三倍之間。
6.根據權利要求1的方法,進一步包括步驟對下述時限進行設置,在所述時限之內發(fā)送狀態(tài)請求并且當該時限到期時執(zhí)行對狀態(tài)請求進行發(fā)送。
7.根據權利要求1的方法,其中使用簡單的第一協議來發(fā)送狀態(tài)請求并且利用第二標準協議來發(fā)送處理請求。
8.一種用于確定計算機設備的狀態(tài)的方法,該計算機用于通過網絡來接收來自另一個計算設備的處理調用,該方法包括步驟接收來自另一個計算設備的狀態(tài)請求;產生對該請求的至少一個響應;并且將該響應發(fā)送到另一個計算設備。
9.根據權利要求8的方法,其中利用第一簡單協議來接收和發(fā)送狀態(tài)請求以及對這些請求的響應。
10.根據權利要求8的方法,其中產生步驟包括無需等待下一個請求即可在請求時限之內產生多于一個的請求。
11.根據權利要求10的方法,其中一旦接收到狀態(tài)請求時,就對請求進行響應的時間進行復位。
12.根據權利要求10的方法,其中另一個計算機具有發(fā)送時限,該發(fā)送時限用于確定何時發(fā)送狀態(tài)請求,并且所述請求時限位于比該發(fā)送時限要長一倍與兩倍之間。
13.根據權利要求8的方法,進一步包括對用于發(fā)送響應的時限進行設置的步驟,并且當所述時限到期時發(fā)送該響應。
14.一種通過一網絡而與其他計算機設備的計算設備,該計算設備包括一應用單元,該應用單元執(zhí)行計算任務并且請求對另一個計算設備進行處理;一狀態(tài)確定單元,該狀態(tài)確定單元與應用單元相連且將狀態(tài)請求發(fā)送到另一個計算機,該另一個計算機為應用單元執(zhí)行計算任務,并且如果未接收到來自另一個計算機的響應,那么該狀態(tài)確定單元自動的將對數據處理的阻塞請求發(fā)送到另一個計算機。
15.一種通過一網絡而與其他計算設備相連的計算設備,該計算設備包括一應用單元,當請求另一個計算機這樣做時,該應用單元為另一個應用單元執(zhí)行計算任務;以及一狀態(tài)響應單元,該狀態(tài)響應單元接收來自另一個計算設備的狀態(tài)請求、產生對該請求的至少一個響應、并且將該響應發(fā)送到另一個計算設備。
16.一種計算設備的系統,該系統包括通過一網絡而彼此相連的至少第一和第二計算設備,第一計算設備包括一應用單元,該應用單元執(zhí)行計算任務;一狀態(tài)確定單元,該狀態(tài)確定單元與應用單元相連并且將狀態(tài)請求發(fā)送到第二計算設備,所述第二計算設備為應用單元執(zhí)行某些計算任務,并且如果未接收到來自第二計算設備的響應,那么該狀態(tài)確定單元自動的將對數據處理的阻塞請求發(fā)送到第二計算設備,所述處理請求是由應用所引起的,第二計算設備包括一應用單元,該應用單元為第一應用單元執(zhí)行計算任務;以及一狀態(tài)響應單元,該狀態(tài)響應單元接收來自第一計算設備的狀態(tài)請求、產生對該請求的至少一個響應、并且將該響應發(fā)送到第一計算設備。
17.一種其包括有一計算機可讀介質的程序產品,該計算機可讀介質上具有計算機程序代碼裝置,當將所述程序加載在計算機上時,該裝置可使計算機執(zhí)行將狀態(tài)請求發(fā)送到另一個計算機;并且在另一個計算機未對狀態(tài)請求做出響應的情況下,自動的將對數據處理的阻塞請求發(fā)送到另一個計算機。
18.一種其包括有一計算機可讀介質的程序產品來實現的,該計算機可讀介質上具有計算機程序代碼裝置,當將所述程序加載在計算機上時,該裝置可使計算機執(zhí)行接收來自另一個計算機的對狀態(tài)的請求產生對該請求的至少一個響應;以及將該響應發(fā)送到另一個計算機。
全文摘要
本發(fā)明涉及用于防止在兩個或多個計算機上所運行的處理中長期超時的設備、方法、系統、以及計算機程序產品。第一計算機(10)包括一應用單元(16),該應用單元執(zhí)行計算任務;以及一狀態(tài)確定單元(20),該狀態(tài)確定單元與應用單元相連。該狀態(tài)確定單元將狀態(tài)請求發(fā)送到第二計算機(14),所述第二計算機為應用單元執(zhí)行某些計算任務,并且如果未接收到來自第二計算機的響應,那么該狀態(tài)確定單元自動的將對數據進行處理的阻塞請求發(fā)送到第二計算設備,其中所述處理請求是由該應用所引起的。第二計算機包括一應用單元(26),該應用單元執(zhí)行計算任務;以及一狀態(tài)響應單元(22),該狀態(tài)響應單元接收來自第一計算設備的狀態(tài)請求、產生對該請求的至少一個響應、并且將該響應發(fā)送到第一計算設備。
文檔編號G06F9/46GK1672381SQ03817442
公開日2005年9月21日 申請日期2003年6月25日 優(yōu)先權日2002年7月24日
發(fā)明者A·維斯塞 申請人:皇家飛利浦電子股份有限公司