国产精品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>

      用于被復(fù)制的服務(wù)器的協(xié)議的制作方法

      文檔序號:6419254閱讀:237來源:國知局
      專利名稱:用于被復(fù)制的服務(wù)器的協(xié)議的制作方法
      背景本發(fā)明涉及容錯(cuò)服務(wù)器系統(tǒng),具體地說,本發(fā)明涉及包括冗余服務(wù)器的容錯(cuò)服務(wù)器系統(tǒng)。
      可以使用容錯(cuò)計(jì)算機(jī)或分布式體系結(jié)構(gòu)來實(shí)現(xiàn)遠(yuǎn)程通信系統(tǒng)中的服務(wù)的高度可利用性。但是,使用這種冗余會對其它系統(tǒng)屬性產(chǎn)生負(fù)面影響。例如,使用硬件層次的冗余會增加成本、物理體積、能耗、出錯(cuò)率等。這就不可能在一個(gè)系統(tǒng)內(nèi)使用多層冗余。
      例如,分布式系統(tǒng)可包括計(jì)算機(jī)之間的復(fù)制,以便增強(qiáng)其堅(jiān)固性。如果每個(gè)計(jì)算機(jī)均是容錯(cuò)的,則成本就會加倍。此外,如果以軟件的方式保持備份拷貝,則為了能從軟件出錯(cuò)中進(jìn)行恢復(fù),就分布式系統(tǒng)中的多個(gè)備份而言,額外存儲器的成本會隨著容錯(cuò)硬件的成本而加倍。因此,為了保持低成本,建議避免使用多層冗余。由于這種結(jié)構(gòu)選擇的結(jié)果是僅使用一層冗余,故應(yīng)選擇成盡可能地彌補(bǔ)多種錯(cuò)誤和其它故障。
      硬件出錯(cuò)或軟件出錯(cuò)會導(dǎo)致故障。硬件出錯(cuò)的特征在于是永久的或者是暫時(shí)的。在每一種情況下,這類錯(cuò)誤都可由容錯(cuò)計(jì)算機(jī)來彌補(bǔ)。由于計(jì)算機(jī)硬件的快速發(fā)展,系統(tǒng)中集成電路和/或器件的總數(shù)會不斷地下降,每種集成電路和器件均會在可靠性方面不斷地改進(jìn)。總之,當(dāng)前硬件錯(cuò)誤不是系統(tǒng)故障的主要原因,并且,在將來更不會是這樣。因此,更難以證明需要用獨(dú)立的冗余即容錯(cuò)計(jì)算機(jī)只去處理潛在的硬件錯(cuò)誤。
      就軟件錯(cuò)誤而言,上述內(nèi)容也是不成立的。軟件的復(fù)雜性不斷增加,并且,對較短開發(fā)時(shí)間的要求會阻止在所有可能的配置、操作模式和類似的情況下對日益復(fù)雜化的軟件進(jìn)行測試。較好的測試方法應(yīng)該是充分地調(diào)試正常情況。就僅在非常特定偶然情況下出現(xiàn)的錯(cuò)誤即所謂的“海森缺陷”(“Heisenbuggs”)而言,并不存在有可能或經(jīng)濟(jì)地執(zhí)行完全測試這樣的例外。相反,這種類型的錯(cuò)誤需要由系統(tǒng)內(nèi)的冗余來彌補(bǔ)。
      進(jìn)程的松散連接復(fù)制幾乎可以彌補(bǔ)所有的硬件和軟件錯(cuò)誤,包括暫時(shí)錯(cuò)誤。作為一個(gè)實(shí)例,I.Lee和R.K.Iyer發(fā)表《IEEE軟件工程學(xué)報(bào)》1995年5月的Vo1.21,No.5中的“串行保護(hù)系統(tǒng)中的軟件可靠性”指出,盡管將設(shè)置檢查點(diǎn)設(shè)計(jì)到系統(tǒng)內(nèi)以彌補(bǔ)硬件錯(cuò)誤,但設(shè)置檢查點(diǎn)(即將當(dāng)前狀態(tài)拷貝至備用計(jì)算機(jī))和重啟動(即通過例如讀出自最后一個(gè)檢查點(diǎn)以來出現(xiàn)的事務(wù)的日志而從最后一個(gè)檢查點(diǎn)狀態(tài)開始執(zhí)行,然后開始處理新的檢查點(diǎn))在某些位置能彌補(bǔ)軟件錯(cuò)誤的75%至96%。所述報(bào)告中的說明是,在測試期間未識別出的軟件錯(cuò)誤是錯(cuò)綜復(fù)雜的并且是由非常特殊的條件所觸發(fā)的。這些條件(例如存儲器狀態(tài)、時(shí)間、競爭條件等)在備份進(jìn)程接管之后不會在該進(jìn)程中重新出現(xiàn),因此,軟件錯(cuò)誤不會重新出現(xiàn)。
      網(wǎng)絡(luò)中復(fù)制的問題在于,存在有諸如仲裁中心資源之類的少數(shù)服務(wù),這些服務(wù)不適于分散。這種類型的服務(wù)必須在一個(gè)進(jìn)程中加以實(shí)現(xiàn)并且就效率而言需要將其數(shù)據(jù)保持在堆棧內(nèi)。為了獲得冗余信息,必須在分布式網(wǎng)絡(luò)內(nèi)復(fù)制這種類型的進(jìn)程。在高性能遠(yuǎn)程通信控制系統(tǒng)中,必須用非常低的開銷并在不導(dǎo)致任何額外延遲的情況下進(jìn)行這種復(fù)制。
      依照本發(fā)明的一個(gè)方面,可在這樣一種容錯(cuò)客戶機(jī)-服務(wù)器系統(tǒng)中實(shí)現(xiàn)上述和其它目的,所述系統(tǒng)包括主服務(wù)器、備份服務(wù)器和客戶機(jī)??蛻魴C(jī)將請求發(fā)送給主服務(wù)器。主服務(wù)器接收并處理請求,包括以與主服務(wù)器所執(zhí)行的任何備份處理無關(guān)的方式將響應(yīng)發(fā)送給客戶機(jī),其中,所述響應(yīng)包括主服務(wù)器的狀態(tài)信息。通過以與備份處理無關(guān)的方式發(fā)送響應(yīng),可以獲得較高層次的并發(fā)操作,從而使得系統(tǒng)更有效率。主服務(wù)器還執(zhí)行備份處理,包括周期性地將主服務(wù)器狀態(tài)信息發(fā)送給備份服務(wù)器。客戶機(jī)接收來自主服務(wù)器的響應(yīng)并將主服務(wù)器狀態(tài)信息從客戶機(jī)發(fā)送給備份處理器。
      在本發(fā)明的另一個(gè)方面中,所述主服務(wù)器狀態(tài)信息包括自從最近將主服務(wù)器狀態(tài)信息從主服務(wù)器傳至備份服務(wù)器以來主服務(wù)器業(yè)已處理的所有請求-應(yīng)答對。
      在本發(fā)明的又一個(gè)方面中,所述主服器將主服務(wù)器狀態(tài)信息存儲在存儲裝置內(nèi)。可以響應(yīng)存儲裝置被填加至預(yù)定量從而進(jìn)行在主服務(wù)器中執(zhí)行備份處理的操作。
      在又一個(gè)實(shí)施例中,可根據(jù)預(yù)定的時(shí)間間隔來周期性地進(jìn)行在主服務(wù)器中執(zhí)行的備份處理操作。
      詳細(xì)說明以下就附圖詳細(xì)說明本發(fā)明的各種特征,在附圖中,相類似的部分用相同的標(biāo)號表示。


      圖1是說明冗余服務(wù)器在客戶機(jī)-服務(wù)器應(yīng)用中的用途的框圖。具體地說,示出了多個(gè)客戶機(jī)應(yīng)用程序C。主服務(wù)器S101在第一處理器103上運(yùn)行。獨(dú)立于第一處理器103的第二處理器105以與主服務(wù)器S101相并行的方式運(yùn)行備份服務(wù)器S’107。一般地說,主服務(wù)器S101和備份服務(wù)器S’107在處理了任何來自客戶機(jī)應(yīng)用程序C的特定請求之后出現(xiàn)的一個(gè)虛擬時(shí)刻T應(yīng)具有相同的內(nèi)部狀態(tài),因此,在其中的某一個(gè)出故障時(shí),另一個(gè)可在沒有任何一個(gè)客戶機(jī)應(yīng)用程序C注意到問題的情況下進(jìn)行接管。(由于備份服務(wù)器S’107跟蹤主服務(wù)器S101,故備份服務(wù)器S’107會比主服務(wù)器S101更晚地實(shí)時(shí)地到達(dá)上述虛擬時(shí)刻)。被復(fù)制的服務(wù)器進(jìn)程的存在對使用該服務(wù)器的客戶應(yīng)用程序C來說應(yīng)是不可見的。為了實(shí)現(xiàn)這種策略,需要解決下列問題尋址客戶應(yīng)用程序C應(yīng)在與主服務(wù)器S101或備份服務(wù)器S’107(或它們兩者)是否執(zhí)行該業(yè)務(wù)無關(guān)的情況下以一致的方式對服務(wù)器進(jìn)行尋址。
      復(fù)制與同步來自不同客戶應(yīng)用程序C的輸入請求以及出錯(cuò)和修復(fù)通知,會因?yàn)樘幚砥髦g物理網(wǎng)絡(luò)的不同而按不同次序到達(dá)主服務(wù)器S101和備份服務(wù)器S’107。然而,這些請求應(yīng)該按照相同次序分類。
      出錯(cuò)和修復(fù)通知服務(wù)器進(jìn)程出錯(cuò)和新服務(wù)器進(jìn)程的開始必須能由仍在工作的服務(wù)器檢測到。
      狀態(tài)傳遞 當(dāng)服務(wù)器進(jìn)程在出錯(cuò)之后重新開始時(shí),正在工作的服務(wù)器必須在能開始處理請求之前將其內(nèi)部狀態(tài)傳給新的服務(wù)器。
      在解決上述問題時(shí),本發(fā)明的最佳實(shí)施例力圖達(dá)到下列目標(biāo)--僅解決復(fù)制問題一次。實(shí)施復(fù)制具有多種缺陷并且檢驗(yàn)起來很復(fù)雜。存在有必須加以彌補(bǔ)的多種可能的錯(cuò)誤。
      --僅增加低開銷并僅將這種開銷施加于與被復(fù)制的進(jìn)程的通信。
      --在正常操作下,在出故障時(shí)和在重整合新進(jìn)程時(shí),最壞情況的響應(yīng)時(shí)間均應(yīng)該是事先知道的并被保持于可接受的水平。
      --不應(yīng)將額外的消息添加給臨界的定時(shí)路徑。許多通常的實(shí)施技術(shù)都違背這一目標(biāo)。例如,主服務(wù)器必須將消息發(fā)送給輔助服務(wù)器并在將應(yīng)答發(fā)回客戶機(jī)之前取回一個(gè)應(yīng)答。應(yīng)該避免這點(diǎn),從而使系統(tǒng)的實(shí)時(shí)響應(yīng)時(shí)間不能因所增加的冗余而減慢。
      --對多個(gè)客戶和動態(tài)客戶進(jìn)行處理。遠(yuǎn)程通信應(yīng)用就一個(gè)服務(wù)器而言一般具有多個(gè)可能的客戶機(jī)。這就意味著不能使用例如在服務(wù)器進(jìn)程出錯(cuò)或恢復(fù)時(shí)必須對客戶機(jī)中的信息進(jìn)行更新的算法。而且,客戶機(jī)進(jìn)程一般具有短的壽命(它們僅在一個(gè)呼叫期間存在)。這就意味著不能使用需要服務(wù)器始終監(jiān)視客戶機(jī)的算法。
      為了使得協(xié)議更為簡單,本發(fā)明的最佳實(shí)施例實(shí)施了幾條限制。通過使得協(xié)議更為一般化可很容易地提高這些限制中的某些限制。但是,它們所包含的內(nèi)容有利用說明所涉及的基本機(jī)理。這些限制是--僅涉及兩個(gè)服務(wù)器主服務(wù)器和備份服務(wù)器。本領(lǐng)域的技術(shù)人員將會看出,可使協(xié)議擴(kuò)展成包括更多的內(nèi)容。
      --一次容許一個(gè)錯(cuò)誤,即一個(gè)客戶機(jī)或服務(wù)器出故障。所述系統(tǒng)必須在容許另一個(gè)錯(cuò)誤之前進(jìn)行恢復(fù)(例如通過啟動一次冷待機(jī))。
      --簡單的網(wǎng)絡(luò)配置。不考慮例如將網(wǎng)絡(luò)分解成兩個(gè)網(wǎng)絡(luò)、每個(gè)網(wǎng)絡(luò)中有服務(wù)器對中的一個(gè)的復(fù)雜網(wǎng)絡(luò)出錯(cuò)情況。
      --沒有大的消息。塊數(shù)據(jù)傳輸及類似的工作可能使緩沖區(qū)或隊(duì)列溢出。
      --軟實(shí)時(shí)響應(yīng)。在正常情況下(即在沒有任何出錯(cuò)服務(wù)器的情況下),就使用非復(fù)制服務(wù)器的系統(tǒng)而言,可以確保有大致相同的響應(yīng)時(shí)間。但是,在出錯(cuò)、恢復(fù)和重新集成時(shí)必須接受較長的響應(yīng)時(shí)間。應(yīng)該仍能保證這些較長的響應(yīng)時(shí)間不超過預(yù)定的最大時(shí)間量。
      --確定的服務(wù)器操作。正如將要更詳細(xì)地說明的那樣,備份服務(wù)器會接收到來自主服務(wù)器的周期性的更新消息。在備份服務(wù)器中對這些更新消息的處理必須是確定性的,以便保證能在發(fā)送更新消息時(shí)達(dá)到與主服務(wù)器相同的內(nèi)部狀態(tài)。服務(wù)器軟件不可以包括諸如調(diào)用時(shí)鐘(時(shí)鐘會根據(jù)被調(diào)用的時(shí)間的不同而返回不同結(jié)果)之類的不確定的系統(tǒng)調(diào)用,因?yàn)?,這種調(diào)用會使備份服務(wù)器達(dá)到與主服務(wù)器不同的內(nèi)部狀態(tài)。
      因此,備份服務(wù)器的狀態(tài)必須100%地由其從主服務(wù)器那里接收的信息所指定。這一點(diǎn)可通過以下兩種方式之一來獲得a)提供給主服務(wù)器的請求還被傳給備份服務(wù)器,然后,備份服務(wù)器通過對請求作相同的處理而達(dá)到與主服務(wù)器相同的狀態(tài);或者b)將處理的結(jié)果(即主服務(wù)器所產(chǎn)生的對客戶機(jī)的應(yīng)答以及服務(wù)器內(nèi)部狀態(tài)的變化)發(fā)送給備份服務(wù)器。
      --僅有簡單的應(yīng)用程序。在對后述的本發(fā)明協(xié)議的說明中,復(fù)制服務(wù)器不可以請求來自其它服務(wù)器的服務(wù)。協(xié)議必須能擴(kuò)展,以便對這種情況進(jìn)行處理。在一種這類擴(kuò)展中,第二服務(wù)器能檢測到請求來自復(fù)制服務(wù)器并遵循相同(或相類似)的協(xié)議。
      以上提出了需要加以解決的四個(gè)問題。以下說明本發(fā)明對這些問題之一的解決方案即復(fù)制與同步。在一個(gè)最佳實(shí)施例中,將復(fù)制和同步實(shí)現(xiàn)為在客戶機(jī)與服務(wù)器之間所使用的通信協(xié)議的一部分。這種方法的優(yōu)點(diǎn)是--在設(shè)計(jì)協(xié)議時(shí)僅實(shí)施一次。
      --復(fù)制相對應(yīng)用程序是隱藏的。協(xié)議可對復(fù)制服務(wù)器進(jìn)行尋址。
      本發(fā)明的協(xié)議設(shè)計(jì)成用于能有效地實(shí)現(xiàn)預(yù)定的復(fù)制和同步1)可以有兩種可選實(shí)現(xiàn)方式a)實(shí)現(xiàn)方式可以是所述通信方法的延伸。這就意味著對于主服務(wù)器中處理來自客戶機(jī)的請求不存在有額外的系統(tǒng)調(diào)用。
      b)作為另一種方式,所述協(xié)議可包括在協(xié)議棧中。這就意味著可以進(jìn)行更有效的實(shí)施。
      用現(xiàn)有操作系統(tǒng)上的軟件層來實(shí)現(xiàn)容錯(cuò)的所謂“中間件”方案得益于第一種可選方案(即可選方案“a”)但并不得益于第二種方案(即可選方案“b”)。
      2)可在實(shí)時(shí)臨界循環(huán)之外進(jìn)行服務(wù)器之間的復(fù)制,客戶機(jī)獲得應(yīng)答的速度可以與主服務(wù)器S101響應(yīng)的速度一樣快。
      3)使將保持冗余所需的額外信息,附加到應(yīng)答中以便使開銷最小。
      4)周期性地對備份服務(wù)器S’107進(jìn)行更新/監(jiān)聽,以便使開銷最小并能確保出錯(cuò)之后的恢復(fù)時(shí)間不超過預(yù)定的最大值。可由主服務(wù)器但不能由備份服多器加以處理的請求的數(shù)量,將受到可在兩次周期性更新之間到達(dá)的請求的數(shù)量的限制。
      5)可在I/O處理器中支持上述復(fù)制,以便使主處理器中根本沒有開銷。
      所說的協(xié)議能保證被處理的請求以及與處理上述請求的次序有關(guān)的信息總是被保存在兩臺獨(dú)立計(jì)算機(jī)中的獨(dú)立位置處。這種策略基于以下兩種事實(shí)1)可以在比以通常方式進(jìn)行的較晚一些時(shí)間生成主服務(wù)器狀態(tài)的冗余拷貝,而同時(shí)仍然保持容錯(cuò)。也就是說,在通常的系統(tǒng)中,要在將應(yīng)答發(fā)送給客戶機(jī)之前將服務(wù)器狀態(tài)信息從主服務(wù)器傳遞給備份服務(wù)器。但是,本發(fā)明認(rèn)識到,這是一種保守的方法,因?yàn)?,在將?yīng)答發(fā)送給客戶機(jī)之前,不會有其它處理器看到這種結(jié)果。因此,可認(rèn)為在對請求進(jìn)行處理之前主服務(wù)器業(yè)已出現(xiàn)了崩潰。這種情況持續(xù)至客戶機(jī)接收到應(yīng)答時(shí)。對生成服務(wù)器狀態(tài)的冗余拷貝以便進(jìn)行容錯(cuò)來說,這是最后的可能時(shí)間。
      2)包括有三種獨(dú)立的部分請求服務(wù)的客戶應(yīng)用程序C、主服務(wù)器S101以及備份服務(wù)器S’107。在任何時(shí)間都足以將關(guān)鍵信息保存在兩個(gè)冗余拷貝內(nèi)。但是,這些拷貝不需要僅用主服務(wù)器S10’和備份服務(wù)器S’107來保存(如在通常的兩階段提交協(xié)議中那樣)。相反,客戶機(jī)也可用于(暫時(shí))保存信息。
      就簡單的服務(wù)器應(yīng)用程序而言,復(fù)制是以圖2所示的消息流為基礎(chǔ)的??蛻魬?yīng)用程序C通過在客戶機(jī)處理器中運(yùn)行的協(xié)議棧205來訪問主服務(wù)器101。配對的協(xié)議棧215、215’還在主服務(wù)器和備份服務(wù)器處理器PR01和PR02上運(yùn)行。將請求201從客戶應(yīng)用程序C傳紿主服務(wù)器S101。主服務(wù)器S101的協(xié)議棧215將一序列號與請求聯(lián)系起來,然后對該請求進(jìn)行處理。作為對請求進(jìn)行處理的結(jié)果,主服務(wù)器S101能生成一應(yīng)答消息203并立即通過協(xié)議棧215將它發(fā)送給客戶應(yīng)用程序C。依照本發(fā)明的一個(gè)方面,服務(wù)器的協(xié)議棧215可執(zhí)行這樣的附加功能將輸入的請求201存儲到一個(gè)隊(duì)列中,該隊(duì)列的內(nèi)容通過備份路徑209周期性地與備份服務(wù)器S’107的協(xié)議棧215’進(jìn)行信息交流。依照本發(fā)明的又一個(gè)方面,供給客戶機(jī)C的應(yīng)答消息203還包括這樣的信息,該信息指示在輸入的請求序列(自最后一次清除以來)中的一個(gè)什么樣的點(diǎn)處對客戶機(jī)的請求201進(jìn)行了處理(即序列號)。
      當(dāng)客戶機(jī)的應(yīng)用程序協(xié)議棧205接收到應(yīng)答消息203時(shí),該協(xié)議棧就做兩件事1)將應(yīng)答消息203傳給客戶應(yīng)用程序C;以及,2)將可能包含例如原始請求以及應(yīng)答的消息207發(fā)送給備份服務(wù)器協(xié)議棧215’,所述備份服務(wù)器協(xié)議棧215’則將上述消息傳給備份服務(wù)器S’107。在某些實(shí)施例中,備份服務(wù)器的協(xié)議棧215’可以將確認(rèn)消息211發(fā)送給客戶協(xié)議棧205,從而確認(rèn)接收到了客戶的消息。
      除了備份服務(wù)器接收來自客戶應(yīng)用程序協(xié)議棧205的信息以外,不論主服務(wù)器協(xié)議棧205中的隊(duì)列何時(shí)達(dá)到了預(yù)定值或者當(dāng)經(jīng)過了預(yù)定的時(shí)間量時(shí),都通過備份路徑209將主服務(wù)器協(xié)議棧215中的隊(duì)列清除成與備份服務(wù)器S’107一致。除了將這種必要的冗余信息提供給備份服務(wù)器S’107以外,清除操作還起監(jiān)聽的作用,以便將主服務(wù)器S101仍處在激活狀態(tài)的指示給備份服務(wù)器S’107。清除/監(jiān)聽之間的時(shí)間可設(shè)定用于在出錯(cuò)時(shí)進(jìn)行恢復(fù)的最大時(shí)間。
      備份服務(wù)器S’107在不能接收到來自主服務(wù)器S101的一個(gè)或多個(gè)監(jiān)聽信息時(shí)接管執(zhí)行權(quán)并開始接收來自客戶機(jī)C的請求。
      應(yīng)該被傳給備份服務(wù)器以便確保能進(jìn)行恢復(fù)的信息是a)原始請求,以及b)被添加在應(yīng)答消息內(nèi)的序列號。利用這種信息,備份可(在崩潰之后)對處于同樣次序(所述請求按該次序由主服務(wù)器來加以處理)的請求進(jìn)行排序分類,然后,執(zhí)行同樣的處理過程。盡管就來自主服務(wù)器協(xié)議棧215的信息而言,序列號不太重要(因?yàn)橐话憧砂催M(jìn)行處理的次序來傳遞輸入請求的拷貝),但是,可將同樣的信息從客戶應(yīng)用程序協(xié)議棧205和主服務(wù)器協(xié)議棧215傳給備份服務(wù)器S’107。
      將整個(gè)的主服務(wù)器應(yīng)答消息(包括序列號)傳給備份對備份服務(wù)器來說可以提高檢錯(cuò)性能。除使用用來對消息次序進(jìn)行排序的序列號以外,備份服務(wù)器S’107還可以通過比較自己的應(yīng)答與來自主服務(wù)器S101的應(yīng)答而驗(yàn)證它是否與主服務(wù)器相同步。但是,應(yīng)該注意,就這一目的而言,傳送這種信息的替代信息(例如應(yīng)答的檢查和)就足夠了。
      就檢錯(cuò)而言,可從源(即通過客戶機(jī)C或通過來自主服務(wù)器S101的周期性更新值)或從這兩者傳遞完全的應(yīng)答信息。在一個(gè)實(shí)施例中,僅通過來自主服務(wù)器協(xié)議棧215的周期性更新值來傳遞完全的應(yīng)答信息,以便使必須通過客戶機(jī)的協(xié)議棧205經(jīng)由較長路徑的信息量達(dá)到最少。
      還存在有以文本方式將序列信息添加給應(yīng)答消息的多種替代形式。一種替代形式是僅添加處理請求的序列號。另一種替代形式是包括自最后一次周期性更新以來的整個(gè)請求序列。這些替代形式用于同樣的目的,并且,每種形式均可被認(rèn)為是“服務(wù)器狀態(tài)信息”,因?yàn)椋糠N形式都限定了備份服務(wù)器S’107必須采取的操作的次序,以便獲得與主服務(wù)器S101的狀態(tài)相同的狀態(tài)。
      以下說明出錯(cuò)的情況以及本發(fā)明如何對它們進(jìn)行處理。在應(yīng)答發(fā)送之前主服務(wù)器崩潰在這種情況下,客戶機(jī)C不會接收到來自主服務(wù)器S101的確認(rèn)信息(即應(yīng)答消息203)。作為響應(yīng),客戶機(jī)C的協(xié)議棧205將原始請求201重新傳送給主服務(wù)器S101和輔助服務(wù)器S’107。否則(即在無錯(cuò)狀態(tài)下),客戶應(yīng)用程序C僅將請求發(fā)送給主服務(wù)器S101。(應(yīng)該注意,客戶應(yīng)用程序通常不知道與容錯(cuò)有關(guān)的活動,因?yàn)?,它僅對單個(gè)的邏輯服務(wù)器進(jìn)行尋址??蛻魴C(jī)處理器中的協(xié)議棧205管理地址翻譯以及與兩個(gè)服務(wù)器S101和S’107之間的通信。)如果輔助服務(wù)器S’107錯(cuò)過了來自主服務(wù)器S101的監(jiān)聽信息,則它就進(jìn)行接管。否則,它就簡單地丟棄從自客戶機(jī)C接收的請求。在發(fā)送應(yīng)答之后但在將信息清除到備份之前主服務(wù)器崩潰可以從客戶機(jī)的協(xié)議棧205所提供的更新消息中檢索出這樣的信息,該信息是將備份服務(wù)器S’107更新成發(fā)送最后一次應(yīng)答時(shí)存在的狀態(tài)所需要的。從主服務(wù)器S101到客戶機(jī)C的“應(yīng)答路徑”中的消息包含對客戶應(yīng)用程序的應(yīng)答以及對備份服務(wù)器S’107的更新信息??蛻魬?yīng)用程序僅需要接收來自客戶機(jī)C的應(yīng)答信息而不是附加的更新信息。如圖2所示,(通過備份服務(wù)器的協(xié)議棧215’)將更新信息從客戶機(jī)協(xié)議棧205傳給備份服務(wù)器S’107。這種更新信息是備份服務(wù)器S’107在另外的情況下借助于由主服務(wù)器S101直接傳送的周期性更新值而接收到的同樣信息。在已存在的消息中增加某些額外信息的成本與必須為其發(fā)送額外消息相比是較小的。在發(fā)送初始請求之后客戶機(jī)崩潰在這種情況下,在主服務(wù)器清除其隊(duì)列時(shí),備份服務(wù)器S’107接收用于更新自身的信息。主系統(tǒng)崩潰主服務(wù)器S101以及在同一處理器103中執(zhí)行的任何客戶機(jī)都將丟失。備份服務(wù)器S’107執(zhí)行來自上次被清除的隊(duì)列中的其余命令,然后對正在主服務(wù)器處理器103之外執(zhí)行的客戶機(jī)一直進(jìn)行更新到在上一次應(yīng)答給出的那個(gè)點(diǎn)。消息丟失在認(rèn)為接收處理(或處理器)出錯(cuò)之前,重新傳送未獲得立即確認(rèn)的消息一次或兩次。
      以下參照圖3詳細(xì)說明客戶機(jī)的協(xié)議棧205。在步驟301,客戶應(yīng)用程序的執(zhí)行會使得請求被發(fā)送給主服務(wù)器。在步驟302,在協(xié)議棧205中處理請求,并將請求發(fā)送給主服務(wù)器。所述協(xié)議在消息丟失時(shí)實(shí)施重新傳送,并且,為做到這一點(diǎn)而保持消息的拷貝。在步驟303,應(yīng)答業(yè)已返回自主服務(wù)器。將應(yīng)答沒有延遲地發(fā)送回客戶應(yīng)用程序過程。為復(fù)制的協(xié)議保持請求及相關(guān)應(yīng)答的拷貝。因?yàn)?,在該例中,假定主服?wù)器較快地進(jìn)行響應(yīng),所以,不存在從主服務(wù)器發(fā)送至客戶機(jī)的獨(dú)立確認(rèn)信息。也就是說,自主服務(wù)器返回的應(yīng)答足以起應(yīng)答的作用。在包括較慢主服務(wù)器的其它實(shí)施例中,協(xié)議必須包括獨(dú)立的確認(rèn)信息,這種確認(rèn)信息總是在傳送應(yīng)答前從主服務(wù)器發(fā)送給客戶機(jī)。
      在步驟304,應(yīng)用程序過程可在不等待實(shí)行復(fù)制的情況下繼續(xù)執(zhí)行。在步驟305,協(xié)議棧205將請求及應(yīng)答存儲在一個(gè)為尚未被復(fù)制給備份服務(wù)器的請求所設(shè)計(jì)的隊(duì)列內(nèi)。
      在步驟306,客戶機(jī)將包含原始請求和應(yīng)答的消息發(fā)送給備份服務(wù)器。作為響應(yīng),備份服務(wù)器將一個(gè)確認(rèn)(步驟307)返回給客戶機(jī),以便確認(rèn)安全地接收了客戶機(jī)的消息。應(yīng)該注意,在沒有該確認(rèn)信息的情況下,客戶機(jī)沒有知道業(yè)已接收到了消息的其它方法,因?yàn)?,沒有來自備份服務(wù)器的其它應(yīng)答。
      以前提及了多個(gè)其它問題,即出錯(cuò)和修復(fù)通告以及狀態(tài)傳遞。以下說明本發(fā)明對這些問題的解決方案。
      就出錯(cuò)和修復(fù)通告而言,主、輔助服務(wù)器之間的通信還起監(jiān)聽的作用。如果輔助服務(wù)器未被規(guī)則地更新,則輔助服務(wù)器會等待足夠長的時(shí)間去接收任何顯著的客戶機(jī)超時(shí),然后進(jìn)行接管。在服務(wù)器過程重新開始時(shí),該過程就檢查是否存在有激活的主服務(wù)器。
      就狀態(tài)傳遞而言,它在重啟動出錯(cuò)了的服務(wù)器時(shí)使用。在執(zhí)行服務(wù)器能像主/備份對那樣工作之前,它們的狀態(tài)必須被拷貝成重啟動的狀態(tài)。在這種狀態(tài)傳遞與進(jìn)行系統(tǒng)軟件和硬件升級時(shí)所需的狀態(tài)傳遞類型之間沒有根本的差異。而且,由于現(xiàn)代處理器有很少量的硬件故障,狀態(tài)傳遞機(jī)制應(yīng)該針對系統(tǒng)升級被最佳化。
      我們記得,本發(fā)明的一個(gè)方面是這樣的要求即即使來自不同客戶機(jī)的請求以及出錯(cuò)和修復(fù)通告可在主和備份服務(wù)器S101和S’107中按不同的次序到達(dá),但必須按同樣的次序?qū)λ鼈冞M(jìn)行排序。因此,在某些實(shí)施例中,提供用于實(shí)施消息之間的因果相關(guān)關(guān)系(也稱為“因果次序關(guān)系”)的機(jī)制是有益的。這基本上涉及按符合邏輯地發(fā)送出消息的次序而不是按接收消息的嚴(yán)格次序來對消息進(jìn)行處理。對因果次序關(guān)系更完整的說明可以連同對ISIS工具包的說明一起得到,ISIS工具包是由美國紐約Ithaca的Cornell大學(xué)開發(fā)的。IEEE計(jì)算機(jī)學(xué)會出版社1994年出版的ISBN 0-8186-5342-6的K.P.Birman和R.van Renesse所著《用ISIS工具包進(jìn)行可靠的分布式計(jì)算》中有上述說明??捎玫烷_銷來實(shí)現(xiàn)因果次序關(guān)系,并且,因果次序關(guān)系可通過允許較高度的并發(fā)性來改進(jìn)系統(tǒng)效率。圖4a和4b說明了這種效率的提高。在圖4a中,處理器Pro1將對資源的請求發(fā)送給資源處理器Pro2(步驟401)。在不支持底層系統(tǒng)中因果次序關(guān)系的情況下,Pro2必須將消息發(fā)送給資源Pro3,以便對其進(jìn)行初始化(步驟402)。在業(yè)已應(yīng)答資源準(zhǔn)備好了之后(步驟403),允許Pro2將一應(yīng)答發(fā)送給Pro1,以便通知它資源是可用的(步驟404)。處理器Pro1可將一消息發(fā)送給資源Pro3(步驟405)。應(yīng)該注意,各處理器的行為要受到一些限制,這些限制被設(shè)計(jì)成要阻止一個(gè)處理器在接收先前發(fā)送的消息之前接收(從而處理)以后發(fā)送的消息。
      參照圖4b,該圖說明了其中底層系統(tǒng)支持因果次序關(guān)系的實(shí)例。該實(shí)例始于處理器Pro1將對資源的請求發(fā)送給資源處理器Pro2(步驟406)?,F(xiàn)在,資源處理器Pro2不需要等待來自Pro3的應(yīng)答。相反,它立即將一應(yīng)答發(fā)送給Pro1,以便通知資源是可用的(步驟407)。在大約同樣的時(shí)刻,Pro2將一消息發(fā)送給資源Pro3,以便對其初始化(步驟408)。由于有這種并發(fā)性,故處理器Pro1能比所述的沒有因果次序關(guān)系的實(shí)例(圖4a)更快地將其消息發(fā)送給資源Pro3(步驟409)。這并不會產(chǎn)生任何問題,因?yàn)?,即使來自Pro2的消息有所延遲,因果消息次序關(guān)系也能確保Pro3會在接收到來自Pro1的消息之前處理初始化消息(另外的步驟408’)。
      對于客戶機(jī)調(diào)用復(fù)制服務(wù)器的受限情況而言,不一定要實(shí)現(xiàn)完全的因果次序關(guān)系模型,因?yàn)?,在這種情況下,序列號足以使得復(fù)制服務(wù)器按適當(dāng)?shù)拇涡驅(qū)φ埱筮M(jìn)行處理。但是,在將協(xié)議擴(kuò)展至更普遍的情況(例如允許復(fù)制服務(wù)器調(diào)用另一個(gè)復(fù)制服務(wù)器)時(shí),就需要調(diào)用上述完全的模型。
      業(yè)已參照具體實(shí)施例說明了本發(fā)明,但是,本專業(yè)的技術(shù)人員很容易注意到,可按除上述最佳實(shí)施例以外的具體形式來實(shí)施本發(fā)明??稍诓幻撾x本發(fā)明精神的情況下做到這一點(diǎn)。上述最佳實(shí)施例僅僅是說明性的,無論如何都不應(yīng)認(rèn)為是限制性的。應(yīng)該由后附的而不是由前面的說明來給出了本發(fā)明的范圍,本文包括了屬于權(quán)利要求范圍內(nèi)的所有變化形式和等同形式。
      權(quán)利要求
      1.一種容錯(cuò)客戶機(jī)-服務(wù)器系統(tǒng),所述系統(tǒng)包括主服務(wù)器;備份服務(wù)器;以及客戶機(jī);其中所述客戶機(jī)包括用于將請求發(fā)送給主服務(wù)器的裝置;用于接收來自主服務(wù)器的響應(yīng)的裝置,其中該響應(yīng)包括主服務(wù)器狀態(tài)信息;用于將主服務(wù)器狀態(tài)信息發(fā)送給備份服務(wù)器的裝置;所述主服務(wù)器包括用于接收并處理請求的裝置;用于響應(yīng)上述請求、以與任何備份處理無關(guān)的方式將響應(yīng)發(fā)送給客戶機(jī)的裝置;其中,所述響應(yīng)包括主服務(wù)器的狀態(tài)信息;用于執(zhí)行備份處理的裝置,所述備份處理包括周期性地將主服務(wù)器狀態(tài)信息發(fā)送給備份服務(wù)器;以及所述備份服務(wù)器包括用于接收來自主服務(wù)器的主服務(wù)器狀態(tài)信息的裝置;用于接收來自客戶機(jī)的主服務(wù)器狀態(tài)信息的裝置。
      2.如權(quán)利要求1的容錯(cuò)客戶機(jī)-服務(wù)器系統(tǒng),其特征在于,所述主服務(wù)器狀態(tài)信息包括自從最近將主服務(wù)器狀態(tài)信息從主服務(wù)器傳給備份服務(wù)器以來主服務(wù)器業(yè)已處理的所有請求-應(yīng)答對。
      3.如權(quán)利要求1的容錯(cuò)客戶機(jī)-服務(wù)器系統(tǒng),其特征在于,所述主服務(wù)器狀態(tài)信息包括從一個(gè)應(yīng)答中得出的檢查和。
      4.如權(quán)利要求1的容錯(cuò)客戶機(jī)-服務(wù)器系統(tǒng),其特征在于,根據(jù)預(yù)定的時(shí)間間隔周期性地啟動所述主服務(wù)器的用于執(zhí)行備份處理的裝置。
      5.如權(quán)利要求1的容錯(cuò)客戶機(jī)-服務(wù)器系統(tǒng),其特征在于所述主服務(wù)器還包括用于將主服務(wù)器狀態(tài)信息存儲起來的裝置;以及主服務(wù)器中的用于執(zhí)行備份處理的裝置響應(yīng)于用于存儲主服務(wù)器狀態(tài)信息的裝置被填加至預(yù)定量而被啟動。
      6.一種操作容錯(cuò)客戶機(jī)-服務(wù)器系統(tǒng)的方法,所述系統(tǒng)包括主服務(wù)器、備份服務(wù)器以及客戶機(jī);所述方法包括下列步驟將來自客戶機(jī)的請求發(fā)送給主服務(wù)器;在主服務(wù)器中,接收并處理上述請求,包括以與主服務(wù)器所執(zhí)行的任何備份處理無關(guān)的方式將響應(yīng)發(fā)送給客戶機(jī),其中,所述響應(yīng)包括主服務(wù)器的狀態(tài)信息;在主服務(wù)器中執(zhí)行備份處理,包括周期性地將主服務(wù)器狀態(tài)信息發(fā)送給備份服務(wù)器;在客戶機(jī)中接收來自主服務(wù)器的響應(yīng);以及將主服務(wù)器狀態(tài)信息從客戶機(jī)發(fā)送給備份處理器。
      7.如權(quán)利要求6的方法,其特征在于,所述主服務(wù)器狀態(tài)信息包括自從最近將主服務(wù)器狀態(tài)信息從主服務(wù)器傳至備份服務(wù)器以來主服務(wù)器業(yè)已處理的所有請求-應(yīng)答對。
      8.如權(quán)利要求6的方法,其特征在于,所述主服務(wù)器狀態(tài)信息包括從一個(gè)應(yīng)答中得出的檢查和。
      9.如權(quán)利要求6的方法,其特征在于,根據(jù)預(yù)定的時(shí)間間隔周期性地執(zhí)行主服務(wù)器中所述用于執(zhí)行備份處理的步驟。
      10.如權(quán)利要求6的方法,其特征在于所述主服務(wù)器還執(zhí)行所述將主服務(wù)器狀態(tài)信息存儲在存儲裝置內(nèi)的步驟;響應(yīng)于存儲裝置被填加至預(yù)定量而進(jìn)行在主服務(wù)器中所述用于執(zhí)行備份處理的步驟。
      全文摘要
      一種容錯(cuò)客戶機(jī)-服務(wù)器系統(tǒng)包括主服務(wù)器、備份服務(wù)器和客戶機(jī)??蛻魴C(jī)將請求發(fā)送給主服務(wù)器,主服務(wù)器接收并處理請求,其中包括以與任何備份處理無關(guān)的方式將響應(yīng)發(fā)送給客戶機(jī)。所述響應(yīng)包括主服務(wù)器的狀態(tài)信息。主服務(wù)器還執(zhí)行備份處理,備份處理包括周期性地將主服務(wù)器狀態(tài)信息發(fā)送給備份服務(wù)器??蛻魴C(jī)接收來自主服務(wù)器的響應(yīng)并將主服務(wù)器狀態(tài)信息發(fā)送給備份服務(wù)器。所述主服務(wù)器狀態(tài)信息包括自從最近將主服務(wù)器狀態(tài)信息從主服務(wù)器傳至備份服務(wù)器以來主服務(wù)器業(yè)已處理的所有請求-應(yīng)答對。可根據(jù)預(yù)定的時(shí)間間隔周期性地啟動主服務(wù)器中的用于執(zhí)行備份處理的裝置。另外,可在主服務(wù)器中的用于存儲主服務(wù)器狀態(tài)信息的存儲器被填加至預(yù)定量時(shí)啟動上述用于執(zhí)行備份處理的裝置。
      文檔編號G06F12/00GK1342280SQ99813680
      公開日2002年3月27日 申請日期1999年9月23日 優(yōu)先權(quán)日1998年9月24日
      發(fā)明者P·A·霍爾姆貝里 申請人:艾利森電話股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1