專利名稱:多層網絡通信系統的重試技術的制作方法
技術領域:
本發(fā)明涉及對通過網絡的通信進行管理。特別地,本發(fā)明的實施例屬于多層網絡通信系統的重試技術。
背景技術:
處理客戶-服務器型通信的網絡應用變得越來越復雜。一種典型的客戶-服務器通信涉及客戶向服務器發(fā)送請求、以及服務器返回響應給客戶。服務器通常由多個處理客戶請求的邏輯部件組成。在響應于客戶請求產生響應之前,通常由服務器的多個邏輯部件以某種方式對客戶請求進行處理。
在典型的應用中,服務器訪問數據源,以響應于客戶請求檢索客戶所需信息。在將客戶請求發(fā)送到指定數據源或另一部件之前,服務器的每一個邏輯部件都針對客戶請求行使職能。例如,服務器部件之一可能為JAVA程序,其執(zhí)行某些運算、為選定數據查詢數據源、執(zhí)行更多運算,然后將結果返回給客戶。服務器的其他部件可能按順序對通信進行處理,以執(zhí)行附加的運算或進行更多的數據庫查詢。
一些服務器部件還可處理對客戶請求的響應。例如,除了將客戶請求發(fā)送到數據源以外,服務器部件還可將來自數據源的響應發(fā)回給客戶。該部件還可執(zhí)行運算,和/或響應于接收針對客戶請求的響應而進行附加的查詢。
在一些結構中,處理客戶通信的設備包括負載平衡設備和服務器。該服務器由負載平衡設備從一組服務器中選出。選定的服務器和負載平衡器被用來在客戶和諸如數據庫的數據源之間交換信息。服務器將客戶通信從負載平衡設備發(fā)送到指定數據庫。該數據庫可相當于網絡服務器或其他機器,其提供對關于客戶通信的信息的訪問。
對客戶通信進行處理的多個設備相結合提供了多個邏輯部件,其在客戶通信被發(fā)送到數據庫之前對該客戶通信進行處理。例如,可以在服務器內把邏輯部件分層,以便對用于處理客戶通信的過程進行分配。這些分層的部件以順序的方式對客戶通信進行處理。其結果是,該客戶通信在被指定數據庫接收之前,由位于不同服務器上的多個部件按順序對其進行處理。
客戶通信經常不能到達其目的地。其不能到達的原因可能是因為,在將客戶通信發(fā)信號通知給目的地時,目的地無法訪問。其原因還可能是因為,對客戶通信進行處理的部件之一發(fā)生故障。
許多客戶-服務器系統中的部件被配置成在檢測到失敗的地方重試失敗的客戶通信。在多層結構中,失敗檢測傳播到單獨處理客戶通信的所有邏輯部件。其結果是,在同一服務器中的多個部件分別嘗試重試失敗的客戶通信。而且,在失敗被報告回客戶之前,這種多層結構使得一些部件多次重試發(fā)送失敗的客戶通信。大部分這些額外的重試失敗的客戶通信的嘗試都是沒有用處的。
例如,如圖8所示,假設服務器800提供一個通信路徑,其包括第一應用程序830、第二應用程序840、和服務器應用程序820。該通信路徑用于將客戶810與目的地連接。在這個實例中,目的地為數據源850。傳統的不具有指定重試部件的系統將使用第二應用程序840、第一應用程序830、和服務器應用程序820來反復重試失敗的客戶通信。例如,如果在第二應用程序840試圖聯系數據源850時發(fā)生失敗,那么傳統的系統將使第二應用程序840重試客戶通信,然后將失敗指示給第一應用程序830。然后,該第一應用程序重試失敗的客戶通信。如果數據源850對第二應用程序840仍然不可用,那么在第一應用程序830進行重試之后由第二應用程序840進行另一次重試。在第二應用程序840重試兩次、第一應用程序830重試一次之后,將失敗通知給服務器部件820。如果服務器部件820進行了重試,那么第二應用程序840可重試兩次,并且第一應用程序830可再次重試。其結果是,在通知客戶810失敗的客戶通信之前,該客戶將等待較長的時間。
在一些現有系統中,當在具有冗余部件的環(huán)境中發(fā)生失敗,則該環(huán)境將對自身重新配置,使得后續(xù)請求被發(fā)送到另一未失敗的環(huán)境。這樣,重試請求通常將取得成功,但需要另一機器和附加的資源。例如,如果數據庫服務器崩潰,該環(huán)境將對自身重新配置,使得后續(xù)請求到達另一個服務器上??捎韶撦d平衡器來選擇另一個服務器,這通常在初始服務器的內部部件失敗之后進行。
綜上所述,無疑需要提供用于處理通信失敗的技術,而避免了由通信路徑中的多個部件為響應在通信路徑中發(fā)生的失敗進行重試操作而造成的浪費。
發(fā)明內容
本發(fā)明提供了用于對客戶和數據源之間的失敗通信進行重試的技術。在一個實施例中,服務器構成了客戶和數據源之間的通信路徑的一部分,其被配置成包括位于單個內部邏輯部件上的重試邏輯。服務器內的其他邏輯部件將失敗的客戶通信報告給指定用來嘗試重試的部件。
根據一個實施例,重試通信可由重試邏輯所駐留的部件進行管理。該重試邏輯可被配置成選擇性地確定某些通信為可以重試,并確定其他通信為不可重試。該重試邏輯還可與為失敗的客戶通信選擇新的通信路徑的邏輯相結合。
其他實施例包括重試技術和對來自客戶通信路徑中的另一設備的重試通信的管理。例如,可以用負載平衡設備或客戶來實施重試技術。
本發(fā)明以舉例的方式、而不是以限定的方式,通過附圖中的圖來進行說明,其中,相同的附圖標記指代相同的元件,其中圖1示出了一種包括用于在客戶和數據源之間傳送通信的指定重試部件的系統;圖2所示的方框圖示出了被配置成包括有重試邏輯的服務器的操作;圖3示出了在客戶和數據源之間的通信路徑中實施重試邏輯的流程圖;圖4示出了一種實施服務器的重試邏輯的方法,其中所述服務器用來將客戶與數據源相連接;圖5示出了一種用于在將客戶與數據源相連的系統上實施重試邏輯的方法;圖6示出了一種數據結構,其能以重試邏輯來實施,以確定某種失敗通信是否可以重試;
圖7所示的方框圖示出了一種通過其實施本發(fā)明實施例的計算機系統;以及圖8示出了一種用于重試針對服務器的失敗的客戶通信的現有技術系統。
具體實施例方式
本發(fā)明描述了一種用于訪問數據源的方法和裝置。在以下的描述中,為了進行說明,為提供對本發(fā)明的詳盡理解而列出了許多具體細節(jié)。然而,可以知道,本發(fā)明無需這些具體細節(jié)也可得以實施。在其他情況下,為了避免對本發(fā)明的不必要的混淆,以方框圖的形式示出了眾所周知的結構和設備。
A.總述根據一個實施例,為構成客戶和數據源之間的通信路徑的順序部件指定一個重試點。該指定的重試部件被設置在通信路徑中的多個部件中的一個上。如果從客戶到數據源的通信沒能到達其目的地,那么該指定的重試部件就是重試把客戶通信發(fā)送到目的地的惟一部件。其他的部件不重試把通信發(fā)送到目的地,而是將通信未能到達目的地通知給重試部件。
當客戶通信在通信路徑中的一個部件上失敗時,需要重試部件。此外,當通信路徑中的一個部件漏掉、或未能處理客戶通信時,也需要重試部件。
目的地可以是數據源。數據源的例子包括數據庫和目錄。在一個實施例中,包括數據庫服務器和數據庫的數據庫系統可包含數據源。
數據源可包括網絡服務器、諸如目錄和數據庫設備的數據存儲器以及其他存儲設備。在互聯網應用中,數據源50通常為網絡服務器、或網絡激活數據存儲器。
邏輯部件包括程序、應用程序、軟件、編碼的固件或硬件,其被配置成處理客戶通信以便執(zhí)行特定任務。重試部件是被配置成向數據源重試發(fā)送客戶通信的邏輯部件。重試部件通過把通信發(fā)送給構成到數據源的通信路徑的一部分的中間部件,來向數據源發(fā)送通信。該重試部件可使用初始通信路徑、或類似通信路徑來重試發(fā)送客戶通信。作為選擇,該重試部件可被配備成選擇由在重試部件外部的設備上的不同中間部件構成的另一通信路徑。如果初始數據源在通信路徑中失敗,該重試部件還可嘗試訪問另一數據源。
重試部件的一個具體實例為位于服務器上的邏輯服務器部件,其為服務器服務并分派輸入請求。用作服務器接口的其他部件同樣可適于實施重試邏輯。
在一個實施例中,將多個邏輯部件按順序連接,以將通信從客戶發(fā)送到數據源。這些部件中的一個被指定為用于通信路徑部件的重試部件。如果客戶通信被檢測為未能訪問數據源,則該重試部件向數據源重試發(fā)送第一通信。通信路徑中的其他部件被指定向重試部件發(fā)送通信失敗的指示。當通信路徑中的一個部件失敗,前一個部件(亦即,將請求發(fā)送到失敗部件的部件)向重試部件發(fā)送指示。任何不是重試部件但卻位于通信路徑中的部件接收指示,并且必須同樣地將向重試部件發(fā)送指示。這樣,每一個其他部件都將指示通知給重試部件,而不需要向數據源重新發(fā)送第一通信。
通信路徑包括邏輯部件,其按順序結合以將客戶通信發(fā)送到數據源。通信路徑的邏輯部件可位于不同的設備上。重試點為沿通信路徑的一個位置,邏輯位于該重試點處,以重試發(fā)送失敗的客戶通信。
在嘗試重新向數據源發(fā)送客戶通信之前,重試邏輯可確定失敗的客戶通信是否可以重試。某些類型的通信或特定請求可被指定為不可重試。這些指定可結合到重試邏輯中。
在重新發(fā)送失敗客戶通信之前,重試邏輯還可確定替換的通信路徑。該替換的通信路徑可位于前一通信路徑的部件所在的設備之外。重試部件可沿任一路徑發(fā)送請求,以繞過失敗的通信。例如,重試邏輯可考慮是否需要將通信發(fā)送到發(fā)生失敗的設備之外。在進行該決定的過程中,重試部件還可確定一個特殊請求是否可以重試。
在另一實施例中,在客戶和數據源之間的第一通信路徑上指定重試點。該第一通信路徑包括多個邏輯部件,其順序地接收并發(fā)送客戶通信到數據源。該重試點構成通信路徑的一部分。如果客戶通信路徑中的一個部件失敗,或者不能到達其目的地,則向該重試部件發(fā)出失敗通知。
例如,在一個實施例中,如果客戶通信不能沿位于重試點和數據源之間的通信路徑部分訪問數據源,則通過該通信路徑中的其它部件中的一個或多個來通知重試點,指示客戶通信未能訪問數據源。
根據一個實施例,重試邏輯可確定客戶通信是否可以重試。只有在客戶請求被確定為可以重試的情況下,重試邏輯才可重新發(fā)送客戶通信。
利用本文中描述的技術,系統可使用單個的指定重試部件來執(zhí)行最優(yōu)次數的重試。在很多情況下,一次重試就足以確定數據源是否可以訪問。與此相反,傳統的系統無法被設定成執(zhí)行最優(yōu)次數的重試,尤其是僅一次重試,因為一旦檢測到失敗,通常每個部件將自動重試客戶通信。因此,即使各個部件都被設置為執(zhí)行一次重試,實際執(zhí)行的重試次數可能至少與執(zhí)行重試的部件的數目一樣多。
更進一步,本發(fā)明的實施例允許重試邏輯被配置成做出其他確定和決定。具體來說,重試部件可被配置成確定一個特殊的客戶通信是否可以重試,以及如果需要的話確定一條新的通信路徑。傳統的系統包括太多的重試失敗的客戶通信的部件,使得對重試邏輯進行配置變得困難,而且效率低。
在另一個實施例中,重試部件在重試發(fā)送客戶通信之前進行確定。該確定可與之前試圖重試發(fā)送客戶通信的次數相對應。如果之前嘗試的次數小于最大重試閾值,則重試部件可重試發(fā)送客戶通信。
B.重試技術的系統描述圖1示出了一種包括用于在客戶和數據源之間傳送通信的指定重試部件的系統100。系統100的選定部件按順序結合,以構成在客戶10和數據源50之間的一個或多個通信路徑。重試部件在選定的通信路徑上標示出指定位置,在這個位置處,可重新發(fā)送失敗客戶通信以訪問數據源50。
為了進行說明,在客戶10向數據源50請求信息的環(huán)境下說明系統100。然而,系統100可用在更廣泛的環(huán)境中,可對通信進行處理并將其從源計算機發(fā)送到目的計算機,以及對響應進行處理并將其從目的計算機發(fā)送到源計算機。因此,參照作為客戶通信目的地的數據源50對一個應用進行說明,其中,目的地為例如數據庫系統。
系統100可在客戶10和數據源50之間提供多個通信路徑。每一個通信路徑僅包括一個部件作為重試部件,或者作為選擇,僅包括任一服務器上的構成通信路徑一部分的選定部件作為重試部件,該重試部件被配置成重試把失敗客戶通信發(fā)回給數據源。各個通信路徑的其他部件被配置成將失敗的客戶通信提交到重試部件。
在其他的優(yōu)點中,本發(fā)明的實施例避免了失敗的客戶通信的無用重試次數的增加。通過選定一個用于進行重試的部件,使系統100進行重試的次數得以減少。其結果是,與其他不是特別地使用重試邏輯的系統相比,尤其在與這些其他系統的最壞情況,即多個部件停止發(fā)出重試請求相比較時,將失敗報告回客戶10的延遲可顯著減少。
由一個實施例所提供的另一優(yōu)點在于,重試邏輯可通過較容易且很少的支持在系統中得以實施。例如,重試邏輯可在服務器的單個邏輯部件中得以實施。在重試邏輯已經處于適當位置的情況下,可將附加部件加入到環(huán)境中,而無需對環(huán)境進行實質性的配置。
此外,將重試邏輯集中到一個部件中將使對通信重試的管理變得容易。重試邏輯可被配置成防止對先前已被指定為不可重試的某些客戶通信進行重試。例如,安全的通信先前可被指定為不可重試??梢曰谡埱箢愋蛠泶_定請求是否可以重試。例如,那些無論什么時候都返回同樣的答復的請求是可以重試的。
與此相反,其他傳統的系統允許通信路徑的各個部件都能重新發(fā)送失敗客戶通信。這通常導致延遲延長,因為在客戶被最終通知先前的通信已經失敗之前,一個失敗部件可使得在通信路徑的上行的多個部件重試發(fā)送客戶通信。
在圖1所示的結構中,系統100包括負載平衡設備25、第一服務器20、第二服務器30和第三服務器40。這些服務器的組合可相當于一個服務器場(farm),其用來在將客戶通信發(fā)送到目的地之前對客戶通信進行處理。負載平衡設備25選定這些服務器中的一個,以形成客戶10和數據源50之間的通信路徑。
網絡15可相當于一個廣域網,例如互聯網??蛻?0可為一個終端,其被配置成通過網絡15進行通信。客戶10和網絡15的一個典型實例包括一個帶有訪問互聯網的網絡瀏覽器的臺式計算機。
負載平衡設備25截取從客戶10發(fā)送到數據源50的客戶通信??蛻敉ㄐ趴上喈斢谝粋€數據請求??蛻敉ㄐ趴蛇x擇性地請求在數據源50內寫入數據、修改已有數據、或刪除已有數據。響應于接收客戶通信,負載平衡設備25根據各個服務器的可用資源來選定一個服務器以訪問數據源50。每個服務器20、30、40都包括多個邏輯部件,其按順序對客戶通信進行處理。在圖1提供的實例中,負載平衡設備25選定第一服務器20,從而形成一個由客戶10、負載平衡設備25、第一服務器20和數據源50組成的通信路徑12。在第一服務器20中的多個邏輯部件(參見圖2)按順序結合,從而形成通信路徑12的一部分。
根據一個實施例,服務器20、30、40中的每一個都配置有重試邏輯,其用于在該服務器內從指定邏輯部件重新發(fā)送失敗客戶通信。圖1示出了第一服務器20,其被配置成包括重試部件22。在一個實施例中,重試部件22直接與負載平衡設備25通信。例如,重試部件22可在直接從平衡負載設備25分派客戶通信的邏輯服務器部件上得以實施。第一服務器20的多個其他部件24沿通信路徑12被設置在重試部件22之后。
在該結構中,對順序結合以形成通信路徑12的第一服務器20的各個部件進行分布,使得序列中的第一部件成為重試失敗客戶通信的惟一部件。對于失敗客戶通信而言,第一服務器20中的其他部件24向重試部件22返回一個客戶通信失敗的指示。部件24不嘗試重新發(fā)送失敗客戶通信。
在其他的實施例中,重試邏輯可被設置在沿客戶10和數據源50之間的通信路徑之一的其它位置。在一個實施例中,負載平衡設備25包括用作重試部件22的邏輯。在另一個實施例中,客戶10包括用作重試部件22的邏輯。通過將重試部件22從數據源50中除去,減少了在通信路徑上可以重試向數據源50發(fā)回失敗客戶通信的部件的數目。
圖2所示的方框圖示出了被配置成包括重試邏輯的服務器的操作。該服務器包括多個邏輯部件,其以順序的方式對發(fā)送到服務器的通信進行處理。
在一個實施例中,第一服務器120包括使用多重的分層的部件處理客戶通信112。該部件按照順序114排列,以處理客戶通信112。順序114中的至少一個部件被指定為重試點122。
在一個實施例中,重試部件122對應于在序列114中最先接收客戶通信112的部件。在序列114中使用的其它部件包括第一應用程序124和第二應用程序126。第一應用程序124從重試點122接收客戶通信112。第二應用程序126從第一部件124接收客戶通信112。第二應用程序126把客戶通信112發(fā)送給數據源150。只有在重試點122,服務器120才試圖把失敗客戶通信112重新發(fā)回給數據源150。
在一個實施例中,重試部件122對應于被配置成包括重試邏輯的第一服務器120的服務器部件。第一應用程序124可相當于一個表示層,其用于表示從數據源150到客戶110的信息。第二應用程序126可相當于特殊類型網絡通信的業(yè)務邏輯或其他應用程序。例如,在JAVA環(huán)境中,第一應用程序124為JAVA Servlet Engine(JSERVE)應用程序,以表示來自數據源150的JAVA激活數據。第二應用程序126可相當于EJB服務器應用程序,其傳送用于完成商業(yè)應用程序的邏輯。每一個應用程序都可獨立地對客戶通信112進行處理和修改。
數據源150可利用相反的順序116將響應132傳回給客戶。通過該相反的順序116,響應132被數據源15傳回給第二應用程序126,然后,第二應用程序126將該響應發(fā)送到第一應用程序124,然后發(fā)送到重試點122。接下來,響應132被發(fā)回給客戶110。
有時,處理客戶通信112的部件中的一個失敗。該失敗可由序列114中的任意部件引起,或者作為選擇,可由數據源150引起。例如,數據源150可變得不可用或太過擁堵,而不能處理客戶通信112。然后,當第二應用程序126嘗試傳送客戶通信112到數據源150時,將產生失敗。位于失敗客戶通信點處的部件可利用相反的順序116發(fā)送一個客戶通信112失敗的指示。重試點122響應于接收到客戶通信112失敗的指示,可重試將客戶通信112發(fā)回給數據源150。
當重新發(fā)送失敗客戶通信112時,重試點122實施一個重試序列。在一個實施例中,第一重試序列118包括與序列114相同的部件和排列。在另一個實施例中,第二重試序列119包括另一服務器130的部件。例如,第二重試序列119可使得重試點122將客戶通信112發(fā)送到第二服務器130的第一應用程序134上。第一應用程序134可將客戶通信112發(fā)送到該服務器上的第二應用程序136上。第二服務器130的第一和第二部件134和136可執(zhí)行與第一服務器120的第一和第二應用程序124和126相似的或相同的功能。
更進一步,如果服務器120包括多個用于處理和發(fā)送客戶通信的過程,其他的實施例可使得重試點122選定同一服務器120上的另一過程。
在一個實施例中,每一個部件都在其后續(xù)層中保存部件的拓撲圖。然后,每個部件都可選定可用的部件。重試點122可利用拓撲圖來確定其他服務器、或相同服務器上的部件的狀態(tài)。重試點122可配備有智能信息,以利用來自拓撲圖的信息選擇合適的路徑來發(fā)送重試請求。
此外,其他的實施例可提供其他的重試序列。例如,如果序列114中的一個部件被檢測為已經失敗,則當位于重試點122處的部件重試發(fā)送失敗客戶通信112時,可選擇繞過該部件。
服務器部件122可包括用以選定重試序列的邏輯。例如,如果客戶通信112是安全的,服務器部件122可只使用第一服務器120內部的重試序列。作為選擇,服務器部件122可根據性能選定重試部件。例如,服務器部件122可確定應該將重試保持在同一服務器上,以便使用具有用于特殊客戶請求的有用數據集的高速緩存。
圖3示出了在客戶310和數據源350之間的通信路徑中實施重試邏輯的流程圖。該通信路徑包括負載平衡設備315、服務器部件320、第一應用程序330、第二應用程序340和數據源350。圖3中假定服務器部件320包括重試邏輯。此外,圖3中假定重試邏輯不選擇一個新的通信路徑來重新發(fā)送失敗客戶通信。
如上所述,如果圖3所示的系統使用傳統的重試技術,那么將導致無用重試次數的增加?,F在,將使用圖3來說明一個系統的操作過程,該系統被配置成從指定部件重試失敗客戶通信,由此減小由傳統的系統所產生的延遲。通過僅僅使用指定重試部件320,本發(fā)明的實施例可將重試次數減少至一次嘗試。
利用在此所述的技術,客戶通過網絡把發(fā)出的客戶通信213傳送到負載平衡設備315。該負載平衡設備315將客戶通信312發(fā)送到服務器部件320。該服務器部件320可位于由負載平衡設備315選定的服務器上??蛻敉ㄐ?12由服務器部件320、第一應用程序330、和第二應用程序340發(fā)送到數據源350。
例如,如果第二應用程序340不能訪問數據源350,那么第二應用程序340可將失敗通知322發(fā)送到第一應用程序330。該第一應用程序330將通知322發(fā)送到服務器部件320。
響應于接收來自第一應用程序330的通知322,服務器部件320可將重試332發(fā)回給第一應用程序330。重試332包括客戶通信312的內容。該重試332被發(fā)送到第一應用程序330、第二應用程序340,然后被發(fā)送到數據源350。
如果重試332成功,來自數據源350的響應342被返回到客戶310??梢岳玫诙贸绦?40、第一應用程序330、服務器部件320、負載平衡設備315和客戶310這樣的順序,把響應342發(fā)送到客戶310。
C.實施重試技術的方法圖4示出了一種實施相對于服務器的重試邏輯的方法,其中該服務器用于使客戶與數據源連接。如圖4所描述的方法可在如圖2所描述的部件和系統上得以實施。
在步驟410中,對失敗客戶通信進行檢測。該失敗客戶通信可在失敗點處被檢測到。例如,如果第二應用程序126(圖2中示出)不能訪問數據源150,則檢測點在第二應用程序126處。
在步驟420中,將失敗客戶通信報告給重試點。檢測到失敗的部件可按照通信路徑的順序,將失敗報告回給相鄰的部件。一個或多個中間部件相結合,以按順序將客戶通信從檢測到失敗的部件發(fā)送到重試點。作為選擇,檢測到失敗客戶通信的部件可直接將失敗報告給重試點,從而繞過通信路徑上的中間部件。
在步驟430中,將失敗客戶通信從重試點重新發(fā)送到數據源??身憫谥卦圏c接收到客戶通信失敗的報告而自動執(zhí)行該步驟。
在步驟440中,確定重試是否成功。根據一個實施例,如果重試失敗,則將失敗報告給步驟450中的客戶。因此,重試點可被配置成只嘗試一次重試。
如果重試成功,則步驟460將來自于數據源的響應報告回客戶。例如,如果客戶通信相當于一個讀取操作,則發(fā)回給客戶的響應包括數據和其他信息,使得客戶的瀏覽器能夠顯示對應于客戶請求的信息。
與其他的重試技術相對比,如圖4所描述的實施例所提供的一個優(yōu)點在于,對失敗客戶通信進行檢測并采取行動的點被定位在客戶通信路徑中的一個選定部件上。發(fā)生重試行為的點沒有被客戶通信的通信路徑上的多個部件毫無區(qū)別地共享。當多個邏輯部件相結合而形成客戶通信的通信路徑時,一個實施例使得僅有一個部件對失敗采取行動。這種方法保護了其中有數百或數千個客戶通信同時被處理的系統的資源。
此外,重試部件可以是通信路徑中對失敗進行檢測的惟一位置。作為選擇,可在客戶通信路徑中的另一個部件上中檢測失敗點。更進一步地,重試部件可對外部監(jiān)視器檢測到的失敗客戶通信進行重試。
而且,被配置成實施如圖4所描述的方法的系統還可被配置成實施帶有重試邏輯的其它特征。圖5描述了另一種重試技術的實例。
圖5示出了一種用于在把客戶與數據源相連的系統上實施重試邏輯的方法。圖2中的附圖標記用于說明一個實施例所用的示例性部件。如圖5所描述的方法可在形成客戶110和數據源150之間的通信路徑的一個或多個邏輯部件上被實施。
在步驟510中,由傳送客戶通信到數據源的邏輯部件之一對失敗客戶通信進行檢測。該邏輯部件可相當于序列114中重試點122后的一個部件。如果邏輯部件之一不能訪問序列114中的下一個中間部件,則可將客戶通信檢測為失敗。如果序列114中的最后一個邏輯部件不能訪問數據源150,同樣可將客戶通信檢測為失敗。
在步驟520中,將客戶通信失敗的指示傳送到重試點。該指示可沿相反的順序被發(fā)回給重試部件122。作為選擇,檢測到失敗客戶通信的部件可將指示直接發(fā)送到重試點122,從而繞過在客戶通信最初從重試點122發(fā)送時對客戶通信進行處理的中間部件。
在步驟530中,確定失敗客戶通信是否可以重試。在一個實施例中,在重試點122處進行確定。例如,重試點122可相當于服務器120的服務器部件,其配置有包括用以確定失敗客戶通信是否可以重試的智能信息的重試邏輯。
為了確定客戶通信是否可以重試,重試點122可確定與客戶通信有關的信息。該信息可以在表或其他數據結構中被參考,以便指示出失敗客戶通信是否應該重試。重試點122可確定某些類型的通信是不可重試的。例如,安全通信可被確定為不可重試?;蛘撸ㄐ诺念愋涂芍甘菊埱笫欠窨梢灾卦?。例如,靜態(tài)數據請求可被預先確定為可以重試。更進一步地,重試點122可被配置成將客戶通信的某些源和/或目的地確定為不可重試。
如果步驟530中的確定結果為失敗客戶通信是不可重試的,則步驟540中通知客戶該客戶通信失敗。重試點122可將客戶通信失敗的指示發(fā)送給客戶110。
在一個實施例中,如果步驟530中的確定結果為失敗客戶通信是可以重試的,則在步驟550中,重試點122選定一個通信路徑以重試發(fā)送失敗客戶通信。例如,重試點122可訪問另一服務器,并使用一個新的結合有其他服務器的部件的通信路徑?;蛘?,如果,例如確定在數據源150處發(fā)生故障,則重試點122可確定使用先前的通信路徑。
一旦選定了通信路徑,重試點122就將失敗客戶通信重新發(fā)回給數據源150。重試點122通過將客戶通信發(fā)送到所選定的通信路徑的序列中的下一個后續(xù)部件,來發(fā)送客戶通信。
在例如基于網絡的通信的應用中,請求的內容可指出請求是否可以重試。例如,URL(統一資源定位符)可包含一個變量或其他用語,以指示請求是否可以重試。
圖6示出了一種數據結構600,其能以重試邏輯來實施,以確定某些失敗客戶通信是否可以重試。該數據結構500使從客戶通信確定的一個或多個參數與相應值進行匹配,以確定客戶通信是否可以重試。所述從客戶通信確定的一個或多個參數屬于一組參數特征610。各個參數的相應值屬于一組參數值620。
在所提供的實例中,參數特征610包括安全參數612,用以確定客戶通信是否安全;操作參數614,用以確定客戶通信指定的為何種操作(讀、寫、刪除等);一個或多個用戶定義參數616;和/或一個或多個廠家定義參數618。用戶定義參數可由客戶端的用戶進行定義或配置。廠家定義參數可由服務器供應商進行定義或配置。例如,在服務器場中,廠家在服務器上提供或配置一個或多個邏輯應用程序。
參數值620包括以下值。安全參數值622可要求對非安全通信進行失敗客戶通信重試,但不對安全通信進行失敗客戶通信重試。操作參數值624可指定對指定了讀操作的客戶通信進行重試,但不對指定了寫或刪除操作的客戶通信進行重試。值626可被配置成與用戶定義參數616匹配。舉例來說,如果客戶通信的目的地為特定的網絡地址IP(a),那么值626可排除重試失敗客戶通信。值628可被配置成與廠家定義參數618匹配。例如,對于某些具有ID(a)的客戶端用戶,廠家定義參數可排除重試失敗客戶通信。
用于確定可以重試的客戶通信的更為復雜的數據結構和技術也是可能的。在一個實施例中,可對數據結構600進行修改,以確定可以利用位于重試點外部的新的通信路徑重試客戶通信。例如,安全客戶通信可以是可以重試的,但只有當其利用相同服務器的部件進行傳送時才可以重試。
在一個特定應用中,表600可相當于統一資源定位符(URL)的模式。例如,如果從網絡瀏覽器發(fā)送的超文本傳輸協議(HTTP)請求中的URL模式包含特殊的模式,那么該模式可與特定的重試功能或指示相匹配。例如,指定或包括諸如http//website/documents/reads/*的模式的請求可被確定為可以重試。但指定諸如http//website/documents/updates/*的模式的請求可被確定為不可重試。在后一種情況下,該請求不得是可重試的,因為請求更新數據在本質上意味著,被訪問的數據是動態(tài)的,而不是靜態(tài)的。
D.替換的配置雖然本文中描述的實施例僅僅描述了客戶10和數據源50之間的通信路徑的單個重試部件,但其他的實施例可提供多個重試部件。具體來說,多個重試部件可以位于客戶10和數據源50之間的通信路徑上的關鍵位置。例如,一個實施方案中可使服務器20和負載平衡設備25各自包括一個重試部件。服務器20上的部件被配置成,如果客戶通信在服務器和數據源之間失敗,則服務器20上的部件從服務器的重試部件重試發(fā)送失敗客戶通信。同樣地,負載平衡設備25上的部件被配置成,如果客戶通信在負載平衡設備的邏輯部件中的一個上失敗,則負載平衡設備25上的部件從負載平衡設備的重試部件重試發(fā)送客戶通信。
本文中描述的實施例集中在從客戶到數據源的通信上。然而,本文中所描述的技術并不局限于此。相反,這些技術可應用于發(fā)送方發(fā)送信息到指定接受方的任意情況中,其中信息必須通過多個中間部件。例如,該信息可為由數據源響應于來自客戶的請求而發(fā)送到客戶的響應。請求還可從客戶被發(fā)送到提供服務但不是被客戶檢索的數據源的服務器。
E.硬件描述圖7所述的方框圖示出了一種通過其實施本發(fā)明實施例的計算機系統700。計算機系統700包括總線720或其他的用于傳遞信息的通信機構,以及與總線720相連接并用于處理信息的處理器704。計算機系統700還包括一個主存儲器706,例如隨機存取存儲器(RAM)或其他的動態(tài)存儲器,其與總線702相連,用于存儲信息和要被處理器704執(zhí)行的指令。在要被處理器704執(zhí)行的指令的執(zhí)行過程中,主存儲器706還可用來存儲臨時變量或其他的中間信息。計算機系統700還包括只讀存儲器(ROM)708或其他的靜態(tài)存儲器,其與總線702相連,用于存儲靜態(tài)信息和用于處理器704的指令。提供了諸如磁盤或光盤的存儲設備710,其與總線702相連,用于存儲信息和指令。
計算機系統700可通過總線702與諸如陰極射線管(CRT)的顯示器712相連,該顯示器用于顯示信息給計算機用戶。包括字母數字和其他鍵的輸入設備714與總線702相連,用于向處理器704傳送信息和指令選擇。另一種類型的用戶輸入設備為光標控制器716,例如鼠標、跟蹤球、或用于向處理器704傳送方向信息和指令選擇以及控制顯示器712上的光標移動的光標方向鍵。這種輸入設備通常在兩個軸,即第一軸(例如X)和第二軸(例如Y)上具有兩個自由度,這使得該設備可在平面內進行定位。
本發(fā)明涉及用于實施本文所述技術的計算機系統700的使用。根據本發(fā)明的一個實施例,響應處理器704執(zhí)行在主存儲器706中包含的一個或多個指令的一個或多個序列,計算機系統700執(zhí)行這些技術。這種指令可從諸如存儲設備710的另一計算機可讀介質被讀入到主存儲器706中。主存儲器706中包含的指令序列的執(zhí)行使得處理器704執(zhí)行本文中所描述的過程步驟。在替換實施例中,硬件電路可用于替代軟件指令或與軟件指令結合使用,來實施本發(fā)明。因此,本發(fā)明的實施例不局限于任何具體的硬件電路和軟件的結合。
本文中使用的術語“計算機可讀介質”指的是參與向處理器704提供要執(zhí)行的指令的所有介質。這種介質可采取多種形式,包括但不限于非易失性介質、易失性介質和傳輸介質。例如,非易失性介質包括諸如存儲設備710的光盤或磁盤。易失性介質包括如主存儲器706的動態(tài)存儲器。傳輸介質包括同軸電纜、銅線和光纖,其包括構成總線702的線。傳輸介質同樣可采取聲波或光波的形式,例如在無線電波和紅外數據通信過程中產生的波。
通常形式的計算機可讀介質包括,例如,軟盤、軟磁盤、硬盤、磁帶、或其他任何磁介質、CD-ROM、其他任何光介質、穿孔卡、紙帶、具有孔圖案的其它任何物理介質、RAM、PROM、和EPROM、FLASH-EPROM、其它任何存儲器芯片或磁帶、下文所述的載波、或計算機可讀的其它任何介質。
各種形式的計算機可讀介質可涉及用于向處理器704傳送一個或多個指令的一個或多個序列以用于處理。例如,這些指令開始時可存儲在遠程計算機的磁盤上。該遠程計算機可將這些指令加載到其動態(tài)存儲器中,并使用調制解調器通過電話線發(fā)送這些指令。計算機系統700的本地調制解調器可通過電話線接收數據,并使用紅外發(fā)送器將該數據轉換為紅外信號。紅外檢測器可接收在紅外信號中攜帶的數據,并且合適的電路可將數據放置在總線702上??偩€702將數據傳送到主存儲器706,處理器704從該主存儲器706檢索并執(zhí)行這些指令。在被處理器704執(zhí)行之前或之后,主存儲器706收到的指令可選擇性地存儲到存儲設備710上。
計算機系統700還包括與總線702相連的通信接口718。通信接口718提供了一個雙向的數據通信,其與連接到本地網絡722的網絡鏈路720相連。例如,通信接口718可為綜合服務數字網(ISDN)卡或調制解調器,以提供到相應類型電話線的數據通信連接。另舉例來說,通信接口718可為局域網(LAN)卡,以提供到兼容的LAN的數據通信連接。無線鏈路同樣可以實施。在任意這樣的實施例中,通信接口718發(fā)送和接收電信號、電磁信號或光信號,這些信號傳載表征不同類型信息的數字數據流。
網絡鏈路720通常通過一個或多個網絡向其他數據設備提供數據通信。例如,網絡鏈路720可通過本地網絡722向主機724提供連接,或向由互聯網服務供應商(ISP)726操作的數據設備提供連接。ISP 726又通過目前通常被稱為“互聯網”728的全球分組數據通信網絡提供數據通信服務。本地網絡722和互聯網728都使用傳載數字數據流的電信號、電磁信號或光信號。通過各種網絡的信號和在網絡鏈路720上并通過通信接口718的信號是傳輸信息的載波的典型形式,其中,這些信號從計算機系統700傳送數字數據,并向計算機系統700傳送數字數據。
計算機系統700可通過網絡、網絡鏈路720和通信接口718發(fā)送信息并接收包括程序代碼的數據。在互聯網情況下,服務器730可通過互聯網728、ISP 726、本地網絡722和通信接口718傳輸用于應用程序的請求代碼。
處理器704接收到代碼后,可執(zhí)行收到的代碼,并/或將收到的代碼存儲在存儲設備710、或其他的非易失性存儲器中,以用于日后的執(zhí)行。通過這種方式,計算機700可獲得載波形式的應用程序代碼。
在前面的說明中,參照本發(fā)明的具體實施例對其進行了描述。然而,很明顯,在不脫離本發(fā)明的精神和范圍的情況下,可對本發(fā)明進行各種修改和改變。因此,說明書及附圖應視作說明性的,而不是進行限定。
權利要求
1.一種用于對發(fā)送方和指定接收方之間的通信進行管理的系統,所述系統包括多個邏輯部件,其相互連接,以將發(fā)送方通信從所述發(fā)送方按順序發(fā)送到所述指定接收方;重試部件,為所述多個部件中的一個,如果所述發(fā)送方通信不能到達所述指定接收方,則所述重試部件被指定向所述指定接收方重試發(fā)送所述發(fā)送方通信;以及多重部件,其在所述多個邏輯部件中,通過將所述發(fā)送方通信失敗的指示發(fā)送到所述重試部件,來對所述發(fā)送方通信失敗作出響應,而無需它們自身向所述指定接收方重試發(fā)送所述發(fā)送方通信。
2.根據權利要求1所述的方法,其中,所述發(fā)送方為客戶,所述接收方為數據源,以及所述發(fā)送方通信為對由所述數據源管理的數據的請求。
3.根據權利要求1所述的系統,其中,所述重試部件在從所述發(fā)送方到所述指定接收方的通信路徑上,位于所述多重部件之前。
4.根據權利要求1所述的系統,其中,所述重試部件被設置在服務器的接口上,所述接口被配置成對從其他設備到所述服務器的請求進行處理。
5.根據權利要求1所述的系統,其中,所述重試部件為服務器的邏輯服務器部件,其服務并分派請求到所述指定接收方。
6.根據權利要求1所述的系統,其中,所述重試部件位于負載平衡設備上,所述負載平衡設備從所述發(fā)送方接收所述發(fā)送方通信,并將所述發(fā)送方通信發(fā)送到服務器,所述服務器包括所述多個邏輯部件中的其他部件。
7.根據權利要求1所述的系統,其中,所述多個部件中的至少多重部件位于第一服務器上,以及,其中所述重試部件被配置成使用第二服務器的部件,來重試將所述第一通信發(fā)送到所述指定接收方。
8.根據權利要求1所述的系統,其中,所述重試部件訪問拓撲圖,以確定哪個所述多重部件正確地運行。
9.根據權利要求1所述的系統,還包括監(jiān)視器,其位于所述多個邏輯部件的外部,所述外部監(jiān)視器被配置成檢測所述發(fā)送方通信是否沒能到達所述指定接收方,并且當所述發(fā)送方通信未能到達所述指定接收方時,與所述重試部件通信。
10.根據權利要求1所述的系統,其中,所述重試部件在重新發(fā)送所述第一通信之前,確定所述第一通信是否可以重試。
11.根據權利要求1所述的系統,其中,如果所述多重邏輯部件中的一個或多個指出所述第一通信未能訪問所述指定接收方,所述重試部件為用于重試將所述第一通信發(fā)送到所述指定接收方的惟一部件。
12.根據權利要求10所述的系統,其中,所述重試部件至少部分地基于所述發(fā)送方通信的特征,確定所述發(fā)送方通信是否可以重試。
13.根據權利要求10所述的系統,其中,所述單個重試部件和所述多重部件位于服務器上,以及其中,所述重試部件被配置成,如果任意所述多重部件指示所述第一通信未能訪問所述指定接收方,就與其他服務器聯絡以重新發(fā)送所述第一通信。
14.根據權利要求1所述的系統,其中,所述重試部件位于所述發(fā)送方上,并通過廣域網與所述多重部件通信。
15.根據權利要求10所述的系統,其中,所述單個重試部件在確定所述發(fā)送方通信是否可以重試時,確定所述第一通信是否安全。
16.根據權利要求10所述的系統,其中,所述單個重試部件在確定所述發(fā)送方通信是否可以重試時,對所述發(fā)送方的標識進行確認。
17.根據權利要求10所述的系統,其中,所述單個重試部件在確定所述發(fā)送方通信是否可以重試時,對所述接收方的標識進行確認。
18.根據權利要求1所述的系統,其中,所述單個重試部件位于服務器內,以及其中,所述單個重試部件確定所述服務器中的至少一個其他的可選部件,并通過將所述第一通信發(fā)送到所述至少一個其他的可選部件,來重試將所述發(fā)送方通信發(fā)送到所述指定接收方。
19.根據權利要求1所述的系統,其中,在重試發(fā)送所述發(fā)送方通信之前,所述重試部件確定所述發(fā)送方通信之前試圖重試的次數,然后僅當所確定次數小于最大重試閾值時,才重試發(fā)送所述發(fā)送方通信。
20.一種用于對網絡通信進行管理的計算機實施方法,所述方法包括在發(fā)送方和指定接收方之間的第一通信路徑上指定一個重試點,所述第一通信路徑包括多個邏輯部件,其順序地接收并將通信從所述發(fā)送方發(fā)送到所述指定接收方,所述重試點構成所述通信路徑的一部分;如果所述發(fā)送方通信不能沿所述重試點之外的所述通信路徑部分訪問所述指定接收方,則向所述重試點發(fā)送關于所述發(fā)送方通信未能訪問所述指定接收方的指示;然后只從所述重試點重新發(fā)送所述發(fā)送方通信,以訪問所述指定接收方。
21.根據權利要求20所述的方法,其中,響應于檢測到所述發(fā)送方通信未能訪問所述指定接收方,而向所述重試點發(fā)送關于所述發(fā)送方通信未能訪問所述指定接收方的指示。
22.根據權利要求20所述的方法,其中,所述重試點的指定包括指定邏輯服務器部件以執(zhí)行重試邏輯。
23.根據權利要求20所述的方法,其中,檢測發(fā)送方請求未能檢索數據包括,檢測到所述指定接收方是不可用的。
24.根據權利要求20所述的方法,其中,檢測發(fā)送方請求未能檢索數據包括,檢測到所述通信路徑中的邏輯部件失敗。
25.根據權利要求20所述的方法,還包括在檢測到所述發(fā)送方請求失敗后,選擇新的發(fā)送方請求通信路徑。
26.根據權利要求20所述的方法,其中,選擇新的通信路徑包括,使用所述重試點處的邏輯來確定可用的通信路徑,以訪問所述指定接收方。
27.根據權利要求20所述的方法,其中,指定重試點包括,選擇構成所述通信路徑的所述邏輯部件的一部分作為所述重試點,所述邏輯部件部分包括至少兩個邏輯部件。
28.根據權利要求27所述的方法,其中,選擇所述邏輯部件的一部分包括,從負載平衡設備選擇所述邏輯部件部分,所述負載平衡設備在多個服務器之間分配負荷量,所述邏輯部件部分位于所述多個服務器中的一個上。
29.根據權利要求20所述的方法,還包括在重新發(fā)送所述發(fā)送方通信之前,確定所述發(fā)送方通信是否可以重試。
30.根據權利要求29所述的方法,其中,確定所述發(fā)送方通信是否可以重試包括,確定所述發(fā)送方的標識,以及如果所述發(fā)送方的標識被指定為允許重新發(fā)送所述發(fā)送方通信,則重新發(fā)送所述發(fā)送方通信。
31.根據權利要求29所述的方法,其中,確定所述發(fā)送方通信是否可以重試包括,確定所述指定接收方的標識,以及如果所述指定接收方的標識被指定為允許重新發(fā)送所述發(fā)送方通信,則重新發(fā)送所述發(fā)送方通信。
32.根據權利要求29所述的方法,其中,確定所述發(fā)送方通信是否可以重試包括,如果所述發(fā)送方通信是安全的,則確定所述發(fā)送方通信為不可重試。
33.根據權利要求29所述的方法,其中,確定所述發(fā)送方通信是否可以重試包括,確定所述發(fā)送方通信之前試圖重試的次數,然后,僅當所確定次數小于最大重試閾值時,才重試發(fā)送所述發(fā)送方通信。
34.一種用于對網絡通信進行處理的計算機實施方法,所述方法包括在發(fā)送方和指定接收方之間的第一通信路徑上指定重試點,所述第一通信路徑包括多個邏輯部件,其順序地接收并將通信從所述發(fā)送方發(fā)送到所述指定接收方,所述重試點構成所述通信路徑的一部分;如果所述發(fā)送方通信不能沿所述重試點和所述指定接收方之間的所述通信路徑部分訪問所述指定接收方,則向所述重試點發(fā)送關于所述發(fā)送方通信未能訪問所述指定接收方的指示;確定所述發(fā)送方通信是否可以重試;以及如果所述發(fā)送方請求可以重試,則從所述重試點重新發(fā)送所述發(fā)送方通信以訪問所述指定接收方。
35.根據權利要求34所述的方法,其中,確定所述發(fā)送方通信是否可以重試包括,將所述發(fā)送方通信的特征與指示所述發(fā)送方通信是否可以重試的相應指示進行參考。
36.根據權利要求34所述的方法,其中,在發(fā)送方和指定接收方之間的第一通信路徑上指定重試點包括,為所述發(fā)送方選定邏輯服務器部件作為所述重試點。
37.根據權利要求34所述的方法,其中,重新發(fā)送所述發(fā)送方請求以訪問所述指定接收方包括,使用不同的通信路徑將所述發(fā)送方請求重新發(fā)送到所述指定接收方。
38.根據權利要求37所述的方法,其中,使用不同的通信路徑包括,訪問位于所述通信路徑之外的通信設備,以將所述發(fā)送方通信發(fā)送到所述指定接收方。
39.根據權利要求34所述的方法,其中,確定所述發(fā)送方通信是否可以重試包括,確定所述發(fā)送方通信是否是安全的。
40.根據權利要求34所述的方法,其中,向所述重試點發(fā)送關于所述發(fā)送方通信未能訪問所述指定接收方的指示包括,在所述重試點和所述指定接收方之間的多個部件中的一個上,檢測所述發(fā)送方通信是否未能訪問所述指定接收方。
41.根據權利要求34所述的方法,其中,僅從所述重試點重新發(fā)送所述發(fā)送方通信以訪問所述指定接收方包括,選擇一個新的通信路徑,其至少部分地位于在所述重試點的對應設備之外的設備之上。
42.根據權利要求41所述的方法,其中,確定所述發(fā)送方通信是否可以重試包括,確定所述新的通信路徑是否要被使用。
43.根據權利要求42所述的方法,還包括確定所述發(fā)送方通信是否安全,然后,如果所述新的通信路徑要被用來重新發(fā)送所述發(fā)送方通信,則確定所述發(fā)送方通信是不可重試的。
44.根據權利要求34所述的方法,其中,確定所述發(fā)送方通信是否可以重試包括,確定所述發(fā)送方通信是否安全,并且,確定是否重新發(fā)送所述發(fā)送方通信以訪問所述指定接收方包括,使用在所述通信路徑外部的通信設備。
45.根據權利要求34所述的方法,其中,確定所述發(fā)送方通信是否可以重試包括,確定所述發(fā)送方的標識,以及其中,重新發(fā)送所述發(fā)送方通信以訪問所述指定接收方包括,如果所述發(fā)送方的標識允許重新發(fā)送所述發(fā)送方通信,則重新發(fā)送所述發(fā)送方通信。
46.根據權利要求34所述的方法,其中,確定所述發(fā)送方通信是否可以重試包括,確定所述指定接收方的標識,以及其中,重新發(fā)送所述發(fā)送方通信以訪問所述指定接收方包括,如果所述指定接收方的標識允許重新發(fā)送所述發(fā)送方通信,則重新發(fā)送所述發(fā)送方通信。
47.一種用于對發(fā)送方和指定接收方之間的通信進行管理的系統,所述系統在包括多個邏輯部件的設備上得以實施,所述多個邏輯部件按順序結合以將發(fā)送方通信發(fā)送到所述指定接收方,所述系統包括存儲器,其存儲數據,所述數據確定一個或多個特征,并指出具有所述一個或多個特征的通信是否可以重試;以及重試部件,其是所述多個邏輯部件中的一個,對所述發(fā)送方通信的特征進行確定,以及如果所述發(fā)送方通信未能訪問所述指定接收方,其訪問所述存儲器,以確定是否重試發(fā)送所述發(fā)送方通信。
48.根據權利要求47所述的系統,其中,所述存儲在存儲器中的數據通過將指示所述發(fā)送方通信是否安全的特征與指示所述發(fā)送方通信是否可以重試的相應指示進行參考,來指示所述發(fā)送方通信是否可以重試。
49.根據權利要求47所述的系統,其中,所述存儲在存儲器中的數據通過將所述發(fā)送方通信的操作與指示所述發(fā)送方通信是否可以重試的相應指示進行參考,來指示所述發(fā)送方通信是否可以重試。
50.根據權利要求47所述的系統,其中,所述重試部件被配置成為所述服務器唯一地重試選擇未能訪問所述指定接收方的發(fā)送方通信。
51.根據權利要求50所述的系統,其中,所述重試部件被配置成從一組部件中選擇部件組合,所述一組部件包括所述設備的多個邏輯部件,其中,所述一組部件中的至少一些部件位于所述設備外部。
52.一種帶有用于管理網絡通信的一個或多個指令序列的計算機可讀介質,其中,由一個或多個處理器對所述一個或多個指令序列進行的執(zhí)行使得所述一個或多個處理器執(zhí)行以下步驟在發(fā)送方和指定接收方之間的第一通信路徑上指定重試點,所述第一通信路徑包括多個邏輯部件,其順序地接收并將通信從所述發(fā)送方發(fā)送到所述指定接收方,所述重試點構成所述通信路徑的一部分;如果所述發(fā)送方通信不能沿所述重試點之外的所述通信路徑部分訪問所述指定接收方,則向所述重試點發(fā)送關于所述發(fā)送方通信未能訪問所述指定接收方的指示;以及僅僅從所述重試點重新發(fā)送所述發(fā)送方通信,以訪問所述指定接收方。
53.根據權利要求52所述的計算機可讀介質,其中,所述用于向所述重試點發(fā)送關于所述發(fā)送方通信未能訪問所述指定接收方的指示的指令包括,用于檢測所述發(fā)送方通信未能訪問所述指定接收方的指令。
54.根據權利要求52所述的計算機可讀介質,其中,所述用于指定重試點的指令包括,使用邏輯服務器部件以執(zhí)行所述重試邏輯的指令。
55.根據權利要求52所述的計算機可讀介質,其中,所述用于檢測發(fā)送方請求未能檢索數據的指令包括,用于檢測所述指定接收方是不可用的指令。
56.根據權利要求52所述的計算機可讀介質,其中,所述用于檢測發(fā)送方通信未能檢索數據的指令包括,用于檢測所述通信路徑中的邏輯部件失敗的指令。
57.根據權利要求52所述的計算機可讀介質,還包括在檢測到所述發(fā)送方請求失敗之后,為所述發(fā)送方請求選擇新的通信路徑的指令。
58.根據權利要求52所述的計算機可讀介質,其中,所述用于選擇新的通信路徑的指令包括,使用所述重試點處的邏輯以確定用于訪問所述指定接收方的可用通信路徑的指令。
59.根據權利要求52所述的計算機可讀介質,其中,所述用于指定重試點的指令包括,用于選擇構成所述通信路徑的所述邏輯部件部分作為所述重試點的指令。
60.根據權利要求52所述的計算機可讀介質,其中,所述用于選擇所述邏輯部件部分的指令包括,為多個服務器選擇負載平衡設備的指令,所述多個服務器至少包括所述重試點所在的第一服務器,以及另一服務器,所述重試點可訪問所述另一服務器,以將所述發(fā)送方通信發(fā)送到所述指定接收方。
61.根據權利要求60所述的計算機可讀介質,還包括用于在重新發(fā)送所述發(fā)送方通信之前,確定所述發(fā)送方通信是否可以重試的指令。
62.根據權利要求61所述的計算機可讀介質,其中,用于確定所述發(fā)送方通信是否可以重試的指令包括,用于確定所述發(fā)送方的標識的指令,以及用于如果所述發(fā)送方的標識被指定為允許重新發(fā)送所述發(fā)送方通信、重新發(fā)送所述發(fā)送方通信的指令。
63.根據權利要求61所述的計算機可讀介質,其中,用于確定所述發(fā)送方通信是否可以重試的指令包括,用于確定所述指定接收方的標識的指令,以及用于如果所述指定接收方的標識被指定為允許重新發(fā)送所述發(fā)送方通信、重新發(fā)送所述發(fā)送方通信的指令。
64.根據權利要求61所述的計算機可讀介質,其中,用于確定所述發(fā)送方通信是否可以重試的指令包括,用于如果所述發(fā)送方通信是安全的、則確定所述發(fā)送方通信是不可重試的指令。
65.一種帶有用于管理網絡通信的一個或多個指令序列的計算機可讀介質,其中,由一個或多個處理器對所述一個或多個指令序列進行的執(zhí)行使得所述一個或多個處理器執(zhí)行以下步驟在發(fā)送方和指定接收方之間的第一通信路徑上指定重試點,所述第一通信路徑包括多個邏輯部件,其順序地接收并將通信從所述發(fā)送方發(fā)送到所述指定接收方,所述重試點構成所述通信路徑的一部分;如果所述發(fā)送方通信不能沿所述重試點和所述指定接收方之間的所述通信路徑部分訪問所述指定接收方,則向所述重試點發(fā)送關于所述發(fā)送方通信未能訪問所述指定接收方的指示;確定所述發(fā)送方通信是否可以重試;以及僅從所述重試點,并僅當所述發(fā)送方請求可以重試時,重新發(fā)送所述發(fā)送方通信以訪問所述指定接收方。
66.根據權利要求65所述的計算機可讀介質,其中,用于在發(fā)送方和指定接收方之間的第一通信路徑上確定重試點的指令包括,用于為所述發(fā)送方選擇邏輯服務器部件作為所述重試點的指令。
67.根據權利要求65所述的計算機可讀介質,其中,用于重新發(fā)送所述發(fā)送方請求以訪問所述指定接收方的指令包括,使用不同的通信路徑將所述發(fā)送方請求重新發(fā)送到所述指定接收方的指令。
68.根據權利要求67所述的計算機可讀介質,其中,使用不同的通信路徑的指令包括,用于訪問在所述通信路徑外部的通信設備以將所述發(fā)送方通信發(fā)送到所述指定接收方的指令。
69.根據權利要求65所述的計算機可讀介質,其中,用于確定所述發(fā)送方通信是否可以重試的指令包括,用于確定所述發(fā)送方通信是否安全的指令。
70.根據權利要求65所述的計算機可讀介質,其中,用于向所述重試點發(fā)送關于所述發(fā)送方通信未能訪問所述指定接收方的指示的指令包括,用于在位于所述重試點和所述指定接收方之間的所述多個部件上,檢測所述發(fā)送方通信是否未能訪問所述指定接收方的指令。
71.根據權利要求65所述的計算機可讀介質,其中,用于僅從所述重試點重新發(fā)送所述發(fā)送方通信以訪問所述指定接收方的指令包括,用于選擇新的通信路徑的指令,所述新的通信路徑至少部分地位于所述重試點所在的設備之外的設備之上。
72.根據權利要求71所述的計算機可讀介質,其中,用于確定所述發(fā)送方通信是否可以重試的指令包括,用于確定所述新的通信路徑是否要被使用的指令。
73.根據權利要求72所述的計算機可讀介質,其中,用于確定所述發(fā)送方通信是否可以重試的指令包括,用于確定所述發(fā)送方通信是否安全的指令,以及用于如果所述新的通信路徑要被用來重新發(fā)送所述發(fā)送方通信,確定所述發(fā)送方通信不可重試的指令。
74.根據權利要求73所述的計算機可讀介質,其中,用于確定所述發(fā)送方通信是否可以重試的指令包括,用于確定所述發(fā)送方通信是否安全的指令,以及用于確定是否重新發(fā)送所述發(fā)送方通信以訪問所述指定接收方的指令包括,使用通信路徑之外的通信設備。
75.根據權利要求73所述的計算機可讀介質,其中,用于確定所述發(fā)送方通信是否可以重試的指令包括,用于確定所述發(fā)送方的標識的指令,以及其中,用于重新發(fā)送所述發(fā)送方通信以訪問所述指定接收方的指令包括,用于如果所述發(fā)送方的標識允許重新發(fā)送所述發(fā)送方通信、則重新發(fā)送所述發(fā)送方通信的指令。
76.根據權利要求73所述的計算機可讀介質,其中,用于確定所述發(fā)送方通信是否可以重試的指令包括,用于確定所述指定接收方的標識的指令,以及其中,用于重新發(fā)送所述發(fā)送方通信以訪問所述指定接收方的通信包括,用于如果所述指定接收方的標識允許重新發(fā)送所述發(fā)送方通信、則重新發(fā)送所述發(fā)送方通信的指令。
全文摘要
本發(fā)明提供了一種對客戶和數據源之間的重試通信進行管理的系統。所述系統包括多個邏輯部件,其按順序結合以構成用于客戶通信的通信路徑。在所述通信路徑中的所述部件中的至少一個被指定為重試部件。所述重試部件為所述通信路徑中的所有部件重試失敗的客戶通信。
文檔編號G06F13/00GK1647482SQ03807855
公開日2005年7月27日 申請日期2003年3月21日 優(yōu)先權日2002年4月5日
發(fā)明者胡維民, 胡安·洛艾薩 申請人:甲骨文國際公司