例中,備用服務(wù)器64c包括與主服務(wù)器62c類似的硬件及軟件。然而,在其他實施例中,備 用服務(wù)器64c可W為能夠?qū)嵤╊愃撇僮鞯牟煌愋偷挠嬎阍O(shè)備。 陽126] 現(xiàn)參考圖13,描述了一處理主服務(wù)器62c處指令的方法的另一實施例的流程圖一 般W400表明。為了輔助解釋該方法,應(yīng)當(dāng)假定方法400是使用如圖12所示的系統(tǒng)50c實 施的。進(jìn)一步地,方法400的后續(xù)討論將導(dǎo)致對系統(tǒng)50c及其變化組件的進(jìn)一步理解。為 了方便,方法400的各種處理塊在圖13中表明為在系統(tǒng)50c的某些組件內(nèi)發(fā)生的。例如顯 示不能被解釋為限制性的功能。然而應(yīng)當(dāng)理解,系統(tǒng)50c和/或方法400可W改變,且不必 如此處討論的彼此關(guān)聯(lián)的方式工作,而方法400中的塊不必需在所示的指令中實現(xiàn)。例如, 各種塊可W并行執(zhí)行而不是按順序執(zhí)行。運些改變均包含在本發(fā)明的范圍之內(nèi)。運些改變 也應(yīng)用于此處討論的其他方法或系統(tǒng)示意圖中。
[0127] 塊405包含從會話管理器76c處接收來自客戶機(jī)54c的輸入消息。該輸入消息 的類型并不特別限定,且一般與在主服務(wù)器62c上執(zhí)行服務(wù)的輸入消息的預(yù)期類型相輔 相成。在本實施例中,輸入消息可W為用于爭奪一只股票的"buyorde;r"、"sellorder" 或"cancelorder"。另外,輸入消息也可W為另一種消息類型,例如價格反饋消息(price feedmessage)。在本實施例中,為了描述方法400的目的,輸入消息可W假定為與上面表 1中所述的輸入消息M(Oi)相同。
[0128] 塊410包含在會話管理器76c處分析輸入消息M(Oi)。分析消息的方式并不特別 限定。在本實施例中,輸入消息M(Oi) -般在會話管理器76c處作為單字符串接收。于是, 會話管理器76c可配置為實施關(guān)于輸入消息M(Oi)的一系列操作W分開及識別表1中所示 的字段。 陽129] 塊425包含在會話管理器76c處決定內(nèi)存存儲77c中的隊列進(jìn)入該輸入消息M(Oi) 被寫入的隊列。決定作出的方式并不特別限定。例如,在本實施例中,會話管理器76c包括 如表1中所示的輸入消息M(Oi)的字段號中識別的每個證券。于是,會話管理器76c可W基 于與該隊列相對應(yīng)證券名稱的列表或查找表作出決定。在本實施例中,假定輸入消息M(Oi) 與隊列77C-1相對應(yīng)。
[0130] 下一步,塊420包括寫入輸入消息M(Oi)至內(nèi)存存儲77c。接著該示例,會話管理 器76c將輸入消息M(Oi)寫入隊列77C-1。 陽131]塊425包含從內(nèi)存存儲77c的隊列77C-1發(fā)送輸入消息M(Oi)至指令處理引擎 72c。為了本示例的目的,應(yīng)當(dāng)假定輸入消息M(Oi)被發(fā)送至引擎組件88C-1。在本實施例 中,如果引擎組件88C-1成功接收輸入消息M(Oi),則引擎組件88C-1將一確認(rèn)消息提供給 會話管理器76c。
[0132] 塊430包含決定確認(rèn)消息是否從已經(jīng)指令處理引擎72c接收。例如,指令處理引 擎72c可配置為等待預(yù)定數(shù)量的時間W確認(rèn)接收。如果在預(yù)定時間內(nèi)未接收到確認(rèn),方法 400轉(zhuǎn)至塊435。塊435包括異常處理程序。應(yīng)當(dāng)領(lǐng)會塊435實施的方式不特別限定。例 如,在一些實施例中,塊435可W設(shè)及重復(fù)的塊425。在其他實施例中,塊435可W包括結(jié)束 方法400。如果接收到確認(rèn),會話管理器76c已經(jīng)完成處理輸入消息M(Oi),且將其從隊列 77C-1中移除W提供用于額外輸入消息的空間。
[0133] 在提供確認(rèn)消息至?xí)捁芾砥?6c后,指令處理引擎72c的組件將繼續(xù)進(jìn)行處理 輸入消息M(〇1)。接著本實施例,一旦接收到輸入消息M(〇1),引擎組件88C-1獲取來自時鐘 440處的時鐘300的時間戳。弓I擎組件88C-1獲取來自時鐘300的時間戳的方式不特別限 定。在本實施例中,引擎組件88C-1發(fā)送一調(diào)用至?xí)r鐘300c。該時鐘300c隨后可WW時間 戳應(yīng)答該調(diào)用。在其他實施例中,引擎組件88C-1可W持續(xù)地接收來自該引擎組件88C-1 取走大多數(shù)最近接收的時間戳值的時間戳反饋。
[0134] 在本實施例中,塊445包括獲取來自庫308C-1的序列號。應(yīng)當(dāng)領(lǐng)會在系統(tǒng)50c 的其他示例中,如果該些引擎組件用于替換引擎組件88C-1,塊445可W設(shè)及分別獲取來自 對應(yīng)引擎組件88C-2或88C-3的庫308C-2或308C-3的序列號。在其他實施例中,應(yīng)當(dāng)理 解,在本說明的受益下,一組引擎組件可W共享一個或多個庫。引腳組件88C-1獲取來自庫 308C-1的序列號的方式不特別限定。在本實施例中,引擎組件88C-1發(fā)送調(diào)用至庫308C-1。 庫308C-1隨后可WW序列號應(yīng)答該調(diào)用。 陽13引塊450包含存儲該輸入消息M(Oi)及確定性信息,例如在緩沖區(qū)304C-1中的時間 戳及序列號,用于隨后的復(fù)制。應(yīng)當(dāng)領(lǐng)會在系統(tǒng)50c的其他示例中,如果該些引擎組件用 于替換引擎組件88C-1,塊450可W設(shè)及在分別對應(yīng)于引擎組件88C-2或88C-3的緩沖區(qū) 304C-2或304C-3中存儲輸入消息。在其他實施例中,應(yīng)當(dāng)理解,在本說明的受益下,一組引 擎組件可W共享一個或多個緩沖區(qū)。
[0136] 塊455包含復(fù)制輸入消息M(Oi)及確定性信息,例如存儲在緩沖區(qū)304C-1中的時 間戳及序列號,用于隨后復(fù)制到備用服務(wù)器64c。輸入消息M(Oi)及確定性信息的復(fù)制方式 不特別限定,且可設(shè)計在服務(wù)器之間傳輸數(shù)據(jù)的各種方式。在本實施例中,輸入消息M(Oi) 及確定性信息經(jīng)由直接連接60c復(fù)制。
[0137] 塊460包含等待來自已經(jīng)接受了復(fù)制的輸入消息M(Oi)及確定性信息的備用服務(wù) 器64c的確認(rèn)消息。在本實施例中,在等待期間,指令處理引擎72c為空閑狀態(tài),運里沒有 進(jìn)一步的動作發(fā)生。應(yīng)當(dāng)領(lǐng)會在一些實施例中,方法400可W改進(jìn)為包括超時特性,例如在 預(yù)定的時間長度之前如沒有接收到確認(rèn),則主服務(wù)器62c可W識別系統(tǒng)50c中的一次故障。
[0138] 在從備用服務(wù)器64c接收確認(rèn)消息后,方法400繼續(xù)進(jìn)入塊470W處理輸入消息 M(Oi)及確定性信息。繼續(xù)本示例,塊470由引擎組件88C-1實施W處理用于ABC公司的 1000只股票的指令。 陽139] 參考圖14,用于故障切換系統(tǒng)的另一實施例的系統(tǒng)方框圖一般WSOd表明。系統(tǒng) 50d的類似組件參考其在系統(tǒng)50中的對應(yīng)部分,除了添加的后綴"d"。系統(tǒng)50d包括客戶 機(jī)5如、主服務(wù)器62d及備用服務(wù)器64d。在本實施例中,一直接連接60d連接主服務(wù)器62d 和備用服務(wù)器64d。直接連接60d不特別限定,且可W包括連接的各種類型,包括上面討論 的與其他實施例有關(guān)的連接。
[0140] 在本實施例中,主服務(wù)器62d可W為能夠接收及處理來自客戶機(jī)54d的輸入消息 的任何類型的計算設(shè)備,例如上面討論的與其他實施例有關(guān)的計算設(shè)備。類似于主服務(wù)器 62,本實施例的主服務(wù)器62d作為在線交易系統(tǒng)操作,且因此能夠處理那些包括與可在線 交易證券有關(guān)的指令的輸入消息。例如,該指令可能包括買入或賣出一只股票的指令,或者 取消一先前設(shè)置的指令。尤其是在本實施例中,主服務(wù)器62d被配置為執(zhí)行從客戶機(jī)54d 接收的指令。 陽141] 在本實施例中,代替了具有由主服務(wù)器62d的操作系統(tǒng)分配的各種處理器內(nèi)核實 施的進(jìn)程,主服務(wù)器62d包括專用的處理器內(nèi)核610(1、620(1、630(1、640(1、650(1、660(1及670(1。 每個專用的處理器內(nèi)核610山620(1、63(^、640(1、65(^、660(1及670(1配置為實施一單獨的進(jìn) 程或進(jìn)程的類型。進(jìn)一步地,每個專用的處理器內(nèi)核61(M、620d、63(M、640d、65(M、660d及 670d分別包括為排隊待處理的消息的一隊列612d、622d、632d、642d、652d、662d及672d。 陽142] 處理器內(nèi)核610d-般被配置為運行一用于管理主服務(wù)器62d的各方面的操作系 統(tǒng)。主服務(wù)器62d的操作系統(tǒng)的管理的方式不特別限定,且可W設(shè)及各種方法,例如在其余 的主服務(wù)器62d的尚未專用于指定進(jìn)程的處理器內(nèi)核中負(fù)載均衡其他進(jìn)程。 陽143] 處理器內(nèi)核620d-般被配置為作為一會話終止點操作,W經(jīng)由一網(wǎng)絡(luò)接收來自 客戶機(jī)54c的輸入消息并經(jīng)由該網(wǎng)絡(luò)發(fā)送一輸出消息至客戶機(jī)54c。應(yīng)當(dāng)理解處理器內(nèi)核 620d接收輸入消息的方式不特別限定,針對在線交易系統(tǒng)的各種各樣的應(yīng)用均可W使用。
[0144] 處理器內(nèi)核630d-般被配置為作為一調(diào)度器操作。在本實施例中,處理器內(nèi)核 630d與各種資源通信,例如與一時鐘300d通信W獲取確定性信息,如時間戳。另外,處理 器內(nèi)核630d進(jìn)一步被配置為分配一序列號,W與輸入消息相關(guān)聯(lián)。進(jìn)一步地,處理器內(nèi)核 630d被配置為指派該輸入消息及確定性信息給另一處理器內(nèi)核640d、650d或660山W進(jìn)一 步處理。
[0145] 處理器內(nèi)核630d又包括一用于存儲附有確定性信息的輸入消息的緩沖區(qū)634d。 處理器內(nèi)核630d進(jìn)一步被配置為復(fù)制該輸入消息及確定性信息至備用服務(wù)器64d。如上面 所述,確定性信息不特別限定且可W包括來自各種資源的信息,例如時間戳,也包括由處理 器內(nèi)核630d分配的序列號。 陽146] 在本實施例中,處理器內(nèi)核640d、650d或660d-般每個被配置為作為引擎內(nèi)核操 作。應(yīng)當(dāng)領(lǐng)會在本實施例中,引擎內(nèi)核作為交易引擎內(nèi)核(TEC)操作;然而,應(yīng)當(dāng)領(lǐng)會引擎 內(nèi)核可W改進(jìn)W能夠處理其他指令。特別地,處理器內(nèi)核640d、650d或660d被配置為處理 附有確定性信息的輸入信息。每個處理器內(nèi)核640d、650d或660d分別包括一隊列642d、 652d及662d。隊列642d、652d及662d中每個被配置為接收來自處理器內(nèi)核630d的輸入 消息及確定性信息W進(jìn)一步處理。在本實施例中,每個處理器內(nèi)核640d、650d或660d分別 為隊列642d、652d及662d恢復(fù)輸入消息及確定性信息。應(yīng)當(dāng)領(lǐng)會,在本說明的受益下,每 個處理器內(nèi)核640d、650d或660d被配置為接收不同類型的輸入消息。與指定的處理器內(nèi) 核640d、650d或660d相關(guān)聯(lián)的輸入消息的類型不特別限定,且可W使用各種方法確定,例 如分析輸入消息的內(nèi)容。例如,處理器內(nèi)核640d可W被配置為處理與第一組證券有關(guān)的輸 入消息,如關(guān)于制定行業(yè)類別的證券或按字母分類的訂單符號預(yù)定范圍內(nèi)的證券,鑒于此 處理器內(nèi)核650d可W被配置為處理與第二組證券相關(guān)的輸入消息。那些本領(lǐng)域技術(shù)人員 現(xiàn)在將可W領(lǐng)會各種輸入消息可W使用相應(yīng)的處理器內(nèi)核640d、650d或660d并行地處理 W提供多線程方法,其中數(shù)個并行處理可W同時發(fā)生。每個處理器內(nèi)核640d、650d或660d 的有效性可W依據(jù)一些情況變化,進(jìn)程可能引起不確定性的結(jié)果,例如在處理器內(nèi)核620 處接收的第一輸入消息可能不必須與第一輸出消息相對應(yīng),除非確定性信息被考慮在內(nèi)。
[0147] 應(yīng)當(dāng)再次強(qiáng)調(diào),上面描述的每個處理器內(nèi)核640d、650d或660d僅僅是非限制性 的代表。例如,盡管在圖14中所示的本實施例包括作為引擎內(nèi)核的S個處理器內(nèi)核640d、 650d或660d,但應(yīng)當(dāng)理解主服務(wù)器62d可W被改進(jìn)為包括更多或更少的引擎內(nèi)核。
[0148] 引擎內(nèi)核670d-般被配置為接收來自處理器內(nèi)核640d、650d或660d的輸出消 息,并將其與接收自備用服務(wù)器64c的輸出消息進(jìn)行比較。該輸出消息不特別限定,且一般 包括處理來自處理器內(nèi)核640d、650d或660d的輸入消息的結(jié)果。例如,當(dāng)輸入消息為買入 一只股票的指令時,來自處理器內(nèi)核640d、650d或660d的輸出消息可W表明該股票是否已 經(jīng)被買入或用于購買該股票的指令是否能夠根據(jù)輸入消息中識別的參數(shù)填入。類似地,當(dāng) 輸入消息為賣出一只股票的指令時,來自自處理器內(nèi)核640d、650d或660d的輸出消息可W 表明該股票是否已經(jīng)被賣出或用于賣出該股票的指令是否能夠根據(jù)輸入消息中識別的參 數(shù)填入。應(yīng)當(dāng)領(lǐng)會處理器內(nèi)核670d執(zhí)行了一個驗證角色W確保在備用服務(wù)器64d處生成 的輸出與在主服務(wù)器62d處生成的輸出一致。
[0149] 時鐘300d-般被配置為作為一計數(shù)器操作,且一般被配置為當(dāng)功能調(diào)用作出時 為了提供時間戳而測量時間。時鐘300d測量時間的方式不特別限定,且可包括各種各樣的 測量時間的機(jī)制。進(jìn)一步地,提供時間戳的方式不特別限定。在本實施例中,時鐘300d進(jìn) 一步被配置為接收來自處理器內(nèi)核630d請求時間戳的調(diào)用消息。作為應(yīng)答,該時鐘300d 發(fā)送一時間戳消息至該處理器內(nèi)核630d。在其他實施例中,時鐘300d可被配置為連續(xù)地發(fā) 送時間戳消息至處理器內(nèi)核630d。
[0150] 類似于主服務(wù)器62d,備用服務(wù)器64d可W為能夠接收及處理來自客戶機(jī)54d的輸 入消息及確定性信息的任何類型的計算設(shè)備。應(yīng)當(dāng)理解備用服務(wù)器64d不特別限定于任何 機(jī)器,且一些不同類型的計算設(shè)備是可預(yù)期的,例如那些為主服務(wù)器62d所預(yù)期的。在故障 切換事件期間W及備用角色的其他時刻,備用服務(wù)器64d配置為承擔(dān)由為主服務(wù)器62d所 承擔(dān)的主要角色。盡管圖14的結(jié)構(gòu)框圖顯示了主服務(wù)器62d和備用服務(wù)器64d具有兩種 不同的類型,應(yīng)當(dāng)理解該結(jié)構(gòu)框圖是想要顯示主服務(wù)器62d的內(nèi)部組件。于是,在本實施例 中,備用服務(wù)器64d包括與主服務(wù)器62d類似的硬件及軟件。然而,在其他實施例中,備用 服務(wù)器64d可W為能夠?qū)嵤╊愃撇僮鞯牟煌愋偷挠嬎阍O(shè)備。 陽151] 現(xiàn)參考圖15,描述了一處理主服務(wù)器62d處指令的方法的另一實施例的流程圖一 般W500表明。為了輔助解釋該方法,應(yīng)當(dāng)假定方法500是使用如圖14所示的系統(tǒng)50d實 施的。進(jìn)一步地,方法500的后續(xù)討論將導(dǎo)致對系統(tǒng)50d及其變化組件的進(jìn)一步理解。為 了方便,方法500的各種處理塊在圖15中表明為在系統(tǒng)50d的某些組件內(nèi)發(fā)生的。例如顯 示不能被解釋為限制性的功能。然而應(yīng)當(dāng)理解,系統(tǒng)50d和/或方法500可W改變,且不必 如此處討論彼此相互關(guān)聯(lián)的方式工作,而方法500中的塊不必需在所示的指令中實現(xiàn)。例 如,各種塊可W并行執(zhí)行而不是按順序執(zhí)行。該些改變均包含在本發(fā)明的范圍之內(nèi)。該些 改變也應(yīng)用于此處討論的其他方法或系統(tǒng)示意圖中。 陽152] 塊505包含從處理器內(nèi)核620d處接收來自客戶機(jī)54d的輸入消息。該輸入消息 的類型并不特別限定且一般與在主服務(wù)器62d上執(zhí)行服務(wù)的輸入消息的預(yù)期類型相輔相 成。在本實施例中,輸入消息可W為用于一只股票的"buyorderVsellorder"或"cancel order"。另外,輸入消息也可W為另一種消息類型,例如價格反饋消息。在本實施例中,為 了描述方法500的目的,輸入消息可W假定為與上面表1中所述的輸入消息M(Oi)相同。 陽15引塊510包含在處理器內(nèi)核620d處分析輸入消息M化)。分析消息的方式并不特別 限定。在本實施例中,輸入消息M(Oi) -般在處理器內(nèi)核620d處作為單字符串被接收。于 是,處理器內(nèi)核620d可被配置為實施關(guān)于輸入消息M(Oi)的一系列操作W分開及識別表1 中所示的字段。在分析輸入消息M(Oi)后,處理器內(nèi)核620d寫入分析的輸入消息M(Oi)至 用于處理器內(nèi)核630d的隊列632d。 陽154] 塊515包含處理器內(nèi)核630dW獲取來自時鐘300d的時間戳。處理器內(nèi)核630d獲 取時間戳的方式不特別限定,在本實施例中,處理器內(nèi)核630d發(fā)送一調(diào)用至?xí)r鐘300d。時 鐘300d隨后可WW時間戳應(yīng)答該調(diào)用。在其他實施例中處理器內(nèi)核630d可W連續(xù)地接收 來自時鐘300d的時間戳的反饋。于是,處理器內(nèi)核630d可W使用最近接收的時間戳值。 [0155] 塊520包括處理器內(nèi)核分配序列號W與輸入消息M(Oi)關(guān)聯(lián)。序列號分配的方式 不特別限定。在本實施例中,處理器內(nèi)核630d實施一例行程序W提供基于輸入消息到達(dá)的 指令的序列號。在本實施例中,用于至少一部分確定性信息的時間戳及序列號與輸入消息 M(Oi)相關(guān)聯(lián)。 陽156] 塊525包括處理器內(nèi)核630d決定隊列642d、652d或662d進(jìn)入塊515及520中獲 取的輸入消息M(Oi)及確定性信息被寫入。決定作出的方式并不特別限定。例如,在本實 施例中,處理器內(nèi)核630d可使用如表1中所示的輸入消息M(Oi)的字段號2,W決定哪個處 理器內(nèi)核640d、650d或66