故障切換系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及計算機及網(wǎng)絡(luò)體系結(jié)構(gòu),特別設(shè)及一種故障切換系統(tǒng)及方法。
【背景技術(shù)】
[0002] 社會越來越多地依賴于計算機和網(wǎng)絡(luò)來進行互動及貿(mào)易。為實現(xiàn)在關(guān)鍵系統(tǒng)中的 高水平的可用性要求,應(yīng)盡量減小由軟件及硬件缺陷引起的意外故障時間。
[0003] 金融服務(wù)業(yè)是一種系統(tǒng)可用性要求高的行業(yè),但其僅為一種產(chǎn)業(yè)的一個例子。的 確,在現(xiàn)今的金融業(yè),大量的數(shù)據(jù)處理活動由計算機系統(tǒng)支持。特別有趣的是,所謂的"實 時"及"近實時"的聯(lián)機事務(wù)處理應(yīng)用程序,其為典型地長時間高速地和低延時地處理大量 應(yīng)用的交易事務(wù)。運些應(yīng)用程序一般顯示出W下特征:(1)復雜且高速的數(shù)據(jù)處理,(2)可 靠的非易失性數(shù)據(jù)存儲,W及(3)高水平的可用性,例如,支持在大體上不間斷的基礎(chǔ)上服 務(wù)的能力。當實施時,由于它們在系統(tǒng)行為上存在相互矛盾的影響,現(xiàn)有的應(yīng)用程序傾向于 在運些性能要求之間進行折衷,且沒有設(shè)計可W同時地完全滿足全部=個特征,如下面更 詳細的概述。
[0004] 首先,復雜的數(shù)據(jù)處理是指及時執(zhí)行大量的計算、數(shù)據(jù)庫恢復/更新等的能力。運 可W通過并行處理實施,運里多個工作單元可W在相同的物理機器或在分布式網(wǎng)絡(luò)上同時 執(zhí)行。在一些系統(tǒng)中,每個事務(wù)的結(jié)果取決于在先已完成的事務(wù)的結(jié)果。運些系統(tǒng)的運種 并行方面在本質(zhì)上是不確定的:歸因于競態(tài)條件、操作系統(tǒng)調(diào)度任務(wù)或者可變的網(wǎng)絡(luò)延遲, 不能預(yù)測的消息及線程執(zhí)行順序,也不能簡單地通過將輸入消息的副本傳遞給一復制的系 統(tǒng)中來對其進行并行處理。不確定的系統(tǒng)具有不同的輸出。因此,抱有一旦另一計算機故 障具有一替換的目的,在兩個不同的計算機上并行運行兩個進程,不確定的系統(tǒng)呈現(xiàn)出嚴 峻的挑戰(zhàn)。
[0005] 其次,可靠的非易失性數(shù)據(jù)存儲是指持續(xù)地存儲所處理的數(shù)據(jù)的能力,即使大量 的系統(tǒng)軟件或硬件組件遇到意外的故障。當訪問或修改共享數(shù)據(jù)時,其通??蒞通過使用 原子性的(Atomic)、一致性的(Consistent)、隔離性的(Isolated)和持久性的值urable) ("ACID")事務(wù)來實現(xiàn)。一旦工作單元完成,ACID事務(wù)可W確保數(shù)據(jù)的完整性和持續(xù)性。 每個提交的ACID事務(wù)被寫入非易失性計算機內(nèi)存(硬盤),運幫助確保數(shù)據(jù)的持久性,但其 在性能方面有很大的損失,且通常拖慢整個系統(tǒng)。
[0006] 第S,高度可用的系統(tǒng)試圖確保一給定的計算機系統(tǒng)的可用性的百分比盡可能接 近該時間的100%。運種可用性可W通過冗余的軟件和/或硬件實施,其接管了組件故障檢 測的功能。為了成功,故障切換不僅復制數(shù)據(jù),也復制進程狀態(tài)。如本領(lǐng)域技術(shù)人員將領(lǐng)會 的,在不確定的系統(tǒng)中(例如系統(tǒng)內(nèi)相同事件集合的計算處理可能具有一個W上的結(jié)果, 其取決于其中運些事件的處理順序),狀態(tài)復制將尤為具有挑戰(zhàn)性。
[0007] 高度可用的軟件應(yīng)用程序通常部署在冗余環(huán)境中,W減少和/或消除通常與底層 硬件關(guān)聯(lián)的單點故障。兩種常見的方法通常被認為是一種高度可用性的形式,被稱為熱故 障切換和溫和故障切換。熱故障切換設(shè)及是指在多個系統(tǒng)中同時處理相同的輸入,本質(zhì)上 在運些系統(tǒng)中的其中一個發(fā)生故障的情況下提供完全冗余。溫和故障切換設(shè)及是指復制應(yīng) 用程序(例如數(shù)據(jù))的狀態(tài)于備用系統(tǒng)中,而不處理在備用系統(tǒng)中的數(shù)據(jù),但具有能夠加載 數(shù)據(jù)處理的引用程序的能力及在主系統(tǒng)故障時支持的能力。冷故障切換并不認為是許多高 度可用性的形式,其為另一種故障切換類型,是指簡單地提升備用系統(tǒng)及準備該備用系統(tǒng) W承擔自主系統(tǒng)的處理責任。
[0008] 在熱故障切換配置中,兩個應(yīng)用程序的實例同時運行在兩個不同的硬件設(shè)備上, 處理相同的輸入副本。如果其中一個設(shè)備遇到一個關(guān)鍵的故障,一補充同步系統(tǒng)可W確保 另一個繼續(xù)支持工作負載。在溫和故障切換配置中,一個系統(tǒng)設(shè)計為主系統(tǒng),其運行應(yīng)用程 序;一旦故障,第二個系統(tǒng),處于備用狀態(tài)等待的指定的備份系統(tǒng),將"被喚醒"、接管、及重 新恢復該功能。
[0009] 現(xiàn)有技術(shù)的熱故障切換辦法具有至少兩個缺點。第一,補充軟件必須運行,W保持 兩個系統(tǒng)同步。在運種不確定系統(tǒng)的情況下,運種同步運行在性能及復雜性方面可能會導 致無法接受的(或其他不良的)下降,運里事件的到達順序必須保證是完全相同的。另外, 現(xiàn)有技術(shù)的用于運些應(yīng)用的并行系統(tǒng)通常允許多線程同步執(zhí)行,因此它們有固有的不確定 性。不確定性還為系統(tǒng)的服務(wù)器及客戶在地理上分散,運里可變網(wǎng)絡(luò)延遲了提供消息至一 不可預(yù)知序列中的服務(wù)器。
[0010] 溫和故障切換可W用于克服與熱故障切換相關(guān)聯(lián)的若干問題。通過復制系統(tǒng)數(shù)據(jù) 至冗余的備用系統(tǒng)并且隨后恢復應(yīng)用功能至輔助系統(tǒng),溫和故障切換可W為另一種方式W 實施不確定系統(tǒng)的故障切換。運種途徑具有其缺點,在時間上需要恢復數(shù)據(jù)至一致狀態(tài),然 后將該應(yīng)用恢復至功能狀態(tài),最后,返回該應(yīng)用至進程中中斷的點。運個過程正?;ㄙM數(shù)個 小時,需要人工干預(yù),且一般不能恢復正在進行的事務(wù)。
[0011] 一些專利嘗試解決至少一些前述的問題。專利號為5305200的美國專利提出了一 種用于在談判達成的交易場景中買方/賣方和經(jīng)銷商(報價商)之間通信的不可抵賴機 審IJ。提供冗余來確保不可抵賴機制在故障事件中起作用。其并未解決不確定性環(huán)境中的在 線事務(wù)處理程序的故障切換。簡單地說,專利號為5305200的美國專利旨在提供一種明確 的答案給該問題:在遇到一次網(wǎng)絡(luò)故障后,"指令發(fā)送了嗎,或者沒有發(fā)送?"。
[0012] 專利號為5381545的美國專利提出了一種用于備份存儲的數(shù)據(jù)(在數(shù)據(jù)庫中)的 技術(shù),而仍對數(shù)據(jù)進行更新。專利號為5987432的美國專利提出了為了匯編地理分布在全 球范圍的金融市場數(shù)據(jù)的容錯市場數(shù)據(jù)股票設(shè)備系統(tǒng)。運是一個確定的環(huán)境,且該解決方 案集中于給消費者提供非中斷的單向數(shù)據(jù)流。專利號為6154847的美國專利提供了一種改 進的方法,該方法通過傳統(tǒng)的非易失存儲器中的事務(wù)日志結(jié)合在易失性存儲器中的事務(wù)列 表來重新運行事務(wù)。專利號為6199055的美國專利提出了一種在一系統(tǒng)及一便攜式處理器 之間穿過無擔保的通信鏈路進行分布式事務(wù)的方法。專利號為6199055的美國專利處理了 認證,確保用遠端設(shè)備完成事務(wù),且在遇到故障時復位遠端設(shè)備。一般地,前述事項并未解 決在不確定性環(huán)境中的在線事務(wù)處理應(yīng)用的故障切換。
[0013] 專利號為6202149的美國專利提出了一種用于自動重新分配任務(wù)來減少計算機 運行中斷的影響的方法及設(shè)備。該設(shè)備至少包括一個冗余組,由一個或多個計算機系統(tǒng)組 成,其反過來為自身包含一個或多個計算分區(qū)。該分區(qū)包括數(shù)據(jù)庫機制的副本,其在每個計 算系統(tǒng)分區(qū)復制。該冗余組監(jiān)控計算系統(tǒng)的狀態(tài)及計算系統(tǒng)分區(qū),并分配任務(wù)至基于計算 系統(tǒng)的監(jiān)測狀態(tài)的計算系統(tǒng)。專利號為6202149的美國專利的一個問題為,其并未教導在 備用系統(tǒng)承擔處理事務(wù)責任時如何恢復工作流,而是指示其用于整個數(shù)據(jù)庫的復制,運可 能使系統(tǒng)低效和/或減慢。進一步地,運種復制可能導致在運行中重要的事務(wù)信息丟失,特 別是在主系統(tǒng)的故障期間或網(wǎng)絡(luò)連接主系統(tǒng)及備用系統(tǒng)期間,因此導致了在主系統(tǒng)和備用 系統(tǒng)間的不一致狀態(tài)。一般地,專利號為6202149的美國專利在期望處理在線事務(wù)及類似 問題中缺乏必要特征,特別缺乏不確定系統(tǒng)的故障轉(zhuǎn)換時需要的特征。
[0014] 專利號為6308287的美國專利提出了一種可靠地檢測一組事務(wù)的故障、退出故 障、存儲一故障顯示器的方法,W便在系統(tǒng)故障后故障是可恢復的,然后使該故障顯示器可 用于進一步的事務(wù)。其并未解決在不確定環(huán)境中的事務(wù)處理應(yīng)用的故障切換。
[0015] 專利號為6574750的美國專利提出了一種分布式的、復制的對象的系統(tǒng),其中對 象是不確定的。其提出了一種在復制對象的故障事件中保持一致性及限制恢復的方法。一 種方法描述為一個對象接收進來的客戶端請求,并將該請求的ID與預(yù)先由該對象的副本 處理過的全部請求的記錄進行比較。如果找到一個匹配,則將相關(guān)聯(lián)的應(yīng)答返回至客戶 端。然而,運個方法在封閉狀態(tài)下并不足W解決現(xiàn)有技術(shù)中的各種問題。另一問題是專利 號為6575750的美國專利的方法采取了同步調(diào)用鏈,其不適合于高效能的在線事務(wù)處理 ("化TP")應(yīng)用程序。隨著同步調(diào)度,客戶端在繼續(xù)前等待應(yīng)答或暫停。被調(diào)用的對象反 過來成為另一對象的客戶端,傳播同步調(diào)用鏈。該結(jié)果可能為大量的同步操作,阻塞客戶端 處理,且需要長時間暫停W在初始客戶端進行配置。
【發(fā)明內(nèi)容】
[0016] 依據(jù)本說明書的一個方面,運里提供了一種用于故障切換的系統(tǒng)。該系統(tǒng)包括配 置為與客戶端設(shè)備通信的主服務(wù)器。此外,該系統(tǒng)包括一與所述主服務(wù)器通信的備用服務(wù) 器。所述備用服務(wù)器配置為在故障切換期間與所述客戶端設(shè)備通信。所述主服務(wù)器包括配 置為接收來自所述客戶端設(shè)備的輸入消息的主會話管理器。所述主服務(wù)器進一步包括配置 為執(zhí)行外部調(diào)用W獲取一序列號的主調(diào)度器。所述主調(diào)度器進一步配置為調(diào)度所述輸入消 息、外部調(diào)用的結(jié)果及所述序列號至關(guān)聯(lián)的主交易引擎組件(對于其他指令處理應(yīng)用程序 一般地也被稱為主引擎組件)。所述主調(diào)度器進一步配置為調(diào)度所述輸入消息、外部調(diào)用的 結(jié)果及所述序列號至所述備用服務(wù)器。所述主服務(wù)器也包括一具有復數(shù)個主交易引擎組件 的主交易引擎(對于其他應(yīng)用也被稱為一指令處理引擎)。所述主交易引擎配置為處理所 述輸入消息W生成一主輸出消息。每個主交易引擎組件配置為處理一個輸入消息類型。進 一步地,所述主服務(wù)器包括一配置為接收所述主輸出消息的主驗證引擎。所述主驗證引擎 進一步配置為發(fā)送一驗證消息至所述備用服務(wù)器并發(fā)送所述主輸出消息至為了發(fā)送至所 述客戶端設(shè)備的所述會話管理器。所述備用服務(wù)器包括配置為在故障切換事件中承擔主要 作用的備份會話管理器。所述備用服務(wù)器進一步包括接收來自所述主調(diào)度器的所述輸入消 息、所述外部調(diào)用的結(jié)果及所述序列號的備份調(diào)度器。所述備份調(diào)度器進一步配置為調(diào)度 所述輸入消息、所述外部調(diào)用的結(jié)果及所述序列號至關(guān)聯(lián)的備用交易引擎組件(對于其他 指令處理應(yīng)用程序一般地也被稱為備份引擎組件)。所述備份調(diào)度器也包括一具有復數(shù)個 備份交易引擎組件的備份交易引擎。每個備份交易引擎組件配置為處理一備份消息類型W 生成一備份輸出消息。進一步地,所述備用服務(wù)器包括一接收來自所述備份交易引擎的所 述備份輸出消息W及來自所述主驗證引擎的驗證消息的備份驗證引擎。為了驗證所述主輸 出消息,所述備份驗證引擎進一步配置為將所述驗證消息與所述備份輸出消息進行比較。
[0017] 所述備份調(diào)度器可W進一步配置為生成在接收到來自所述主調(diào)度器的所述輸入 消息、所述外部調(diào)用的結(jié)果及所述序列號后生成確認消息。
[0018] 所述備份調(diào)度器可W進一步配置為發(fā)送所述確認消息至所述主驗證引擎。
[0019] 所述主驗證引擎可W進一步配置為在為了發(fā)送至所述客戶端設(shè)備而將所述主輸 出消息發(fā)送至所述會話管理器之前,等待所述確認消息。
[0020] 所述驗證消息可W包括所述主輸出消息的一副本。
[0021] 該系統(tǒng)可W進一步包括用于將所述主服務(wù)器連接至所述備用服務(wù)器的低延時鏈 路。
[0022] 所述低延時鏈路可W包括一PCIe鏈路。
[0023] 所述輸入消息可W與一股票交易中的買方指令或賣方指令中的一個相關(guān)聯(lián)。
[0024] 所述輸入消息類型可W與一組股票相關(guān)聯(lián)。
[00巧]所述外部調(diào)用可W包括一用于時間戳的請求。
[00%] 所述外部調(diào)用可W包括一用于對于價格的請求。
[0027] 依據(jù)本說明書的另一個方面,提供了此處描述的所述系統(tǒng)的服務(wù)器。
[0028] 依據(jù)本說明書的另一個方面,提供了此處描述的由所述系統(tǒng)執(zhí)行的故障切換的方 法。
[0029] 依據(jù)本說明書的另一個方面,提供了一種存儲有程序設(shè)計指令集合的非暫態(tài)計算 機可讀介質(zhì),該程序設(shè)計指令集合配置為指揮一處理器實現(xiàn)此處描述的方法。
[0030] 依據(jù)本說明書的另一個方面,提供了一種用于故障切換的系統(tǒng)。該系統(tǒng)包括配置 為與客戶端設(shè)備通信的主服務(wù)器。另外,該系統(tǒng)包括一與所述主服務(wù)器通信的備用服務(wù)器。 所述備用服務(wù)器配置為在故障切換期間與所述客戶端設(shè)備通信。所述主服務(wù)器包括一配置 為接收來自所述客戶端設(shè)備的輸入消息的主會話管理器。所述主服務(wù)器進一步包括配置為 獲取序列號及時間戳的主調(diào)度器。所述主調(diào)度器進一步配置為調(diào)度所述輸入消息、所述序 列號及所述時間戳至關(guān)聯(lián)的主引擎組件。所述主調(diào)度器進一步配置為復制所述輸入消息、 所述序列號及所述時間戳至所述備用服務(wù)器。所述主服務(wù)器也包括具有復數(shù)個主引擎組件 的主指令處理引擎。所述主指令處理引擎配置為處理所述輸入消息W生成一主輸出消息。 每個主引擎組件配置為處理一個輸入消息類型。進一步地,所述主服務(wù)器包括配置為接收 所述主輸出消息的主驗證引擎。所述主驗證引擎進一步配置為發(fā)送一驗證消息至所述備用 服務(wù)器并發(fā)送所述主輸出消息至為了發(fā)送至所述客戶端設(shè)備的所述會話管理器。所述備用 服務(wù)器包括配置為在故障切換事件中承擔主要作用的備份會話管理器。所述備用服務(wù)器進 一步包括配置為接收來自所述主調(diào)度器的所述輸入消息、所述外部調(diào)用的結(jié)果及所述序列 號的備份調(diào)度器。所述備份調(diào)度器進一步配置為調(diào)度所述輸入消息、所述外部調(diào)用的結(jié)果 及所述序列號至關(guān)聯(lián)的備用引擎組件。所述備用服務(wù)器也包括具有復數(shù)個備份引擎組件的 備份指令處理引擎。每個備份引擎組件配置為處理一種備份消息類型W生成一備份輸出消 息。進一步地,所述備份調(diào)度器包括配置為接收來自所述備份指令處理引擎的所述備份輸 出消息W及來自所述主驗證引擎的所述驗證消息的備份驗證引擎。為了驗證所述主輸出消 息,所述備份驗證引擎進一步配置為將所述驗證消息與所述備份輸出消息進行比較。
[0031] 依據(jù)本說明書的另一個方面,提供了一種用于與一客戶端設(shè)備通信的主服務(wù)器。 所述主服務(wù)器包括配置為接收一來自所述客戶端設(shè)備的輸入消息的主會話管理器。所述主 服務(wù)器也包括配置為獲取一序列號及一時間戳的主調(diào)度器,所述主調(diào)度器進一步配置為調(diào) 度所述輸入消息及所述序列號至一關(guān)聯(lián)的主引擎組件,所述主調(diào)度器進一步配置為復制所 述輸入消息、所述序列號及所述時間戳至一備用服務(wù)器。另外,所述主服務(wù)器包括具有復數(shù) 個主引擎組件的主指令處理引擎,該復數(shù)個主引擎組件包括相關(guān)聯(lián)的主引擎組件,所述主 指令處理引擎配置為處理所述輸入消息W生成一主輸出消息,每個主引擎組件配置為處理 一種輸入消息類型。進一步地,所述主服務(wù)器包括配置為接收所述主輸出消息的主驗證引 擎,所述主驗證引擎進一步配置為發(fā)送一驗證消息至所述備用服務(wù)器并發(fā)送所述主輸出消 息至為了發(fā)送至所述客戶端設(shè)備的所述會話管理器。
[0032] 依據(jù)本說明書的另一個方面,提供了一種在主服務(wù)器處理指令的方法。所述方法 包含了接收一來自客戶端設(shè)備的主會話管理器的輸入消息。所述方法也包含獲取來自一主 調(diào)度器的一序列號及一時間戳。進一步地,所述方法包含從所述主調(diào)度器調(diào)度所述輸入消 息、所述序列號及所述時間戳至一關(guān)聯(lián)的主引擎組件。另外,所述方法包含從所述主調(diào)度器 復制所述輸入消息、所述序列號及所述時間戳至一備用服務(wù)器。所述方法進一步包含在一 主引擎組件上處理所述輸入消息W生成一主輸出消息,其中所述主引擎組件配置為處理一 種輸入消息類型。而且,所述方法包含在一主驗證引擎上接收所述主輸出消息。所述方法 又包含發(fā)送一來自主驗證引擎的驗證消息至所述備用服務(wù)器。所述方法包含發(fā)送所述主輸 出消息至用于發(fā)送至客戶端設(shè)備的所述會話管理器。
[0033] 依據(jù)本說明書的另一個方面,提供了一種用代碼編碼的非暫態(tài)計算機可讀介質(zhì)。 所述代碼指揮一處理器W接收來自客戶端設(shè)備的輸入消息。所述代碼進一步指揮所述處理 器W獲取序列號及時間戳。另外,所述代碼指揮所述處理器W調(diào)度所述輸入消息、所述序列 號及所述時間戳至關(guān)聯(lián)的主引擎組件。進一步地,所述代碼指揮所述處理器W從所述主調(diào) 度器復制所述輸入消息、所述序列號及所述時間戳至一備用服務(wù)器。所述代碼也指揮所述 處理器W在一主引擎組件上處理所述輸入消息W生成一主輸出消息,其中所述主引擎組件 配置為處理一種輸入消息類型。所述代碼進一步指揮所述處理器W在一主驗證引擎上接收 所述主輸出消息W及發(fā)送來自所述主驗證引