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

      監(jiān)督處理控制數(shù)據(jù)獲取系統(tǒng)中活動(dòng)冗余引擎的透明重定位的制作方法

      文檔序號(hào):6279114閱讀:231來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):監(jiān)督處理控制數(shù)據(jù)獲取系統(tǒng)中活動(dòng)冗余引擎的透明重定位的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明總的說(shuō)來(lái)涉及聯(lián)網(wǎng)的計(jì)算機(jī)化處理控制(process control)系統(tǒng)的領(lǐng)域。更具體地說(shuō),本發(fā)明涉及監(jiān)督處理控制和制造信息系統(tǒng)。這種系統(tǒng)在處理控制系統(tǒng)中通常在控制層以上執(zhí)行,以向較低級(jí)的控制元件提供指導(dǎo),作為示例,所述較低級(jí)的元件諸如可編程邏輯控制器。
      背景技術(shù)
      工業(yè)上越來(lái)越依賴(lài)高度自動(dòng)化的數(shù)據(jù)獲取和控制系統(tǒng),以確保工業(yè)處理高效、安全和可靠地運(yùn)行,同時(shí)降低工業(yè)處理的整體生產(chǎn)成本。數(shù)據(jù)獲取開(kāi)始于多個(gè)傳感器測(cè)量工業(yè)處理的各個(gè)方面并周期性地將它們的測(cè)量報(bào)告回?cái)?shù)據(jù)收集和控制系統(tǒng)時(shí)。這種測(cè)量有各種形式進(jìn)入。作為示例,由傳感器/記錄器產(chǎn)生的測(cè)量包括溫度、壓力、pH、海量/大量物料流、在航線(xiàn)等待的包裹的結(jié)算清單或工廠(chǎng)車(chē)間的照片。通常,復(fù)雜的處理管理和控制軟件檢查進(jìn)入數(shù)據(jù),產(chǎn)生狀態(tài)報(bào)告,并且在許多情況下,通過(guò)將命令發(fā)送到傳動(dòng)器/控制器來(lái)進(jìn)行響應(yīng),其中,所述傳動(dòng)器/控制器調(diào)整至少一部分工業(yè)處理的操作。由傳感器產(chǎn)生的數(shù)據(jù)還允許操作者執(zhí)行多個(gè)監(jiān)督任務(wù),包括響應(yīng)于變化的外部條件(包括原料的成本)加工處理(例如,制定新的設(shè)置值),檢測(cè)低效/非最佳操作條件和/或即將發(fā)生的設(shè)備故障,以及采取補(bǔ)救措施,所述補(bǔ)救措施諸如按照需要使設(shè)備進(jìn)入并離開(kāi)服務(wù)。
      典型的工業(yè)處理極端復(fù)雜,并接收相當(dāng)大量的信息,所述信息多于任何人可能以它的未處理形式進(jìn)行提要的信息。作為示例,慣例作法是使得成千上萬(wàn)的傳感器和控制元件(例如,閥動(dòng)器)監(jiān)視/控制工業(yè)車(chē)間內(nèi)的多階段處理的各個(gè)方面。這些傳感器具有變化的類(lèi)型并且對(duì)處理的變化的特征作出報(bào)告。它們的輸出在以下方面類(lèi)似地變化它們測(cè)量的涵義、為每個(gè)測(cè)量發(fā)送的數(shù)據(jù)量以及它們測(cè)量的頻率。關(guān)于后者,為了保證精度并實(shí)現(xiàn)快速響應(yīng),這些傳感器/控制元件中的某些每秒進(jìn)行一次或多次測(cè)量。當(dāng)成千上萬(wàn)的傳感器/控制元件相乘時(shí),將導(dǎo)致過(guò)多的數(shù)據(jù)流入復(fù)雜的數(shù)據(jù)管理和處理顯像技術(shù)所需的處理控制系統(tǒng)。
      當(dāng)今存在高度發(fā)展的人機(jī)界面/處理顯像系統(tǒng),它們被鏈接到諸如上述傳感器和控制器的數(shù)據(jù)源。所述系統(tǒng)獲取上述的處理數(shù)據(jù)并對(duì)其進(jìn)行提要(例如,過(guò)濾)。經(jīng)過(guò)提要的處理數(shù)據(jù)依次驅(qū)動(dòng)由人機(jī)界面呈現(xiàn)的圖形顯示。這種系統(tǒng)的示例是眾所周知的WonderwareIN-TOUCH人機(jī)界面(HMI)軟件系統(tǒng),其用于進(jìn)行顯像并控制各種工業(yè)處理。IN-TOUCH HMI處理顯像應(yīng)用包括一組特定處理的圖形示圖。每個(gè)示圖又包括一個(gè)或多個(gè)圖形元件。圖形元件的顯示狀態(tài)響應(yīng)于相關(guān)/鏈接的數(shù)據(jù)源而隨時(shí)間改變,從這個(gè)意義上說(shuō),這些圖形元件是“動(dòng)畫(huà)”的。例如,精煉處理的示圖潛在地包括槽(tank)圖形元件。所述槽圖形元件具有可視指示符,其顯示包含在槽內(nèi)的液體的水平,圖形元件的水平指示符響應(yīng)于由指示槽內(nèi)的液體水平的槽水平傳感器提供的數(shù)據(jù)流而上升或下降。動(dòng)畫(huà)圖形圖像由數(shù)據(jù)流內(nèi)的不斷改變的處理數(shù)據(jù)值來(lái)驅(qū)動(dòng),其中,槽水平指示符僅是一個(gè)示例,對(duì)觀察人員而言,這種動(dòng)畫(huà)圖形圖像比數(shù)字流更加容易理解。為此,諸如IN-TOUCH的處理顯像系統(tǒng)已變成監(jiān)督處理控制和制造信息系統(tǒng)的必要部件。
      訪(fǎng)問(wèn)處理控制系統(tǒng)的數(shù)據(jù)的丟失必然使得HMI系統(tǒng)(并由此使得管理人員)無(wú)法得知處理控制系統(tǒng)的當(dāng)前狀態(tài)。因此,保持由上述HMI系統(tǒng)對(duì)處理控制元件的可靠的不中斷訪(fǎng)問(wèn)即使對(duì)于監(jiān)督處理控制系統(tǒng)的整體生存性不是必要的,但也是非常重要的。結(jié)果,許多系統(tǒng)將冗余和自動(dòng)故障切換機(jī)制并入它們的數(shù)據(jù)/控制通路,以確保人們對(duì)自動(dòng)處理控制系統(tǒng)的訪(fǎng)問(wèn)不會(huì)由于單個(gè)通路/機(jī)器故障而被打斷。
      這種冗余/故障切換功能已經(jīng)在系統(tǒng)中實(shí)現(xiàn),其中,完全相同的部件并行地操作于相同網(wǎng)絡(luò)區(qū)域中的分離的機(jī)器上。在一冗余數(shù)據(jù)傳送主機(jī)實(shí)現(xiàn)中,第二數(shù)據(jù)傳送主機(jī)系統(tǒng)作為主要數(shù)據(jù)傳送主機(jī)系統(tǒng)的等同副本來(lái)操作。這種實(shí)現(xiàn)需要完全相同的通信、硬件和軟件。此外,冗余對(duì)于數(shù)據(jù)傳送系統(tǒng)的客戶(hù)機(jī)而言不是透明的。結(jié)果,冗余數(shù)據(jù)傳送系統(tǒng)的每個(gè)客戶(hù)機(jī)需要意識(shí)到截然不同地標(biāo)識(shí)/命名的活動(dòng)和備用系統(tǒng)。配置/實(shí)現(xiàn)/重新定位所述系統(tǒng)中的冗余主機(jī)相當(dāng)大地增加了系統(tǒng)以及這種系統(tǒng)在其中操作的網(wǎng)絡(luò)的成本。

      發(fā)明內(nèi)容
      本發(fā)明針對(duì)以下潛在需要,即,提供較好的方式來(lái)實(shí)現(xiàn)駐留并操作于監(jiān)督處理控制環(huán)境內(nèi)的主機(jī)中的冗余(例如,數(shù)據(jù)/消息傳送服務(wù)),作為示例,所述環(huán)境支持用于監(jiān)視和管理受控的工業(yè)處理的元件的顯像應(yīng)用。本發(fā)明有助于在監(jiān)督處理控制和制造信息系統(tǒng)中配置和部署冗余主機(jī)對(duì),其中,將冗余主機(jī)對(duì)中指定的冗余主機(jī)看作從數(shù)據(jù)獲取系統(tǒng)客戶(hù)機(jī)/訂戶(hù)看來(lái)的單個(gè)邏輯實(shí)體。這種透明性潛在地使得與數(shù)據(jù)源改變時(shí)進(jìn)行故障切換到備用引擎相關(guān)的程序成流線(xiàn)型。然而,由于故障切換對(duì)的每個(gè)伙伴被相同的名稱(chēng)參考,所以由客戶(hù)機(jī)使用的參考串不會(huì)受故障切換影響。
      上述優(yōu)點(diǎn)由以下系統(tǒng)以及所述系統(tǒng)執(zhí)行的有關(guān)方法來(lái)促進(jìn)實(shí)現(xiàn),所述系統(tǒng)在監(jiān)督處理控制數(shù)據(jù)獲取應(yīng)用運(yùn)行時(shí)間環(huán)境中提供啟用冗余的主機(jī)的數(shù)據(jù)獲取客戶(hù)機(jī)的故障切換主機(jī)伙伴之間的透明性。所述系統(tǒng)包括名稱(chēng)解析表,用于將獨(dú)立于位置的參考名稱(chēng)映射到網(wǎng)絡(luò)位置特定的地址。將獨(dú)立于位置的名稱(chēng)分配到啟用冗余的主機(jī),所述主機(jī)包括活動(dòng)主機(jī)伙伴和備用主機(jī)伙伴。消息收發(fā)基礎(chǔ)結(jié)構(gòu)服務(wù)于啟用冗余的主機(jī)的客戶(hù)機(jī)。消息收發(fā)基礎(chǔ)結(jié)構(gòu)維護(hù)名稱(chēng),所述名稱(chēng)用于客戶(hù)機(jī)對(duì)于啟用冗余的主機(jī)上的預(yù)訂數(shù)據(jù)的每個(gè)參考的地址翻譯,從而不必考慮哪個(gè)啟用冗余的主機(jī)伙伴當(dāng)前處于活動(dòng)狀態(tài),而將相同的名稱(chēng)用于參考啟用冗余的主機(jī)上的數(shù)據(jù)。
      這里公開(kāi)的系統(tǒng)和方法的其它發(fā)明方面針對(duì)所述系統(tǒng)的配置以及它們的運(yùn)行時(shí)間行為,包括經(jīng)由冗余消息通道在故障切換對(duì)之間傳遞的同步信息的內(nèi)容,所述冗余消息通道使得備用伙伴能夠在給訂戶(hù)/客戶(hù)機(jī)對(duì)于由啟用冗余的主機(jī)提供的數(shù)據(jù)的最小限度的中斷的情況下接管活動(dòng)狀態(tài)。


      盡管所附權(quán)利要求具體闡述了本發(fā)明的特點(diǎn),但是可通過(guò)以下結(jié)合附圖進(jìn)行的詳細(xì)描述最佳地理解本發(fā)明連同它的目的和優(yōu)點(diǎn),其中圖1是示出包括多層監(jiān)督處理控制和制造信息系統(tǒng)的示例性監(jiān)督處理控制網(wǎng)絡(luò)內(nèi)的部件的主管/分級(jí)關(guān)系的示意圖;圖2示出用于主管實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)內(nèi)的平臺(tái)和引擎上的應(yīng)用的多層對(duì)象主管布置;圖3是概括用于配置和部署冗余主機(jī),更具體地說(shuō),用于配置和部署主管一組應(yīng)用對(duì)象的應(yīng)用引擎的一組示例性步驟的流程圖;圖4是與配置能夠啟用冗余的主機(jī)/應(yīng)用引擎相關(guān)的示例性用戶(hù)界面;圖5是與部署用于主管備份應(yīng)用引擎的節(jié)點(diǎn)相關(guān)的示例性用戶(hù)界面;圖6是與在主管故障切換引擎對(duì)的備份伙伴的節(jié)點(diǎn)上配置冗余消息通道(網(wǎng)絡(luò)接口卡的IP地址)相關(guān)的示例性用戶(hù)界面;圖7是與部署配置的故障切換引擎對(duì)相關(guān)的示例性用戶(hù)界面;圖8是包括概括將啟用故障切換的引擎對(duì)部署到它們各自的主機(jī)的一組示例性步驟的流程圖;圖9是概括用于實(shí)現(xiàn)故障引擎伙伴的操作的狀態(tài)機(jī)的一組示例性步驟和轉(zhuǎn)換的狀態(tài)圖;圖10是概括在故障切換引擎狀態(tài)機(jī)處于備用-丟失心跳(Heartbeat)狀態(tài)內(nèi)時(shí)執(zhí)行的邏輯的流程圖;圖11標(biāo)識(shí)與監(jiān)視故障切換引擎對(duì)以及故障切換引擎對(duì)通過(guò)其通信的網(wǎng)絡(luò)和節(jié)點(diǎn)的狀態(tài)相關(guān)的一組定時(shí)器;圖12是概括用于在啟用冗余的主機(jī)中實(shí)施故障切換的一組示例性步驟的流程圖,所述啟用冗余的主機(jī)將對(duì)實(shí)時(shí)數(shù)據(jù)、歷史數(shù)據(jù)和告警數(shù)據(jù)的訪(fǎng)問(wèn)提供給一組客戶(hù)機(jī)/訂戶(hù);以及圖13包括支持冗余故障切換主機(jī)對(duì)的一組示例性接口/方法。
      具體實(shí)施例方式
      以下描述基于本發(fā)明的實(shí)施例,并且不應(yīng)將以下描述看作關(guān)于沒(méi)有在這里明確描述的替換實(shí)施例來(lái)限制本發(fā)明。作為示例,將本發(fā)明并入監(jiān)督處理控制和制造信息環(huán)境內(nèi),其中,由應(yīng)用對(duì)象代表各個(gè)數(shù)據(jù)源。在Resnick等人的第2002/0198920-A1號(hào)美國(guó)專(zhuān)利申請(qǐng)公開(kāi)“SUPERVISORY PROCESS CONTROL AND MANUFACTURINGINFORMATION SYSTEM APPLICATION HAVING A LAYEREDARCHITECTURE”中詳細(xì)描述了所述系統(tǒng)的示例,所述申請(qǐng)的內(nèi)容通過(guò)引用全部合并于此,包括其中標(biāo)識(shí)/包含的任何參考文獻(xiàn)的內(nèi)容和教導(dǎo)。然而,如本領(lǐng)域的技術(shù)人員將根據(jù)所公開(kāi)的示例性實(shí)施例所理解的,本發(fā)明潛在地可應(yīng)用于各種替換監(jiān)督處理控制環(huán)境,其包括可標(biāo)識(shí)的數(shù)據(jù)源,所述數(shù)據(jù)源提供驅(qū)動(dòng)一組動(dòng)態(tài)圖形元件的實(shí)時(shí)處理數(shù)據(jù),所述元件代表至少一部分觀察/受控的工業(yè)處理。
      參照?qǐng)D1,示意圖示出在包括并入故障切換引擎對(duì)的多層監(jiān)督處理控制和制造信息系統(tǒng)的示例性監(jiān)督處理控制網(wǎng)絡(luò)內(nèi)的部件的主管/分級(jí)關(guān)系。在對(duì)示例性網(wǎng)絡(luò)環(huán)境進(jìn)行更加詳細(xì)的描述之前,通常應(yīng)注意到在該實(shí)施例中,作為示例,按照接收狀態(tài)信息的應(yīng)用對(duì)象105和應(yīng)用對(duì)象’107的形式來(lái)提供數(shù)據(jù)源。此外,在由配置數(shù)據(jù)庫(kù)124(例如,Wonderware’s Galaxy Repository)保存的全局名稱(chēng)表125內(nèi)標(biāo)識(shí)應(yīng)用對(duì)象105和應(yīng)用對(duì)象’107,所述配置數(shù)據(jù)庫(kù)124的內(nèi)容經(jīng)由在配置PC 120上執(zhí)行的顯像應(yīng)用開(kāi)發(fā)工具127(例如,Wonderware’sINTOUCH軟件)對(duì)于開(kāi)發(fā)者可用。在本發(fā)明的實(shí)施例中,顯像應(yīng)用開(kāi)發(fā)工具127提交對(duì)于駐留在配置數(shù)據(jù)庫(kù)內(nèi)的特定信息的查詢(xún),以便有助于提供由開(kāi)發(fā)者并入特定應(yīng)用(例如,制造處理線(xiàn))的一個(gè)或多個(gè)處理顯像示圖/窗口的可用數(shù)據(jù)源(例如,應(yīng)用對(duì)象105)。一旦建立之后,處理顯像應(yīng)用潛在地在連接到圖1中示意性示出的監(jiān)督處理控制網(wǎng)絡(luò)的一組工作站中的任何一個(gè)上執(zhí)行。
      繼續(xù)參照?qǐng)D1,第一應(yīng)用服務(wù)器個(gè)人計(jì)算機(jī)(PC)100和第二應(yīng)用服務(wù)器PC 102共同合作地執(zhí)行冗余分布式多層監(jiān)督處理控制和制造信息應(yīng)用,其包括第一部分104和第二部分106。應(yīng)用部分104和106分別包括裝置集成應(yīng)用對(duì)象PLC1Network和PLC1以及PLC1Network’和PLC1’。PLCxNetwork裝置集成對(duì)象有助于數(shù)據(jù)訪(fǎng)問(wèn)服務(wù)器(例如,OPC DA服務(wù)器116和118)的配置。作為OPC客戶(hù)機(jī)操作的PLC1和PLC1’裝置集成對(duì)象訪(fǎng)問(wèn)OPC DA服務(wù)器116和118的緩沖器內(nèi)的數(shù)據(jù)位置。數(shù)據(jù)訪(fǎng)問(wèn)服務(wù)器116和118以及裝置集成對(duì)象合作地從諸如PLC或其它現(xiàn)場(chǎng)裝置的外部處理控制部件導(dǎo)入數(shù)據(jù)并對(duì)所述數(shù)據(jù)進(jìn)行緩沖。
      在本發(fā)明的實(shí)施例中,由在連接到網(wǎng)絡(luò)119的PC(例如,PC 120)上執(zhí)行的人機(jī)界面軟件提交對(duì)于驅(qū)動(dòng)代表車(chē)間場(chǎng)所設(shè)備狀態(tài)的圖形顯示的車(chē)間場(chǎng)所信息的請(qǐng)求。由在個(gè)人計(jì)算機(jī)100和102上執(zhí)行的各種應(yīng)用對(duì)象105和107訪(fǎng)問(wèn)數(shù)據(jù)訪(fǎng)問(wèn)服務(wù)器116和118的數(shù)據(jù)緩沖器。作為示例,應(yīng)用對(duì)象的示例包括離散裝置、模擬裝置、現(xiàn)場(chǎng)參考等。在示出的示例中,經(jīng)由網(wǎng)絡(luò)119在PC 100和102(在車(chē)間場(chǎng)所)與PC 120之間傳遞對(duì)于車(chē)間場(chǎng)所信息和響應(yīng)數(shù)據(jù)的請(qǐng)求。
      根據(jù)本發(fā)明的實(shí)施例,應(yīng)用引擎主管應(yīng)用對(duì)象(經(jīng)由在這里稱(chēng)為“區(qū)域”的邏輯群組對(duì)象)。由位于監(jiān)督處理控制和制造信息應(yīng)用的下一較低級(jí)的平臺(tái)對(duì)象來(lái)輪流主管引擎。由通配引導(dǎo)部件108和110輪流主管應(yīng)用部分104和106。以下將在這里參照?qǐng)D2來(lái)描述所有上述部件。
      在實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)中,包括部分104和106的多層應(yīng)用以通信方式鏈接到受控處理。具體說(shuō)來(lái),經(jīng)由車(chē)間場(chǎng)所網(wǎng)絡(luò)115將第一應(yīng)用服務(wù)器個(gè)人計(jì)算機(jī)100和第二應(yīng)用服務(wù)器個(gè)人計(jì)算機(jī)102以通信方式耦合到第一可編程邏輯控制器112。應(yīng)注意到所示出的經(jīng)由車(chē)間場(chǎng)所網(wǎng)絡(luò)115從PC 100和102到PLC 112的連接代表邏輯連接。這種邏輯連接相應(yīng)于直接和間接物理通信鏈路兩者。例如,在特定實(shí)施例中,PLC 112包括以太網(wǎng)LAN上的節(jié)點(diǎn),個(gè)人計(jì)算機(jī)100和102也連接到所述LAN。在其它實(shí)施例中,將PLC 112直接鏈接到PC 100和102上的物理通信端口。
      在圖1所示的示例性實(shí)施例中,PC 100和102分別執(zhí)行數(shù)據(jù)訪(fǎng)問(wèn)服務(wù)器116和118。數(shù)據(jù)訪(fǎng)問(wèn)服務(wù)器116和118獲得/提取由PLC 112提供的處理信息,并將所述處理信息提供給包括部分104和106的應(yīng)用的應(yīng)用對(duì)象(例如,PLC1Network、PLC1、PLC1Network’和PLC1’)。作為示例,數(shù)據(jù)訪(fǎng)問(wèn)服務(wù)器116和118是OPC服務(wù)器。然而,本領(lǐng)域的技術(shù)人員將容易地理解到,各種自定義數(shù)據(jù)格式/協(xié)議和標(biāo)準(zhǔn)化數(shù)據(jù)格式/協(xié)議潛在地由數(shù)據(jù)訪(fǎng)問(wèn)服務(wù)器116和118來(lái)實(shí)施。此外,示例性應(yīng)用對(duì)象通過(guò)到數(shù)據(jù)訪(fǎng)問(wèn)服務(wù)器116和118的連接代表PLC網(wǎng)絡(luò)和PLC本身的操作。然而,應(yīng)用對(duì)象包括可執(zhí)行對(duì)象的類(lèi)的實(shí)際上無(wú)限的頻譜,所述可執(zhí)行對(duì)象在監(jiān)督處理控制和制造信息應(yīng)用的環(huán)境中執(zhí)行期望的監(jiān)督控制和數(shù)據(jù)獲取/集成功能。
      例如,由執(zhí)行數(shù)據(jù)庫(kù)(例如,SQL)服務(wù)器122的配置個(gè)人計(jì)算機(jī)120來(lái)加強(qiáng)監(jiān)督處理控制和管理信息應(yīng)用,所述服務(wù)器122保存用于應(yīng)用對(duì)象以及包括通過(guò)其例示應(yīng)用對(duì)象的模板的其它有關(guān)信息的監(jiān)督處理控制和管理信息應(yīng)用配置數(shù)據(jù)庫(kù)124。配置數(shù)據(jù)庫(kù)124還包括全局名稱(chēng)表125,其有助于將獨(dú)立于位置的對(duì)象名稱(chēng)綁定到源于位置的句柄,這有助于在圖1所示的系統(tǒng)內(nèi)的對(duì)象之間路由消息。配置PC120和相關(guān)數(shù)據(jù)庫(kù)服務(wù)器122支持對(duì)多用戶(hù)環(huán)境的管理監(jiān)視、修訂歷史管理、集中的許可證管理、包括新對(duì)象和它們的相關(guān)軟件的部署和安裝的集中的對(duì)象部署、全局名稱(chēng)表125的保存以及導(dǎo)入/導(dǎo)出對(duì)象模板和實(shí)例。
      經(jīng)由集成開(kāi)發(fā)環(huán)境(IDE)126來(lái)實(shí)施應(yīng)用的配置,所述應(yīng)用包括故障切換應(yīng)用引擎的創(chuàng)建和部署(將在下面進(jìn)一步討論)。IDE 126是一種實(shí)體(潛在地包括多個(gè)部件),通過(guò)該實(shí)體,包括應(yīng)用對(duì)象和引擎的處理控制和制造信息應(yīng)用被定義,創(chuàng)建和部署到各種平臺(tái)/引擎,作為示例,所述平臺(tái)/引擎包括應(yīng)用服務(wù)器PC 100和102。監(jiān)督處理控制和制造信息應(yīng)用的開(kāi)發(fā)者通過(guò)IDE 126實(shí)施各種應(yīng)用設(shè)計(jì)功能,包括導(dǎo)入新的對(duì)象和模板類(lèi)型,從現(xiàn)有模板配置新的模板,定義新的應(yīng)用對(duì)象以及將應(yīng)用對(duì)象部署到主機(jī)應(yīng)用引擎(例如,應(yīng)用服務(wù)器PC 100上的AppEngine1)。
      圖1所示的示例性監(jiān)督控制網(wǎng)絡(luò)環(huán)境還包括連接到網(wǎng)絡(luò)119的一組操作者站130、132和134,其提供對(duì)于處理和處理的部分的示圖,所述處理和處理的部分由作為PC 100和102上的一組分層對(duì)象安裝并執(zhí)行的監(jiān)督處理控制和管理信息應(yīng)用來(lái)監(jiān)視/控制。原料PC 130提供代表示圖,所述代表示圖能夠?qū)崿F(xiàn)監(jiān)視監(jiān)督工業(yè)處理的原料區(qū)域。生產(chǎn)PC 132提供監(jiān)督工業(yè)處理的生產(chǎn)部分的代表示圖。完成產(chǎn)品PC134提供與完成的產(chǎn)品相關(guān)的生產(chǎn)設(shè)施的區(qū)域的代表示圖。操作者站130、132和134中的每一個(gè)包括用于每個(gè)特定操作者站平臺(tái)的引導(dǎo)主機(jī)。操作者站130、132和134中的每一個(gè)包括處理圖形信息的示圖引擎,所述圖形信息用于提呈觀察的工業(yè)處理或工業(yè)處理的部分的圖形表示。
      在本發(fā)明的實(shí)施例中,PC 102提供對(duì)PC 100的故障切換支持。作為示例,故障切換支持發(fā)生在應(yīng)用引擎級(jí)(例如,AppEngine1和AppEngine1’)。因此,當(dāng)PC 100上的AppEngine1出現(xiàn)故障/關(guān)閉時(shí),將PC 102上的AppEngine1’(在全局名稱(chēng)表125中具有與AppEngine1相同的分配的參考名稱(chēng))配置為接管先前分配到AppEngine1的責(zé)任(例如,主管應(yīng)用對(duì)象)。應(yīng)用引擎級(jí)上的故障切換支持提供應(yīng)用對(duì)象的高度可用性,所述應(yīng)用對(duì)象在故障切換引擎對(duì)的當(dāng)前活動(dòng)引擎的運(yùn)行時(shí)間故障期間由啟用故障切換的引擎對(duì)配置來(lái)主管。在本發(fā)明的實(shí)施例中,在配置階段期間為故障切換啟用/指定應(yīng)用引擎。在配置期間,只有主要引擎是可配置的(例如,將應(yīng)用對(duì)象分配到主要引擎)。在登記啟用故障切換的應(yīng)用引擎之后,將應(yīng)用引擎故障切換對(duì)的主要應(yīng)用引擎和備份應(yīng)用引擎部署到第一平臺(tái)和第二平臺(tái)(駐留在截然不同的聯(lián)網(wǎng)的機(jī)器上)。在運(yùn)行時(shí)間環(huán)境中,通常向主要引擎分配啟用故障切換的應(yīng)用引擎對(duì)的活動(dòng)角色,并由此啟動(dòng)/主管/執(zhí)行一組被管理的應(yīng)用對(duì)象。
      另一方面,在配置/部署期間被分配備份角色的應(yīng)用引擎提供對(duì)故障切換對(duì)的冗余支持。備份引擎通常在運(yùn)行時(shí)間被分配啟用故障切換的引擎對(duì)的備用角色,所述備份引擎確保應(yīng)用引擎對(duì)的至少一個(gè)引擎和被管理的應(yīng)用對(duì)象的高度可用性。當(dāng)?shù)怯浥渲霉收锨袚Q的應(yīng)用引擎時(shí),創(chuàng)建備份引擎。備份引擎和它在運(yùn)行時(shí)間的類(lèi)似的備用引擎包含用于創(chuàng)建/主管應(yīng)用對(duì)象實(shí)例的必要部件(例如,軟件和數(shù)據(jù)),所述應(yīng)用對(duì)象實(shí)例與啟用故障切換的應(yīng)用引擎相關(guān)。然而,在本發(fā)明的實(shí)施例中,在故障切換引擎對(duì)的備份引擎上既不啟動(dòng)也不執(zhí)行應(yīng)用對(duì)象。在運(yùn)行時(shí)間期間,啟用故障切換的應(yīng)用引擎的備用引擎在活動(dòng)引擎不再操作的情況下考慮接管執(zhí)行由啟用故障切換的應(yīng)用引擎對(duì)主管的應(yīng)用對(duì)象時(shí)監(jiān)視主要引擎的狀態(tài)和檢查點(diǎn)臨界數(shù)據(jù)。當(dāng)檢測(cè)到當(dāng)前活動(dòng)應(yīng)用引擎的故障時(shí),備用引擎(例如,PC 102上的AppEngine1’)變成活動(dòng)引擎并執(zhí)行與主管啟用故障切換的應(yīng)用引擎對(duì)上的應(yīng)用對(duì)象相關(guān)的任務(wù)。具體說(shuō)來(lái),在承擔(dān)活動(dòng)引擎角色時(shí),目前的活動(dòng)引擎調(diào)用被管理的應(yīng)用對(duì)象上的啟動(dòng)方法,并開(kāi)始執(zhí)行應(yīng)用對(duì)象,所述應(yīng)用對(duì)象替代啟用故障切換的應(yīng)用引擎對(duì)的故障伙伴。作為示例,當(dāng)備用引擎獲取活動(dòng)引擎的角色時(shí),其接管對(duì)于參考的責(zé)任,所述參考有助于修改屬性,監(jiān)視屬性的改變并從屬性檢索數(shù)據(jù)。這種參考與監(jiān)督、用戶(hù)和系統(tǒng)參考集合相關(guān),所述集合與被管理的應(yīng)用對(duì)象相關(guān)。
      這里公開(kāi)的啟用故障切換的應(yīng)用引擎對(duì)的一方面是備份引擎和備用引擎的相對(duì)透明性。在本發(fā)明的實(shí)施例中,用戶(hù)為備份引擎指定主機(jī)。然而,在沒(méi)有用戶(hù)干預(yù)的情況下自動(dòng)執(zhí)行對(duì)備份引擎的部署。用戶(hù)通常通過(guò)對(duì)主要/活動(dòng)引擎的操作來(lái)實(shí)施對(duì)啟用故障切換的應(yīng)用引擎的控制/配置。此外,活動(dòng)引擎和備用引擎在監(jiān)督控制系統(tǒng)運(yùn)行時(shí)間環(huán)境內(nèi)共享單個(gè)的全局名稱(chēng)。因此,在進(jìn)行故障切換到備用應(yīng)用引擎的情況下,不需要改變用于標(biāo)識(shí)啟用故障切換的應(yīng)用引擎對(duì)的任何參考。盡管對(duì)被管理的應(yīng)用對(duì)象的訪(fǎng)問(wèn)可能在故障切換期間臨時(shí)丟失(在備用引擎獲取主動(dòng)角色并啟動(dòng)被管理的應(yīng)用對(duì)象/基本要素的同時(shí)),客戶(hù)機(jī)沒(méi)有意識(shí)到切換到備用(目前活動(dòng))應(yīng)用引擎,并且盡管響應(yīng)應(yīng)用對(duì)象的物理位置已改變,仍繼續(xù)使用一組相同的全局參考來(lái)訪(fǎng)問(wèn)由啟用故障切換的引擎對(duì)支持的資源。
      根據(jù)本發(fā)明的實(shí)施例,啟用故障切換的應(yīng)用引擎對(duì)執(zhí)行同步操作以有助于備用引擎到活動(dòng)引擎狀態(tài)的角色改變。同步數(shù)據(jù)的示例包括檢查點(diǎn)文件(包括活動(dòng)引擎上的配置/調(diào)整值、告警限制和部署的對(duì)象)、告警狀態(tài)(戳記的時(shí)間)、訂戶(hù)列表(對(duì)于由被管理的對(duì)象提供的數(shù)據(jù))、實(shí)況數(shù)據(jù)以及存儲(chǔ)器和轉(zhuǎn)發(fā)緩沖器內(nèi)的數(shù)據(jù)(例如,將被傳遞到處理狀態(tài)歷史數(shù)據(jù)庫(kù))。一旦被首次加載,活動(dòng)引擎就跟蹤對(duì)于同步信息的改變(例如,檢查點(diǎn)的變量增量)并且僅發(fā)送所述改變(與傳遞同步信息的完整副本相對(duì)比)。僅發(fā)送改變大大減少了通過(guò)鏈路140的通信量(以下將在這里進(jìn)一步描述)。由于本發(fā)明的實(shí)施例考慮單個(gè)PC(例如,PC 102)來(lái)主管活動(dòng)引擎或備用引擎的多個(gè)實(shí)例,所以上述效果是特別重要的。在將多個(gè)應(yīng)用引擎配置為兩個(gè)PC(例如,PC 100和PC 102)上的故障切換對(duì)的情況下,由用于實(shí)施與故障切換引擎的故障切換功能有關(guān)的通信的所有故障切換引擎來(lái)共享鏈路140。
      作為示例,經(jīng)由在這里稱(chēng)為冗余消息通道(RMC)的鏈路140從PC 100(運(yùn)行主要引擎)和PC 102(包含備份引擎)傳遞檢查點(diǎn)數(shù)據(jù)。鏈路140(例如,以太網(wǎng)鏈路、802.11x無(wú)線(xiàn)鏈路等)在物理上與插件場(chǎng)所網(wǎng)絡(luò)115分離并且截然不同于車(chē)間場(chǎng)所網(wǎng)絡(luò)115,所述鏈路140支持以高數(shù)據(jù)率在PC 100與PC 102之間傳送必要信息,以實(shí)施故障切換/備份功能。在本發(fā)明的實(shí)施例中,啟用故障切換的引擎(例如,PC 100上的AppEngine1)包括系統(tǒng)屬性(遠(yuǎn)程伙伴地址或“RPA”),所述系統(tǒng)屬性有助于指定與鏈路140的備份引擎方相關(guān)的網(wǎng)絡(luò)接口的互聯(lián)網(wǎng)協(xié)議地址。在啟動(dòng)時(shí),主要引擎(例如,AppEngine1)采用RPA屬性將消息發(fā)送到指定的主機(jī)名稱(chēng)或IP地址,以便經(jīng)由冗余消息通道(RMC)首次聯(lián)系主管它的故障切換引擎伙伴(例如,AppEngine1’)的平臺(tái),所述RMC在圖1中由鏈路140代表。這一初始消息向備份/備用引擎(或包括用于備份/備用引擎的平臺(tái)主機(jī)的任何其它感興趣的實(shí)體)通知主要引擎的主機(jī)平臺(tái)的IP地址。在本發(fā)明的實(shí)施例中,在指定備份引擎的節(jié)點(diǎn)/平臺(tái)之后,計(jì)算RPA。因此,在啟用故障切換的配置被加載到網(wǎng)絡(luò)上指定的平臺(tái)上的情況下,在配置階段期間或者在部署階段期間潛在地指定RPA。在示例性實(shí)施例中,將單個(gè)RPA分配到平臺(tái)(PC)的物理網(wǎng)絡(luò)接口,所述平臺(tái)(PC)潛在地主管多個(gè)應(yīng)用引擎。然而,將截然不同的參考(例如,句柄、名稱(chēng)等)分配到每個(gè)故障切換應(yīng)用引擎,以區(qū)分由單個(gè)平臺(tái)主管的多個(gè)應(yīng)用引擎。
      應(yīng)注意到以上描述的圖1所示的系統(tǒng)僅僅是用于監(jiān)督處理控制和制造信息系統(tǒng)的多層分級(jí)結(jié)構(gòu)的示例,所述監(jiān)督處理控制和制造信息系統(tǒng)包括冗余/故障切換應(yīng)用服務(wù)器,用于確保將數(shù)據(jù)從車(chē)間場(chǎng)所網(wǎng)絡(luò)115連續(xù)提供給網(wǎng)絡(luò)119上的人機(jī)界面計(jì)算機(jī)。本發(fā)明并不受限于具體公開(kāi)的應(yīng)用/系統(tǒng),事實(shí)上,本發(fā)明不需要以所示的示例中顯示的多級(jí)應(yīng)用的形式來(lái)實(shí)施。還應(yīng)注意到圖1呈現(xiàn)為安裝的包括軟件和物理計(jì)算硬件的部件之間的主管和/或容納相互關(guān)系的邏輯示圖。例如,本發(fā)明可應(yīng)用于以下系統(tǒng),在所述系統(tǒng)中,配置設(shè)備和監(jiān)督處理控制顯像應(yīng)用兩者均運(yùn)行在鏈接到受控處理的單個(gè)計(jì)算機(jī)系統(tǒng)上。
      參照?qǐng)D2,類(lèi)示圖示出與計(jì)算機(jī)(例如,PC 100或102)相關(guān)的分層軟件的分級(jí)主管布置,所述計(jì)算機(jī)(PC 100或102)執(zhí)行至少一部分監(jiān)督處理控制和制造信息應(yīng)用。每個(gè)計(jì)算機(jī)在分級(jí)的最低級(jí)執(zhí)行諸如微軟的WINDOWS的操作系統(tǒng)200。操作系統(tǒng)200主管引導(dǎo)對(duì)象202。將引導(dǎo)對(duì)象202加載到計(jì)算機(jī)上,并且與由操作系統(tǒng)200執(zhí)行的啟動(dòng)程序相關(guān)地被激活。作為平臺(tái)類(lèi)對(duì)象204的主機(jī),引導(dǎo)對(duì)象202必須在開(kāi)始平臺(tái)類(lèi)對(duì)象204的操作之前被激活。引導(dǎo)對(duì)象202開(kāi)啟并停止平臺(tái)類(lèi)對(duì)象204。引導(dǎo)對(duì)象202還提呈由平臺(tái)類(lèi)對(duì)象204采用的服務(wù),以開(kāi)啟并停止由平臺(tái)類(lèi)對(duì)象204主管的一個(gè)或多個(gè)引擎對(duì)象206。
      平臺(tái)類(lèi)對(duì)象204是一個(gè)或多個(gè)引擎對(duì)象206的主機(jī)。在本發(fā)明的實(shí)施例中,平臺(tái)類(lèi)對(duì)象204對(duì)于所述一個(gè)或多個(gè)引擎對(duì)象206代表執(zhí)行特定操作系統(tǒng)的計(jì)算機(jī)。平臺(tái)類(lèi)對(duì)象204保存在平臺(tái)類(lèi)對(duì)象204上部署的引擎對(duì)象206的列表,開(kāi)啟并停止引擎對(duì)象206,如果引擎對(duì)象206發(fā)生碰撞則重新啟動(dòng)引擎對(duì)象206。平臺(tái)類(lèi)對(duì)象204監(jiān)視引擎對(duì)象206的運(yùn)行狀態(tài)并向客戶(hù)機(jī)公布狀態(tài)信息。平臺(tái)類(lèi)對(duì)象204包括系統(tǒng)管理操縱診斷設(shè)備,其能夠?qū)?zhí)行平臺(tái)類(lèi)對(duì)象204的計(jì)算機(jī)系統(tǒng)執(zhí)行診斷和管理任務(wù)。平臺(tái)類(lèi)對(duì)象204還向分布式告警子系統(tǒng)提供告警。
      引擎對(duì)象206主管一組應(yīng)用對(duì)象210,所述對(duì)象210實(shí)施與應(yīng)用相關(guān)的監(jiān)督處理控制和/或制造信息獲取功能。引擎對(duì)象206開(kāi)始所有應(yīng)用對(duì)象210的啟動(dòng)。引擎對(duì)象206還在調(diào)度器對(duì)象208的幫助下調(diào)度應(yīng)用對(duì)象210相對(duì)于彼此的執(zhí)行。引擎對(duì)象206向用于執(zhí)行的調(diào)度器對(duì)象208注冊(cè)應(yīng)用對(duì)象210。調(diào)度器對(duì)象208基于由引擎對(duì)象206中相應(yīng)的引擎對(duì)象指定的配置來(lái)相對(duì)于其它應(yīng)用對(duì)象執(zhí)行應(yīng)用對(duì)象。引擎對(duì)象206監(jiān)視應(yīng)用對(duì)象210的操作,并將不正常工作的應(yīng)用對(duì)象置于隔離狀態(tài)。引擎對(duì)象206通過(guò)保存/恢復(fù)由自動(dòng)對(duì)象對(duì)配置文件進(jìn)行的運(yùn)行時(shí)間應(yīng)用的改變來(lái)支持檢查點(diǎn)。引擎對(duì)象206保存名稱(chēng)綁定服務(wù),其將屬性參考(例如,tank1.value.pv)綁定到應(yīng)用對(duì)象210中適當(dāng)?shù)膽?yīng)用對(duì)象。
      引擎對(duì)象206最終控制應(yīng)用對(duì)象210中相關(guān)的應(yīng)用對(duì)象的執(zhí)行如何發(fā)生。然而,一旦引擎對(duì)象206確定應(yīng)用對(duì)象210的執(zhí)行調(diào)度,就由調(diào)度器208控制它們的執(zhí)行的實(shí)時(shí)調(diào)度。調(diào)度器208支持包含方法RegisterAutomationObject()和UnregisterAutomationObject()的接口,該方法RegisterAutomationObject()和UnregisterAutomationObject()使得引擎對(duì)象206向調(diào)度器208的調(diào)度操作列表添加應(yīng)用對(duì)象中的特定應(yīng)用對(duì)象/從調(diào)度器208的調(diào)度操作列表去除應(yīng)用對(duì)象中的特定應(yīng)用對(duì)象。
      應(yīng)用對(duì)象210包括執(zhí)行業(yè)務(wù)邏輯的各種對(duì)象,所述業(yè)務(wù)邏輯有助于在作為示例的工業(yè)處理控制系統(tǒng)的環(huán)境下實(shí)施特定處理控制操作(例如,打開(kāi)泵,開(kāi)動(dòng)閥)和/或信息聚集/管理功能(例如,基于接收的現(xiàn)場(chǎng)裝置輸出信號(hào)值來(lái)提出告警)。處理控制(自動(dòng))應(yīng)用對(duì)象的示例包括模擬輸入、離散裝置和PID環(huán)對(duì)象。應(yīng)用對(duì)象210的類(lèi)經(jīng)由裝置集成對(duì)象(例如,OPC DA服務(wù)器118)作用于由諸如PLC的處理控制系統(tǒng)提供的數(shù)據(jù)。集成對(duì)象的功能在于提供處理控制/制造信息源與監(jiān)督處理控制和制造信息應(yīng)用之間的橋接。
      在示例性實(shí)施例中,應(yīng)用對(duì)象210包括由引擎對(duì)象206和調(diào)度器208訪(fǎng)問(wèn)的應(yīng)用接口。引擎對(duì)象206訪(fǎng)問(wèn)應(yīng)用對(duì)象接口,以初始化應(yīng)用對(duì)象,啟動(dòng)應(yīng)用對(duì)象和關(guān)閉應(yīng)用對(duì)象。調(diào)度器208使用應(yīng)用對(duì)象接口來(lái)開(kāi)始相應(yīng)應(yīng)用對(duì)象的調(diào)度的執(zhí)行。
      在描述了示例性監(jiān)督處理控制和制造信息網(wǎng)絡(luò)環(huán)境的主要部件之后,將關(guān)注在圖3中概括的一組示例性步驟,所述步驟部分地經(jīng)由諸如先前提到的IDE 126的監(jiān)督處理和制造信息系統(tǒng)部件配置裝備來(lái)交互地執(zhí)行。在所示的示例中,配置設(shè)備包括圖形用戶(hù)界面,所述圖形用戶(hù)界面展示與定義和部署啟用冗余/故障切換的主機(jī)(特別是啟用故障切換的應(yīng)用引擎對(duì))相關(guān)的一組參數(shù)。在隨后的部署(或重新部署)故障切換主機(jī)/應(yīng)用引擎對(duì)期間采用由用戶(hù)通過(guò)所述界面指定的參數(shù)值。應(yīng)注意到盡管所示的示例針對(duì)應(yīng)用引擎,但是本發(fā)明潛在地可應(yīng)用于各種主機(jī)對(duì)象,并試圖提供流線(xiàn)型用戶(hù)友好方式的配置系統(tǒng)中的冗余以及確保在監(jiān)督處理控制和制造信息系統(tǒng)中主機(jī)部件的備份可用性。此外,步驟的順序意為示例性的。本領(lǐng)域的技術(shù)人員將容易地理解根據(jù)本發(fā)明的替換實(shí)施例來(lái)修改完成以下在這里描述的各個(gè)階段的順序的能力。
      步驟300在配置期間啟用對(duì)應(yīng)用引擎的故障切換首先,在步驟300期間,用戶(hù)啟用并自定義所選擇的應(yīng)用引擎對(duì)象的故障切換行為。當(dāng)?shù)怯浐筒渴饝?yīng)用引擎配置選擇時(shí),由配置設(shè)備(例如,IDE 126)注冊(cè)在步驟300期間為應(yīng)用引擎指定的選擇/值,以便以后使用。參照?qǐng)D4,作為示例,通過(guò)由用戶(hù)經(jīng)由配置設(shè)備產(chǎn)生的冗余屬性接口提交的一組值來(lái)啟用和自定義應(yīng)用引擎故障切換行為。
      在所示的示例中,配置設(shè)備用戶(hù)界面提供與應(yīng)用引擎402(在圖4的配置用戶(hù)界面的部署示圖區(qū)域中所選擇的)的配置有關(guān)的多個(gè)標(biāo)簽。用戶(hù)在配置設(shè)備界面上選擇冗余標(biāo)簽400,以展示在屬性示圖401中示出的一組參數(shù),所述參數(shù)與定義用于當(dāng)前選擇的應(yīng)用引擎(AppEngine_001)402的冗余/故障切換行為相關(guān)。在本發(fā)明的實(shí)施例中,用戶(hù)通過(guò)“檢查”啟用冗余檢查欄404來(lái)指定用于選擇的應(yīng)用引擎402的冗余。響應(yīng)于故障切換指定,將故障切換動(dòng)態(tài)基本要素添加到應(yīng)用引擎對(duì)象,并將所述引擎指定為故障切換對(duì)的主要引擎。盡管沒(méi)有在圖4中示出,但是在部署示圖中首先將用于應(yīng)用402的備份引擎分配到未分配的主機(jī)405。用戶(hù)隨后將備份引擎(經(jīng)由拖放)重新分配到在部署示圖中示出的實(shí)際平臺(tái)節(jié)點(diǎn)。在步驟360期間保存/登記(解除對(duì)象上的編輯鎖)應(yīng)用引擎402的配置(以下在這里進(jìn)行描述)并且通過(guò)調(diào)用對(duì)象上的生效方法而使得所述配置生效之后,由所述系統(tǒng)內(nèi)管理對(duì)象的設(shè)備來(lái)創(chuàng)建備份引擎對(duì)象。
      圖4所示的示例性故障切換配置界面還支持一組用戶(hù)指定的參數(shù),所述參數(shù)定義應(yīng)用引擎402的故障切換行為。強(qiáng)制的故障切換超時(shí)406使得用戶(hù)能夠指定時(shí)間周期,其間,給出當(dāng)前活動(dòng)的應(yīng)用引擎以執(zhí)行到備用應(yīng)用引擎的用戶(hù)開(kāi)始的故障切換,所述備用應(yīng)用引擎否則在備用狀態(tài)下等待。緩沖的最多檢查點(diǎn)變量增量408使得用戶(hù)能夠指定最多數(shù)量的檢查點(diǎn)變量增量封裝,所述變量增量封裝將在開(kāi)始對(duì)檢查點(diǎn)信息進(jìn)行完全的重新同步之前被緩沖。最多檢查點(diǎn)變量增量408的典型值是0(當(dāng)掃描循環(huán)期間存在足夠的帶寬以將檢查點(diǎn)變量增量封裝傳送到備用引擎時(shí)),并且所述典型值用于處理諸如緩慢同步鏈路的異常情況。緩沖的最多告警狀態(tài)改變410使得用戶(hù)能夠指定最多數(shù)量的告警狀態(tài)改變封裝,所述告警狀態(tài)改變封裝將在活動(dòng)應(yīng)用引擎開(kāi)始對(duì)告警狀態(tài)的完整的重新同步之前被緩沖。
      由示例性配置用戶(hù)界面展示的冗余/故障切換參數(shù)包括與由活動(dòng)應(yīng)用引擎和備用應(yīng)用引擎發(fā)送/廣播到其它系統(tǒng)部件的心跳有關(guān)的一組參數(shù)。所述心跳是周期性的傳輸,接收方不需要對(duì)其作出響應(yīng),所述心跳確保心跳發(fā)送方是可操作的。備用引擎心跳周期412和活動(dòng)引擎心跳周期414指定由所述兩種引擎角色類(lèi)型中的每一個(gè)進(jìn)行的心跳消息傳輸之間的周期。從活動(dòng)引擎丟失的最多連續(xù)心跳416和從備用引擎丟失的最多連續(xù)心跳418指定多個(gè)連續(xù)過(guò)去的心跳周期,所述多個(gè)連續(xù)過(guò)去的心跳周期在注冊(cè)故障切換對(duì)通信故障之前由收聽(tīng)者注冊(cè)(即,心跳傳輸?shù)念A(yù)期接收方)。所述故障潛在地由監(jiān)督腳本來(lái)處理,所述監(jiān)督腳本執(zhí)行各種操作中的任何一個(gè),作為示例,所述操作包括產(chǎn)生對(duì)于監(jiān)視器的警告/告警消息,開(kāi)始進(jìn)行故障切換到備用伙伴引擎,以及重新部署(自動(dòng)地或根據(jù)來(lái)自用戶(hù)的指示)非響應(yīng)的故障切換引擎伙伴。以下將在這里進(jìn)一步討論故障切換方案中心跳的使用。
      直到備用引擎變?yōu)榛顒?dòng),從活動(dòng)引擎到備用引擎的傳送責(zé)任才開(kāi)始。如果當(dāng)客戶(hù)機(jī)引擎意識(shí)到主要/活動(dòng)引擎的故障時(shí)與當(dāng)客戶(hù)機(jī)引擎接收到備份/備用已變?yōu)榛顒?dòng)的通知時(shí)之間的時(shí)間延遲超過(guò)配置的限制,則與故障引擎相關(guān)的所有參考的質(zhì)量被設(shè)置為不確定。由用戶(hù)經(jīng)由用于在故障之后保存較好的質(zhì)量的最長(zhǎng)時(shí)間參數(shù)420來(lái)指定配置的時(shí)間延遲限制。而作為另一參數(shù)的用于發(fā)現(xiàn)伙伴的最長(zhǎng)時(shí)間422使得用戶(hù)能夠指定在經(jīng)由RMC發(fā)出連接請(qǐng)求之后注冊(cè)故障之前,主要引擎花費(fèi)多長(zhǎng)時(shí)間等待來(lái)自它的備份引擎的響應(yīng)。強(qiáng)制故障切換命令424使得用戶(hù)能夠指定字母數(shù)字串,當(dāng)由監(jiān)督者/管理者提供所述字母數(shù)字串時(shí),其在不等待當(dāng)前活動(dòng)引擎出故障的情況下,強(qiáng)制將活動(dòng)狀態(tài)從當(dāng)前活動(dòng)引擎?zhèn)魉偷疆?dāng)前備用引擎。
      步驟310和320用于備份引擎的新平臺(tái)主機(jī)的配置繼續(xù)參照?qǐng)D4所示的示例性示例,必須將應(yīng)用引擎402和它的備份引擎部署到分離的平臺(tái)/節(jié)點(diǎn)。如果在步驟310,用于主管應(yīng)用引擎402(在部署示圖中標(biāo)識(shí)為“Node_A”的平臺(tái)上)的備份的平臺(tái)仍舊不存在,則控制進(jìn)行到步驟320,其中,將平臺(tái)配置/創(chuàng)建為主管用于應(yīng)用引擎402的備份引擎。如樹(shù)結(jié)構(gòu)403所示(示出包括多個(gè)聯(lián)網(wǎng)的計(jì)算節(jié)點(diǎn)的系統(tǒng)中應(yīng)用部件的配置的物理部署示圖),仍舊不存在第二物理聯(lián)網(wǎng)的計(jì)算裝置節(jié)點(diǎn)/平臺(tái)對(duì)象,其用于主管用于應(yīng)用引擎402的備份應(yīng)用引擎,所述應(yīng)用引擎402被部署到在樹(shù)結(jié)構(gòu)403中標(biāo)識(shí)為“Node_A”的平臺(tái)對(duì)象。因此,在步驟320期間,用戶(hù)通過(guò)將$WinPlatform模板407的副本從模板工具條樹(shù)拖放到部署示圖區(qū)域來(lái)創(chuàng)建新的節(jié)點(diǎn)/平臺(tái)。
      簡(jiǎn)要地參照?qǐng)D5,在用戶(hù)創(chuàng)建用于主管應(yīng)用引擎402的備份引擎的新的節(jié)點(diǎn)/平臺(tái)(Node_B)之后,示例性部署示圖示出冗余引擎對(duì)配置,其中,所述參考引擎402駐留在節(jié)點(diǎn)A上。在創(chuàng)建Node_B之后,通過(guò)將“AppEngine_001(備份)”從未分配的主機(jī)目錄拖放到所示的部署示圖樹(shù)上的Node_B平臺(tái),將用于應(yīng)用引擎(AppEngine_001)402的備份置于Node_B上。如圖5所示,節(jié)點(diǎn)B將主管節(jié)點(diǎn)A上的應(yīng)用引擎(AppEngine_001)402的備份(AppEngine_001(備份))。當(dāng)完成創(chuàng)建/配置用于主管備份應(yīng)用引擎的新的平臺(tái)時(shí),控制從步驟320進(jìn)行到步驟330。
      另一方面,如果用于備份引擎的主機(jī)平臺(tái)已經(jīng)存在,則控制從步驟310直接進(jìn)行到步驟330。
      應(yīng)注意到在配置環(huán)境的部署示圖中創(chuàng)建應(yīng)用部件(例如,節(jié)點(diǎn)/平臺(tái)、引擎、應(yīng)用對(duì)象等)是截然不同于將部件“部署”到網(wǎng)絡(luò)內(nèi)的物理計(jì)算機(jī)器的操作。繼續(xù)參照?qǐng)D5,“對(duì)象”菜單500包括“部署”選項(xiàng)502,用于實(shí)施對(duì)從部署示圖選擇的一個(gè)或多個(gè)部件的實(shí)際部署。當(dāng)結(jié)合先前選擇的“Node_A”選擇“部署”選項(xiàng)時(shí),與部署示圖中的Node_A相應(yīng)的平臺(tái)以及Node_A下的所有部件被安裝在與Node_A相應(yīng)的聯(lián)網(wǎng)的計(jì)算機(jī)器上。以下將在這里進(jìn)一步描述應(yīng)用部件的這種部署。
      步驟330/340配置備份平臺(tái)上的RMC除了備份引擎主機(jī)之外,故障切換應(yīng)用引擎對(duì)還依賴(lài)于故障切換通信鏈路,特別是冗余消息通道(RMC)。RMC提供故障切換伙伴的主機(jī)平臺(tái)之間的通信通路,通過(guò)所述通路,主要引擎和備份引擎交換信息,作為示例,所述信息包括檢查點(diǎn)、狀態(tài)和命令/控制信息。向RMC上的每個(gè)主機(jī)平臺(tái)分配唯一的物理網(wǎng)絡(luò)地址。在所示的示例性實(shí)施例中,RMC采用PC之間的網(wǎng)絡(luò)通路,所述網(wǎng)絡(luò)通路在物理上與主要一般網(wǎng)絡(luò)路徑分離,主機(jī)PC采用所述主要一般網(wǎng)絡(luò)路徑以實(shí)現(xiàn)各種其它目的。作為示例,RMC采用鏈路140(例如,以太網(wǎng)鏈路),所述鏈路140在物理上與網(wǎng)絡(luò)119分離。在替換實(shí)施例中,采用主要一般網(wǎng)絡(luò)(例如,網(wǎng)絡(luò)119)。然而,由于與RMC相關(guān)的附加工作量對(duì)網(wǎng)絡(luò)119的性能的影響,在許多實(shí)例中不太期望使用一般網(wǎng)絡(luò)119。
      為了實(shí)施故障切換/冗余引擎有關(guān)的通信的目的,由多個(gè)故障切換對(duì)潛在地使用RMC。在使用RMC來(lái)處理多個(gè)故障切換對(duì)的一示例中,考慮共享鏈路140來(lái)幫助“N on 1”的故障切換配置,其中,單個(gè)平臺(tái)主管用于為故障切換配置的一組N個(gè)主要應(yīng)用引擎的備份副本。實(shí)際上,主要應(yīng)用引擎不需要出現(xiàn)在相同的主機(jī)PC上。相反,單個(gè)平臺(tái)(例如,應(yīng)用服務(wù)器2PC平臺(tái))潛在地主管用于具有不同主機(jī)PC的多個(gè)主要引擎的備份引擎。在所述實(shí)例中,作為示例,鏈路140包括多點(diǎn)網(wǎng)絡(luò)總線(xiàn),并且主管主要或備份引擎的每個(gè)平臺(tái)共享用于它們的RMC的公共網(wǎng)絡(luò)(相應(yīng)于鏈路140)。對(duì)工作量進(jìn)行平衡以確保在多個(gè)故障切換的情況下,激活單個(gè)平臺(tái)上的多個(gè)備用引擎不會(huì)造成當(dāng)備用引擎呈現(xiàn)活動(dòng)引擎角色時(shí)備用引擎的主機(jī)上的掃描超過(guò)限度。這種可能發(fā)生的行為潛在地通過(guò)對(duì)主管故障切換備份引擎的平臺(tái)執(zhí)行監(jiān)督腳本來(lái)處理,以便監(jiān)視工作量并將備份引擎重新定位到其它可用的平臺(tái)。響應(yīng)于檢測(cè)的負(fù)載來(lái)重新定位備用引擎避免了平臺(tái)(計(jì)算裝置/節(jié)點(diǎn))的超載,隨著多個(gè)主要/活動(dòng)引擎接連發(fā)生故障,所述平臺(tái)被強(qiáng)制支持多個(gè)活動(dòng)應(yīng)用引擎。
      或者,在單個(gè)平臺(tái)主機(jī)上主管多個(gè)備份的情況下,可為單個(gè)平臺(tái)主機(jī)提供多個(gè)RMC(以及具有截然不同的網(wǎng)絡(luò)地址的相應(yīng)網(wǎng)絡(luò)適配器),從而想每個(gè)故障切換對(duì)分配單獨(dú)的RMC。在其它實(shí)施例中,由單個(gè)平臺(tái)主機(jī)支持專(zhuān)用和共享的RMC的組合。
      繼續(xù)參照?qǐng)D3,在步驟330期間,如果仍沒(méi)有在備份主機(jī)(Node_B)上建立RMC,則控制進(jìn)行到步驟340。在步驟340,配置設(shè)備提供用戶(hù)界面,所述用于界面展示一組參數(shù),所述參數(shù)使得用戶(hù)能夠指定與RMC上的備用引擎的主機(jī)平臺(tái)(Node_B)相應(yīng)的網(wǎng)絡(luò)地址。參照?qǐng)D6,用于平臺(tái)(例如,Node_B)的配置界面包括一組“冗余”配置字段,用于指定RMC通道。具體說(shuō)來(lái),冗余消息通道IP地址600使得用戶(hù)能夠指定與分配到RMC鏈路上的平臺(tái)(例如,Node_B)的網(wǎng)絡(luò)地址/名稱(chēng)相應(yīng)的物理(IP)地址(例如,192.168.001.102)。冗余消息通道IP地址600中的值是用于節(jié)點(diǎn)A的RPA。此外,用戶(hù)指定冗余消息通道端口602和冗余主要通道端口604。這些是用于保存通過(guò)RMC和主要通道的心跳的端口。RMC IP地址600先前已經(jīng)在上面被稱(chēng)為“遠(yuǎn)程伙伴地址”(RPA)。在登記啟用故障切換的引擎對(duì)并將其部署到適當(dāng)?shù)钠脚_(tái)之后,由主要引擎的主機(jī)采用RPA,以經(jīng)由RMC聯(lián)系相應(yīng)的備份引擎主機(jī)。
      在本發(fā)明的實(shí)施例中,平臺(tái)上的消息路由服務(wù)將引擎名稱(chēng)解析到地址。在引擎的主機(jī)平臺(tái)上執(zhí)行的消息路由服務(wù)檢測(cè)穿過(guò)指向相應(yīng)的故障切換伙伴引擎的RMC的通信,并將所述通信指向適當(dāng)?shù)囊?。此外,用于在相同RMC上的不同引擎之間進(jìn)行區(qū)分的消息路由服務(wù)的能力(通過(guò)對(duì)它們的截然不同的名稱(chēng)的名稱(chēng)解析操作)有助于N on1故障切換情況以及將啟用故障切換的引擎透明地重新定位到新的平臺(tái)。
      圖6包括涉及主要網(wǎng)絡(luò)上的Node_B的一般操作的一組字段(用于與各種其它主機(jī)節(jié)點(diǎn)通信)。網(wǎng)絡(luò)地址可以是物理(例如,IP)地址或名稱(chēng),其相應(yīng)于主要網(wǎng)絡(luò)上的Node_B的地址。歷史存儲(chǔ)轉(zhuǎn)發(fā)目錄字段指定Node_B上的存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)的位置,以便當(dāng)主要網(wǎng)絡(luò)停用或者太慢以致無(wú)法處理Node_B的數(shù)據(jù)傳輸流時(shí),對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行緩沖。
      圖6還包括涉及在Node_B所附的主要網(wǎng)絡(luò)上實(shí)施的消息交換服務(wù)的一組字段。消息超時(shí)值標(biāo)識(shí)在呈現(xiàn)發(fā)送的消息丟失之前,Node_B花費(fèi)多長(zhǎng)時(shí)間來(lái)等待響應(yīng)。NMX心跳周期允許緩慢的網(wǎng)絡(luò)在心跳由于緩慢的鏈路而潛在地丟失/延遲時(shí)避免超時(shí)。連續(xù)丟失的心跳是乘數(shù)。
      應(yīng)注意到在圖6所示的示例中,為備份引擎主機(jī)的RMC指定物理地址。然而,在本發(fā)明的替換實(shí)施例中,在步驟340期間,用戶(hù)指定主機(jī)名稱(chēng),所述主機(jī)名稱(chēng)與RMC IP地址600中的物理IP地址相應(yīng),隨后由名稱(chēng)服務(wù)將所述名稱(chēng)解析到相應(yīng)的物理IP地址。在用于備份引擎主機(jī)的RMC上設(shè)置地址之后,控制進(jìn)行到步驟350。另一方面,如果在步驟330,已經(jīng)為備份引擎主機(jī)(Node_B)建立了RMC上的地址,則控制進(jìn)行到步驟350。
      步驟350設(shè)置主要引擎上的RPA在步驟350期間,補(bǔ)充主管主要引擎(例如,應(yīng)用引擎402)的配置的平臺(tái),以包括RMC上的備份引擎(應(yīng)用引擎402的)主機(jī)平臺(tái)的地址(上述的RPA屬性)。RPA屬性有助于主要引擎開(kāi)始與它的相應(yīng)備份引擎的連接。
      步驟360登記冗余配置然后,在步驟360期間,在配置數(shù)據(jù)庫(kù)124上“登記”已經(jīng)啟用冗余的應(yīng)用引擎。登記應(yīng)用引擎的處理解除了鎖定機(jī)制,所述鎖定機(jī)制防止其它人在檢驗(yàn)的應(yīng)用引擎作為示例被配置/編輯的同時(shí)改變所述檢驗(yàn)的應(yīng)用引擎。登記啟用冗余的應(yīng)用引擎還觸發(fā)備份引擎實(shí)例的創(chuàng)建(假設(shè)當(dāng)前不存在用于特定應(yīng)用引擎的備份引擎實(shí)例)。將屬性從主要引擎復(fù)制到新創(chuàng)建的引擎實(shí)例,并將備份“角色”屬性分配到新的引擎實(shí)例。在以下在這里描述的步驟370期間,在將引擎伙伴部署到它們各自的平臺(tái)期間,備份角色屬性將備份引擎與它的主要引擎伙伴區(qū)分。在示例性實(shí)施例中,首先將備份引擎分配到默認(rèn)平臺(tái),但是可經(jīng)由IDE 126將所述備份引擎重新分配到另一平臺(tái)。將備份引擎分配到與主要引擎相同的“區(qū)域”(與處理控制和制造信息系統(tǒng)的緊密相關(guān)部件的群組相應(yīng))。
      作為復(fù)制為主要引擎指定的參數(shù)的結(jié)果,備份應(yīng)用引擎具有與它的伙伴主要引擎相同的配置數(shù)據(jù)。因此,如果在啟用冗余的情況下登記主要引擎的時(shí)候已經(jīng)存在備份引擎,則系統(tǒng)檢驗(yàn)備份引擎,將更新的配置數(shù)據(jù)(屬性)從主要引擎復(fù)制到檢驗(yàn)的備份引擎,并登記修改的備份引擎。因此,備份引擎具有主要網(wǎng)絡(luò)的配置的部署封裝的副本。
      備份引擎中的配置信息基本上與主要引擎相同。所述一般聲明的例外是冗余基本要素的“遠(yuǎn)程伙伴屬性(RPA)”。在主要應(yīng)用和備份應(yīng)用兩者均已被部署到它們各自的平臺(tái)之后,首先為主要引擎指定截然不同的RPA屬性(在步驟350期間),隨后在備份引擎中指定截然不同的RPA屬性(在步驟380期間)。
      盡管以下處理不是圖3所示的步驟的一部分,但是當(dāng)在禁用冗余選項(xiàng)(例如,啟用冗余404)的情況下登記備份引擎的主要伙伴時(shí),刪除仍沒(méi)有部署的備份引擎。由于客戶(hù)機(jī)潛在地具有與備份引擎相應(yīng)的當(dāng)前引擎和平臺(tái)標(biāo)識(shí),所以將備份引擎的去除廣播到具有對(duì)啟用冗余的主要應(yīng)用引擎的參考的當(dāng)前客戶(hù)機(jī)。在系統(tǒng)的部署配置示圖中,應(yīng)用引擎將不再可視地指示其是故障切換對(duì)的主要伙伴。另一方面,如果在禁用冗余選項(xiàng)的情況下登記應(yīng)用引擎,并且應(yīng)用引擎在部署的狀態(tài)下具有備份引擎,則登記主要引擎的處理將發(fā)生故障。因此,在去除備份引擎之前,必須將備份引擎解除部署。
      步驟370部署配置的冗余引擎(如果必要,還部署配置的主機(jī))繼續(xù)參照?qǐng)D3,在登記啟用冗余的應(yīng)用引擎配置之后,在步驟370期間,用戶(hù)調(diào)用對(duì)配置的冗余應(yīng)用引擎對(duì)的部署操作。作為示例,當(dāng)用戶(hù)通過(guò)在選擇包含應(yīng)用引擎的Galaxy(例如,參見(jiàn)圖7的部署樹(shù)700中的“MyGalaxy”)之后選擇“對(duì)象”菜單上的部署選項(xiàng)來(lái)調(diào)用全局部署操作時(shí),開(kāi)始對(duì)冗余應(yīng)用引擎配置封裝的部署。部署冗余應(yīng)用引擎對(duì)-使得從配置環(huán)境轉(zhuǎn)換到運(yùn)行時(shí)間環(huán)境-包括將文件以及與參考引擎相關(guān)的信息(如果必要,還包括平臺(tái)文件)復(fù)制到適當(dāng)?shù)闹鳈C(jī)機(jī)器。
      實(shí)現(xiàn)本發(fā)明的故障切換基礎(chǔ)結(jié)構(gòu)的示例性示例在配置、部署和運(yùn)行時(shí)間期間采用對(duì)冗余的基于角色的方式。在配置期間將主要/備份角色首先分配到冗余應(yīng)用引擎。簡(jiǎn)要地參照?qǐng)D7,將主要引擎和備份引擎的截然不同的角色并入啟用冗余的應(yīng)用引擎的配置/部署示圖。具體說(shuō)來(lái),對(duì)于被配置以主管一組應(yīng)用對(duì)象的應(yīng)用引擎,應(yīng)用引擎(AppEngine_001)702節(jié)點(diǎn)(代表主要應(yīng)用引擎)枚舉一組應(yīng)用對(duì)象作為應(yīng)用引擎702節(jié)點(diǎn)下的葉。在運(yùn)行時(shí)間環(huán)境下(以下將在這里描述),應(yīng)用對(duì)象僅在活動(dòng)應(yīng)用引擎上執(zhí)行(配置/部署環(huán)境中主要引擎的運(yùn)行時(shí)間類(lèi)似物)。通過(guò)在配置/部署示圖中不顯示應(yīng)用引擎?zhèn)浞?AppEngine_001)704節(jié)點(diǎn)下的應(yīng)用對(duì)象,在圖7中可視地代表備用引擎(配置/部署環(huán)境中備份引擎的運(yùn)行時(shí)間類(lèi)似物)上的應(yīng)用對(duì)象的受限功能/存在。
      部署故障切換引擎對(duì)參照?qǐng)D8,在步驟370期間,一組步驟概括將啟用故障切換的應(yīng)用引擎對(duì)部署到它們各自的主機(jī)。在示例性實(shí)施例中,當(dāng)在步驟370,冗余應(yīng)用引擎被部署到它們各自的平臺(tái)時(shí),在配置期間建立的主要角色和備份角色確定操作的順序。當(dāng)用戶(hù)請(qǐng)求部署主要引擎和備份引擎時(shí),系統(tǒng)確保在部署主要引擎的相關(guān)備份引擎之前,完整地部署主要引擎。這還確保主要引擎將呈現(xiàn)活動(dòng)引擎的角色,備份引擎將首先檢測(cè)操作的活動(dòng)應(yīng)用引擎的存在并獲取備用角色。
      在本發(fā)明的特定實(shí)施例中,在步驟800期間,部署服務(wù)器首先調(diào)用部署命令,所述命令指定與主要應(yīng)用引擎相關(guān)的部署封裝。作為響應(yīng),在步驟802期間,獲取信息,所述信息用于標(biāo)識(shí)平臺(tái)、文件、節(jié)點(diǎn)名稱(chēng)和與主要引擎相關(guān)的應(yīng)用對(duì)象。隨后在步驟804期間,將主要引擎對(duì)象本身以及由主要引擎對(duì)象采用的文件和信息傳送到包含主管主要引擎的平臺(tái)的節(jié)點(diǎn)(如果尚未存在于所述節(jié)點(diǎn)上)。在步驟804期間,在所述節(jié)點(diǎn)上創(chuàng)建并發(fā)起主要引擎對(duì)象。在完成步驟804時(shí),在步驟806期間,將主要引擎的狀態(tài)設(shè)置到“已部署”。在這一點(diǎn)上,沒(méi)有由主要引擎主管的應(yīng)用對(duì)象被部署到主要引擎。相反,在運(yùn)行時(shí)間環(huán)境下執(zhí)行對(duì)應(yīng)用對(duì)象的部署,在所述環(huán)境下,啟用故障切換的應(yīng)用引擎對(duì)之一已獲取“活動(dòng)”運(yùn)行時(shí)間狀態(tài)。
      在示例性實(shí)施例中,通過(guò)首先部署主要引擎隨后部署故障切換應(yīng)用引擎對(duì)的備份引擎來(lái)順序地實(shí)施部署。應(yīng)該將主要應(yīng)用引擎和備份應(yīng)用引擎部署到截然不同的平臺(tái)。在示例性實(shí)施例中,在成功地部署主要引擎之后,部署備份引擎之前,在步驟808,將為主管主要引擎和備份引擎指定的平臺(tái)進(jìn)行比較。如果不同的平臺(tái)被指定,則控制進(jìn)行到步驟810,其中,部署服務(wù)器調(diào)用部署命令,所述部署命令指定與備份應(yīng)用引擎相關(guān)的部署封裝。然后,對(duì)于備份應(yīng)用引擎實(shí)施步驟812和814,所述步驟相應(yīng)于上面描述的步驟802和804。然后,在步驟816,將備份引擎配置狀態(tài)設(shè)置到“已部署”狀態(tài)。備份應(yīng)用引擎如同主要應(yīng)用引擎在完成步驟816時(shí)并不主管任何應(yīng)用對(duì)象??刂齐S后進(jìn)行到“結(jié)束”。
      另一方面,如果在步驟808,相同的平臺(tái)被指定為主管冗余對(duì)(由于單個(gè)平臺(tái)存在于任何機(jī)器上,所以指的是相同聯(lián)網(wǎng)的機(jī)器的等同物)的主要引擎和備份引擎,則控制進(jìn)行到步驟818,其中,部署備份應(yīng)用引擎被繞過(guò),并且注冊(cè)/報(bào)告用于部署冗余故障切換引擎配置的部分成功/失敗??刂齐S后進(jìn)行到“結(jié)束”。
      由IDE 126支持的“解除部署”命令(參見(jiàn)圖7中的對(duì)象菜單下的“解除部署”選項(xiàng))來(lái)促進(jìn)對(duì)故障切換對(duì)的解除部署??赏ㄟ^(guò)每個(gè)引擎的各個(gè)選擇或同時(shí)使用解除部署對(duì)話(huà)中的“解除部署兩者”選項(xiàng)來(lái)解除部署故障切換對(duì)。當(dāng)“解除部署兩者”選項(xiàng)被選擇時(shí),首先對(duì)備用引擎解除部署,然后對(duì)活動(dòng)引擎解除部署。當(dāng)發(fā)生硬件故障而造成故障切換時(shí),用戶(hù)典型地從故障節(jié)點(diǎn)對(duì)啟用故障切換的引擎解除部署,隨后在新的節(jié)點(diǎn)上重新部署所述引擎。用戶(hù)將引擎標(biāo)記為已解除部署,以便將所述引擎重新定位到新的主機(jī)平臺(tái)。當(dāng)故障時(shí)將引擎標(biāo)記為已解除部署的處理應(yīng)用于故障切換對(duì)中的任一引擎。
      步驟380經(jīng)由RMC建立主要引擎與備份引擎之間的連接參照?qǐng)D3,在完成部署步驟370之后,應(yīng)用引擎在運(yùn)行時(shí)間環(huán)境下存在于它們各自的平臺(tái)上,在所述運(yùn)行時(shí)間環(huán)境中,故障切換對(duì)的活動(dòng)引擎和備用引擎彼此通信,并通過(guò)RMC監(jiān)視彼此的狀態(tài)。因此,在步驟380期間,主要應(yīng)用引擎發(fā)出用于連接到它的故障切換備份引擎的請(qǐng)求。在本發(fā)明的實(shí)施例中,經(jīng)由RMC發(fā)出連接請(qǐng)求,并且所述請(qǐng)求在目的地字段(在步驟350期間在主要引擎上所配置的)中包括遠(yuǎn)程伙伴地址(RPA),所述遠(yuǎn)程伙伴地址相應(yīng)于備份引擎的主機(jī)平臺(tái)。源字段標(biāo)識(shí)主管主要引擎的平臺(tái)的物理地址。初始連接請(qǐng)求用于向備份引擎(或備份引擎的主機(jī)平臺(tái))通知RMC上它的主要引擎的物理地址,備份引擎基于在連接請(qǐng)求的源字段中指定的地址來(lái)更新它的RPA屬性。
      步驟390將應(yīng)用對(duì)象和有關(guān)文件部署到活動(dòng)引擎將分配到故障切換應(yīng)用引擎對(duì)的特定引擎的截然不同/區(qū)別的角色并入運(yùn)行時(shí)間環(huán)境中(以下將在這里參照?qǐng)D9描述),在所述運(yùn)行時(shí)間環(huán)境中,每個(gè)故障切換應(yīng)用引擎對(duì)的一個(gè)引擎被分配/獲取“活動(dòng)引擎”的角色,另一引擎被分配/獲取“備用引擎”的角色。故障切換對(duì)的活動(dòng)引擎可以是故障切換引擎對(duì)的主要引擎或備份引擎。然而,在任何時(shí)間,所述兩個(gè)應(yīng)用引擎中僅有一個(gè)可以是活動(dòng)引擎。
      應(yīng)用引擎的當(dāng)前運(yùn)行時(shí)間角色(例如,活動(dòng)或備用)確定將應(yīng)用對(duì)象和有關(guān)部件(例如,文件)提供給主管故障切換引擎對(duì)的應(yīng)用引擎的實(shí)例的平臺(tái)的方式。在步驟390期間,該步驟可出現(xiàn)在主要應(yīng)用引擎可操作之后的任一點(diǎn)(甚至在建立RMC的步驟380之前),將應(yīng)用對(duì)象和有關(guān)部件從配置數(shù)據(jù)庫(kù)/文件存儲(chǔ)庫(kù)經(jīng)由主要網(wǎng)絡(luò)(例如,圖1中的網(wǎng)絡(luò)119)部署到啟用故障切換的對(duì)的活動(dòng)引擎。
      以下概括示例性的步驟序列,所述步驟用于將應(yīng)用對(duì)象和相關(guān)/需要的部件從啟用故障切換的應(yīng)用引擎配置部署到特定活動(dòng)應(yīng)用引擎。響應(yīng)于用于將指定的應(yīng)用對(duì)象部署到啟用故障切換的應(yīng)用引擎對(duì)的指示/命令,確定主要應(yīng)用引擎和備份應(yīng)用引擎兩者的狀態(tài)(例如,活動(dòng)或備用)。然后,獲得節(jié)點(diǎn)的節(jié)點(diǎn)名稱(chēng)(或地址),在所述節(jié)點(diǎn)中駐留有(部署的主要引擎和備份引擎對(duì)的)活動(dòng)應(yīng)用引擎。接著,獲取進(jìn)一步的信息,所述信息涉及節(jié)點(diǎn)、平臺(tái)和活動(dòng)應(yīng)用引擎。此外,獲取指定的應(yīng)用對(duì)象和節(jié)點(diǎn)上的應(yīng)用對(duì)象(將使用應(yīng)用對(duì)象部署的)所需的任何部件(例如,文件)的信息,所述節(jié)點(diǎn)包含將主管部署的應(yīng)用對(duì)象的活動(dòng)應(yīng)用引擎。然后,將標(biāo)識(shí)為支持例示和執(zhí)行活動(dòng)應(yīng)用引擎上的應(yīng)用對(duì)象所需的部件部署到所述節(jié)點(diǎn)。
      在具體實(shí)施例中,對(duì)部署用于例示和執(zhí)行特定活動(dòng)應(yīng)用引擎上的應(yīng)用對(duì)象所需的部件的處理被最優(yōu)化,以標(biāo)識(shí)已經(jīng)存在于主管活動(dòng)應(yīng)用引擎的目標(biāo)平臺(tái)上的部件(例如,文件)。在步驟390期間僅傳送尚未存在于目標(biāo)平臺(tái)上的部件。此外,如果在目標(biāo)主機(jī)引擎上已經(jīng)部署特定應(yīng)用對(duì)象,則將先前加載到與應(yīng)用對(duì)象相關(guān)的節(jié)點(diǎn)上(并且沒(méi)有被其它應(yīng)用對(duì)象使用)的部件從所述節(jié)點(diǎn)解除部署,并且更新所述節(jié)點(diǎn)上的已部署部件(例如,文件)的表,以反映解除部署的部件被去除。然后,將最新的一組與應(yīng)用對(duì)象相關(guān)的部件部署到所述節(jié)點(diǎn)。更新所述節(jié)點(diǎn)上已部署部件的表,以包括加載的部件。
      在接收上述部件(例如,文件)之后,在步驟395期間,活動(dòng)應(yīng)用引擎將應(yīng)用對(duì)象以及有關(guān)部件部署到第二節(jié)點(diǎn),在所述第二節(jié)點(diǎn)上駐留有備用應(yīng)用引擎。在部署期間,活動(dòng)引擎的主機(jī)獲得由備份引擎用于主管應(yīng)用對(duì)象所需的部件的列表。主要引擎經(jīng)由RMC將列出的部件部署到備用引擎。應(yīng)注意到運(yùn)行備用應(yīng)用引擎的平臺(tái)潛在地主管其它應(yīng)用引擎。因此,在步驟390期間,主管備用引擎的節(jié)點(diǎn)潛在地具有例示和執(zhí)行在活動(dòng)引擎上部署的應(yīng)用對(duì)象所需的一組部件中的某些或全部。因此,當(dāng)通過(guò)RMC傳送部件時(shí),發(fā)送方首先確定所需的部件中的哪一些已經(jīng)存在于節(jié)點(diǎn)上,在所述節(jié)點(diǎn)上駐留有備用引擎。在步驟395期間,僅傳送尚未存在于備用引擎的節(jié)點(diǎn)上的部件。
      已經(jīng)描述了啟用故障切換的主機(jī)的配置和部署,更具體地說(shuō),已經(jīng)描述了分級(jí)應(yīng)用環(huán)境中主管一組應(yīng)用對(duì)象的應(yīng)用引擎,將關(guān)注這里描述的故障切換設(shè)備的運(yùn)行時(shí)間方面。在將應(yīng)用引擎部署到它們各自的平臺(tái)之后,在運(yùn)行時(shí)間環(huán)境中,在主機(jī)機(jī)器上,(如果合適)創(chuàng)建,例示并發(fā)起與配置的故障切換引擎對(duì)相關(guān)的對(duì)象實(shí)例(例如,平臺(tái)、應(yīng)用引擎和應(yīng)用對(duì)象),以便實(shí)施與當(dāng)前特定角色(例如,活動(dòng)/備用)和故障切換應(yīng)用引擎對(duì)的每個(gè)伙伴的狀態(tài)(例如,就緒/未就緒)相關(guān)的適當(dāng)運(yùn)行時(shí)間功能。
      如以下所述,一旦部署完畢,應(yīng)用對(duì)象的操作/行為就基本上基于應(yīng)用對(duì)象的主機(jī)應(yīng)用引擎的運(yùn)行時(shí)間狀態(tài)(例如,活動(dòng)或備用)而不同。在示例性實(shí)施例中,并不是操作兩個(gè)等同的主機(jī)(應(yīng)用引擎)副本,而是在運(yùn)行時(shí)間期間,僅是故障切換應(yīng)用引擎對(duì)的活動(dòng)引擎調(diào)用啟動(dòng),并執(zhí)行與一組應(yīng)用對(duì)象相關(guān)的方法。備用應(yīng)用引擎在具有執(zhí)行所述一組應(yīng)用對(duì)象所需的所有必要部件的同時(shí)呈現(xiàn)備用角色,在備用角色中,執(zhí)行預(yù)備操作,所述操作用于執(zhí)行應(yīng)用對(duì)象,但是應(yīng)用對(duì)象的執(zhí)行并不開(kāi)始。
      作為實(shí)例,以下概括應(yīng)用對(duì)象被部署到備用引擎后的操作。在完成步驟395時(shí),備用引擎驗(yàn)證在節(jié)點(diǎn)上安裝運(yùn)行部署的應(yīng)用對(duì)象所需的所有部件(例如,節(jié)點(diǎn)模塊)。在確認(rèn)所有部件實(shí)際存在時(shí),將部署的應(yīng)用對(duì)象添加到由故障切換引擎對(duì)的備用應(yīng)用引擎保存的檢查點(diǎn)文件。在預(yù)備開(kāi)始應(yīng)用對(duì)象時(shí),創(chuàng)建稱(chēng)為基礎(chǔ)運(yùn)行時(shí)間部件服務(wù)器的預(yù)安裝應(yīng)用對(duì)象。與部署的應(yīng)用對(duì)象相關(guān)的基本要素被例示(通過(guò)調(diào)用關(guān)于基本要素的構(gòu)造器)。在每個(gè)基本要素上調(diào)用初始化方法。
      然而,在與備用引擎上的應(yīng)用對(duì)象相關(guān)的基本要素上沒(méi)有調(diào)用與應(yīng)用對(duì)象(例如,啟動(dòng)、執(zhí)行、掃描狀態(tài)、句柄等)的活動(dòng)執(zhí)行相關(guān)的方法。調(diào)用所述與活動(dòng)執(zhí)行應(yīng)用對(duì)象相關(guān)的方法的處理被推遲,直到產(chǎn)生對(duì)于備用引擎的需要,所述備用引擎用于呈現(xiàn)活動(dòng)應(yīng)用引擎角色/狀態(tài)。通過(guò)不啟動(dòng)和執(zhí)行備用引擎上的應(yīng)用對(duì)象,在完成調(diào)用的預(yù)備方法之后,駐留有備用引擎的節(jié)點(diǎn)上的工作量實(shí)質(zhì)上被減少(基于每個(gè)應(yīng)用對(duì)象)。減少的與備用應(yīng)用引擎相關(guān)的穩(wěn)定狀態(tài)的工作量有助于使單個(gè)平臺(tái)/節(jié)點(diǎn)主管多個(gè)備用引擎。
      當(dāng)應(yīng)用引擎從備用角色切換到活動(dòng)角色時(shí),調(diào)用組成每個(gè)被管理的應(yīng)用對(duì)象的基本元素上的啟動(dòng)方法。在示例性實(shí)施例中,將參數(shù)傳遞到啟動(dòng)方法,所述啟動(dòng)方法在故障切換事件的情況下通知基本元素其正在啟動(dòng)。接著,在基本要素上調(diào)用集合掃描狀態(tài)方法。對(duì)象和(目前活動(dòng)的)應(yīng)用引擎的掃描狀態(tài)確定將“真”值還是“假”值傳遞到集合掃描狀態(tài)方法,以確定基本要素將在掃描中(真)還是不在掃描中(假)。在主機(jī)活動(dòng)應(yīng)用引擎的監(jiān)督下,周期性地執(zhí)行與應(yīng)用對(duì)象相關(guān)的所有在掃描中的基本要素。
      相反,當(dāng)活動(dòng)引擎變成備用引擎時(shí),被管理的應(yīng)用對(duì)象回復(fù)到非活動(dòng)的就緒狀態(tài)。具體說(shuō)來(lái),所有應(yīng)用對(duì)象被設(shè)置為不在掃描中。在與應(yīng)用對(duì)象相關(guān)的每個(gè)基本要素上調(diào)用關(guān)閉方法,并且應(yīng)用對(duì)象的執(zhí)行停止。基本要素的界面沒(méi)有被解除,這有助于在應(yīng)用引擎重新獲取故障切換應(yīng)用引擎對(duì)的活動(dòng)角色的情況下的快速啟動(dòng)。
      在示例性實(shí)施例中,通過(guò)狀態(tài)機(jī)來(lái)跟蹤/掌管故障切換對(duì)的每個(gè)伙伴引擎的當(dāng)前/下一角色以及當(dāng)前/下一狀態(tài)。以下描述的圖9概括啟用故障切換的應(yīng)用可占用的故障切換狀態(tài)以及示例性狀態(tài)集合之間的潛在轉(zhuǎn)換。通常,可將狀態(tài)的示例性集合劃分為兩類(lèi)(1)“概要”狀態(tài)和(2)“細(xì)節(jié)”狀態(tài)。在處于概要狀態(tài)時(shí),提供故障切換狀態(tài)信息,所述信息用于確定特定引擎的當(dāng)前一般操作狀態(tài)。在所示實(shí)施例中,概要狀態(tài)包括確定故障切換狀態(tài)900、備用-未就緒狀態(tài)902、備用-就緒狀態(tài)904、以及活動(dòng)狀態(tài)906。在處于細(xì)節(jié)狀態(tài)時(shí),提供(與概要狀態(tài)相比)相對(duì)更加詳細(xì)的信息,所述信息關(guān)于故障切換引擎伙伴的操作狀態(tài)。具體說(shuō)來(lái),細(xì)節(jié)狀態(tài)指示活動(dòng)引擎或備用引擎為什么進(jìn)入特定子狀態(tài)。在所示實(shí)施例中,細(xì)節(jié)狀態(tài)包括備用-與活動(dòng)同步910、備用-同步代碼912、備用-同步數(shù)據(jù)914、備用-丟失的心跳(從活動(dòng)引擎)916以及活動(dòng)-備用不可用(引擎)918。以下將在這里進(jìn)一步描述每一個(gè)細(xì)節(jié)狀態(tài)。
      確定故障切換狀態(tài)900是當(dāng)引擎啟動(dòng)時(shí)啟用故障切換的引擎的狀態(tài)機(jī)的初始狀態(tài)。在處于確定故障切換狀態(tài)900內(nèi)時(shí),具有當(dāng)前確定的狀態(tài)的引擎查詢(xún)故障切換服務(wù),以檢索它的故障切換伙伴的故障切換狀態(tài)。作為響應(yīng),故障切換服務(wù)執(zhí)行以下算法,所述算法嘗試確定引擎的故障切換伙伴的狀態(tài),并最終確定引擎進(jìn)入備用-未就緒狀態(tài)902還是活動(dòng)狀態(tài)906。
      作為示例,故障切換服務(wù)通過(guò)首先嘗試經(jīng)由所述RMC來(lái)聯(lián)系故障切換伙伴來(lái)確定引擎的故障切換伙伴的狀態(tài)。然而,如果無(wú)法在配置的超時(shí)周期內(nèi)(經(jīng)由RMC)獲得故障切換伙伴引擎的狀態(tài),則故障切換服務(wù)嘗試經(jīng)由主要網(wǎng)絡(luò)確定故障切換伙伴引擎的狀態(tài)。如果無(wú)法在配置的超時(shí)周期內(nèi)(經(jīng)由主要網(wǎng)絡(luò))獲得故障切換伙伴引擎的狀態(tài),則開(kāi)始端引擎將假設(shè)無(wú)法到達(dá)故障切換伙伴引擎。在可確定伙伴引擎的狀態(tài)的情況下,故障切換服務(wù)執(zhí)行邏輯,所述邏輯導(dǎo)致故障切換對(duì)中的兩個(gè)引擎中的一個(gè)占用活動(dòng)狀態(tài),另一個(gè)占用備用狀態(tài)。除了伙伴引擎的狀態(tài)(狀態(tài)/子狀態(tài))之外,這種邏輯還考慮伙伴引擎是主要引擎還是備份引擎。以下將在這里描述示例性狀態(tài)選擇情況。
      如果故障切換伙伴引擎無(wú)法達(dá)到確定它的狀態(tài),則所述引擎確定它是否可變?yōu)榛顒?dòng)。在以下情況下,引擎可變?yōu)榛顒?dòng)(1)存在代表引擎的最后已知運(yùn)行狀態(tài)的有效檢查點(diǎn),以及(2)在運(yùn)行引擎的節(jié)點(diǎn)上存在從檢查點(diǎn)恢復(fù)對(duì)象所需的所有節(jié)點(diǎn)模塊。如果引擎無(wú)法變?yōu)榛顒?dòng),則引擎將繼續(xù)嘗試確定它的故障切換伙伴的狀態(tài)。
      引擎保持在確定故障切換狀態(tài)900,直到故障切換服務(wù)建立適當(dāng)?shù)墓收锨袚Q狀態(tài),引擎進(jìn)入活動(dòng)狀態(tài)906或備用-未就緒狀態(tài)902。以下概括脫離確定故障切換狀態(tài)900的通路。如果無(wú)法到達(dá)故障切換伙伴引擎,并且所述引擎可變?yōu)榛顒?dòng),則所述引擎從檢查點(diǎn)恢復(fù)所有被管理的對(duì)象;調(diào)度被管理的對(duì)象以執(zhí)行;將恢復(fù)的對(duì)象置于它們的適當(dāng)掃描狀態(tài),所述狀態(tài)如由標(biāo)識(shí)引擎的最近掃描狀態(tài)的檢查點(diǎn)值所確定的;開(kāi)始執(zhí)行對(duì)象;以及轉(zhuǎn)換到活動(dòng)-備用不可用狀態(tài)918。
      如果已知故障切換伙伴狀態(tài),則引擎進(jìn)入的下一狀態(tài)取決于伙伴的故障切換狀態(tài)。如果伙伴的故障切換狀態(tài)是備用-未就緒狀態(tài)902、備用-與活動(dòng)同步狀態(tài)910或備用-就緒狀態(tài)904中的任何一個(gè),則狀態(tài)機(jī)從確定故障切換狀態(tài)900轉(zhuǎn)換到活動(dòng)狀態(tài)906。另一方面,如果伙伴的故障切換狀態(tài)是活動(dòng)-備用不可用狀態(tài)918、活動(dòng)狀態(tài)906或備用-丟失心跳狀態(tài)916中的任何一個(gè),則狀態(tài)機(jī)從確定狀態(tài)900轉(zhuǎn)換到備用-未就緒狀態(tài)902。如果伙伴引擎的故障切換狀態(tài)是確定故障切換狀態(tài)900,則在伙伴引擎被配置為故障切換對(duì)的備份引擎的情況下,故障切換服務(wù)將指導(dǎo)它的引擎從確定狀態(tài)900轉(zhuǎn)換到活動(dòng)狀態(tài)906。如果伙伴引擎是主要引擎,則引擎的狀態(tài)機(jī)進(jìn)入備用-未就緒狀態(tài)902。
      關(guān)于活動(dòng)狀態(tài)906,當(dāng)已經(jīng)檢測(cè)到活動(dòng)伙伴引擎上的故障切換時(shí),故障切換引擎狀態(tài)機(jī)從備用-就緒狀態(tài)904轉(zhuǎn)換到活動(dòng)狀態(tài)906。在處于活動(dòng)狀態(tài)906內(nèi)時(shí),引擎調(diào)度被管理的應(yīng)用對(duì)象,并將包括檢查點(diǎn)數(shù)據(jù)和訂戶(hù)列表更新的同步更新經(jīng)由RMC傳遞到備用引擎。如果被命令變?yōu)閭溆靡?,則引擎狀態(tài)機(jī)從活動(dòng)狀態(tài)906轉(zhuǎn)換到備用-未就緒狀態(tài)902?;蛘?,如果引擎無(wú)法聯(lián)系伙伴引擎或者與伙伴引擎失去聯(lián)系,則引擎狀態(tài)機(jī)轉(zhuǎn)換到活動(dòng)-備用不可用狀態(tài)918。
      關(guān)于備用-就緒狀態(tài)904,備用引擎在從備用-未就緒狀態(tài)902經(jīng)過(guò)一組中間同步狀態(tài)/階段910、912和914(以下將在這里描述)進(jìn)行轉(zhuǎn)換之后,備用引擎進(jìn)入備用-就緒狀態(tài)904,在所述中間同步狀態(tài)/階段中,代碼和數(shù)據(jù)與活動(dòng)伙伴引擎同步。在處于備用-就緒狀態(tài)904時(shí),應(yīng)用引擎執(zhí)行一組任務(wù),所述任務(wù)不同于由活動(dòng)應(yīng)用引擎執(zhí)行的任務(wù)。
      作為示例,在處于備用-就緒狀態(tài)904時(shí),應(yīng)用引擎監(jiān)視活動(dòng)伙伴引擎的故障(例如,在配置的超時(shí)周期內(nèi)驗(yàn)證通過(guò)主要網(wǎng)絡(luò)和通過(guò)RMC兩者從活動(dòng)引擎接收的心跳)。此外,在處于備用-就緒狀態(tài)904內(nèi)時(shí),備用引擎試圖通過(guò)逐漸增加的更新將特定信息保存為與備用引擎的活動(dòng)伙伴的所述特定信息同步。然而,在某些情況下,并不僅執(zhí)行逐漸增加的更新,而是故障切換對(duì)對(duì)它們的信息執(zhí)行完全的重新同步。在這種情況下,當(dāng)備用引擎被通知它的信息(經(jīng)由RMC更新的)與它的活動(dòng)伙伴失去同步時(shí),備用引擎從備用-就緒狀態(tài)904轉(zhuǎn)換到備用-與活動(dòng)同步狀態(tài)910。備用引擎通過(guò)RMC從活動(dòng)引擎接收同步信息。同步信息包括來(lái)自活動(dòng)引擎的檢查點(diǎn)變量增量/改變。檢查點(diǎn)變量增量是掃描期間檢查點(diǎn)屬性值的改變,所述檢查點(diǎn)屬性值與由活動(dòng)引擎主管的應(yīng)用對(duì)象相關(guān)。檢查點(diǎn)數(shù)據(jù)的示例包括涉及應(yīng)用對(duì)象的配置和調(diào)整信息、告警限制以及在引擎上部署的一組應(yīng)用對(duì)象(包括由應(yīng)用對(duì)象使用的任何需要的代碼/數(shù)據(jù)文件)。備用引擎還確定來(lái)自活動(dòng)引擎的檢查點(diǎn)變量增量是否已丟失,并且備用引擎確保其具有一致的檢查點(diǎn)瞬象。除了上述的檢查點(diǎn)變量增量之外,備用引擎潛在地經(jīng)由RMC從活動(dòng)引擎接收其它同步信息,包括當(dāng)客戶(hù)機(jī)引擎向活動(dòng)引擎預(yù)訂/從活動(dòng)引擎解除預(yù)訂時(shí)的通知、告警狀態(tài)改變(戳記的時(shí)間)和在活動(dòng)引擎的存儲(chǔ)轉(zhuǎn)發(fā)存儲(chǔ)器中放置的歷史塊。
      故障切換應(yīng)用引擎配置的一種預(yù)期的使用涉及向數(shù)據(jù)獲取服務(wù)提供故障切換功能,所述數(shù)據(jù)獲取服務(wù)將數(shù)據(jù)傳送到聯(lián)網(wǎng)的處理管理信息數(shù)據(jù)庫(kù)。在應(yīng)用引擎被配置為管理用于數(shù)據(jù)獲取服務(wù)器的存儲(chǔ)轉(zhuǎn)發(fā)操作的情況下,配置故障切換存儲(chǔ)轉(zhuǎn)發(fā)引擎設(shè)備和保存活動(dòng)引擎的存儲(chǔ)轉(zhuǎn)發(fā)存儲(chǔ)器的副本的處理限制了所述的丟失,當(dāng)發(fā)生故障切換時(shí),所述數(shù)據(jù)被從活動(dòng)引擎的存儲(chǔ)轉(zhuǎn)發(fā)存儲(chǔ)器傳送到歷史數(shù)據(jù)庫(kù)。此外,如果在活動(dòng)引擎處于存儲(chǔ)轉(zhuǎn)發(fā)模式下的同時(shí)發(fā)生故障切換,則備用引擎接管并繼續(xù)處于存儲(chǔ)轉(zhuǎn)發(fā)模式,直到存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)(例如,處理信息數(shù)據(jù)庫(kù))的預(yù)期目的地變得可用。當(dāng)目的地?cái)?shù)據(jù)庫(kù)變得可用時(shí),將由故障引擎獲取的存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)以及接著由當(dāng)前活動(dòng)(先前備用)引擎獲取的存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)轉(zhuǎn)發(fā)到數(shù)據(jù)庫(kù)。
      以下概括了包括存儲(chǔ)轉(zhuǎn)發(fā)功能的活動(dòng)應(yīng)用引擎和備份應(yīng)用引擎的行為。當(dāng)從活動(dòng)引擎到歷史數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)路徑被阻礙/中斷時(shí),存儲(chǔ)轉(zhuǎn)發(fā)功能有助于存儲(chǔ)歷史處理和制造信息。當(dāng)沒(méi)有檢測(cè)到故障時(shí),在啟用故障切換的引擎上與在未啟用故障切換的引擎上同樣地處理歷史數(shù)據(jù)。僅從活動(dòng)引擎將歷史數(shù)據(jù)發(fā)送到歷史數(shù)據(jù)庫(kù)服務(wù)器。當(dāng)數(shù)據(jù)庫(kù)服務(wù)器可用時(shí),活動(dòng)引擎處理歷史數(shù)據(jù)并將其發(fā)送到歷史數(shù)據(jù)庫(kù)服務(wù)器。如果歷史數(shù)據(jù)庫(kù)變得不可用(或者發(fā)送數(shù)據(jù)緩沖器由于緩慢的鏈路而變?yōu)閭浞?,則活動(dòng)引擎在本地存儲(chǔ)歷史數(shù)據(jù),并當(dāng)歷史變得可用時(shí)轉(zhuǎn)發(fā)所述數(shù)據(jù)。應(yīng)注意到在所示的實(shí)施例中,與歷史數(shù)據(jù)庫(kù)的連接的丟失不會(huì)開(kāi)始故障切換。如果活動(dòng)引擎丟失與歷史的連接并且它的備用引擎可連接到歷史,則活動(dòng)引擎進(jìn)入存儲(chǔ)轉(zhuǎn)發(fā)模式,將開(kāi)始經(jīng)由RMC發(fā)送存儲(chǔ)轉(zhuǎn)發(fā)更新,并且不會(huì)進(jìn)行故障切換。
      當(dāng)活動(dòng)應(yīng)用引擎進(jìn)入存儲(chǔ)轉(zhuǎn)發(fā)模式的操作時(shí),活動(dòng)引擎將它的存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)與它的伙伴備用引擎同步。備用引擎從它的活動(dòng)引擎接收它的所有存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)。因此,在通知開(kāi)始于備用模式下時(shí),備用引擎進(jìn)行檢查,以察看其存儲(chǔ)轉(zhuǎn)發(fā)存儲(chǔ)器內(nèi)是否具有數(shù)據(jù)。如果存在這樣的數(shù)據(jù),則將其清空,并且備用引擎在初始數(shù)據(jù)同步階段期間等待來(lái)自它的活動(dòng)伙伴引擎的存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)。
      在本發(fā)明的實(shí)施例中,根據(jù)可配置的重復(fù)周期在活動(dòng)引擎與備用引擎之間執(zhí)行存儲(chǔ)轉(zhuǎn)發(fā)信息同步。作為示例,每30秒將存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)寫(xiě)入活動(dòng)引擎中的存儲(chǔ)器中。每30秒還進(jìn)行對(duì)活動(dòng)/備用引擎之間的存儲(chǔ)轉(zhuǎn)發(fā)存儲(chǔ)器的同步。在這種更新方案下,在引擎故障切換期間僅僅丟失30秒的來(lái)自先前活動(dòng)引擎的存儲(chǔ)轉(zhuǎn)發(fā)信息。
      在故障切換的情況下,激活由備用引擎主管的數(shù)據(jù)獲取服務(wù),并取代由原來(lái)的活動(dòng)引擎主管的數(shù)據(jù)獲取服務(wù)。如果數(shù)據(jù)獲取服務(wù)的先前活動(dòng)引擎處于存儲(chǔ)轉(zhuǎn)發(fā)模式,則新的活動(dòng)引擎將能夠在沒(méi)有連接到歷史的情況下繼續(xù)存儲(chǔ)轉(zhuǎn)發(fā)功能。當(dāng)?shù)綒v史數(shù)據(jù)庫(kù)的連接被恢復(fù)時(shí),將由故障切換對(duì)的任一引擎收集的同樣的存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)從當(dāng)前活動(dòng)引擎轉(zhuǎn)發(fā)到數(shù)據(jù)庫(kù)。
      為了幫助在多次故障期間收集的存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)的管理,并且為了改進(jìn)診斷,應(yīng)用引擎狀態(tài)信息包括概括引擎的當(dāng)前存儲(chǔ)轉(zhuǎn)發(fā)狀態(tài)的屬性。作為示例,屬性指定以下值,所述值指示已經(jīng)為引擎收集存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù),存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)當(dāng)前與備用引擎同步,存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)沒(méi)有與備用引擎同步以及存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)的時(shí)間間隔(由開(kāi)始時(shí)間和結(jié)束時(shí)間標(biāo)識(shí))。
      繼續(xù)描述在備用-就緒狀態(tài)下由引擎執(zhí)行的任務(wù),備用引擎還驗(yàn)證其是否與活動(dòng)引擎同步。在以下情況下備用引擎與它相應(yīng)的活動(dòng)引擎同步(1)在備用節(jié)點(diǎn)上安裝在活動(dòng)引擎的節(jié)點(diǎn)(通過(guò)部署操作指定的)上安裝的文件;(2)存在于活動(dòng)引擎的檢查點(diǎn)文件中的所有檢查點(diǎn)也存在于備用引擎的檢查點(diǎn)文件中;以及(3)備用引擎已驗(yàn)證其沒(méi)有丟失任何變量增量檢查點(diǎn)、告警狀態(tài)改變或歷史塊。在所示的實(shí)施例中,當(dāng)備用引擎驗(yàn)證文件的同步時(shí),其僅考慮作為到活動(dòng)節(jié)點(diǎn)的部署操作的結(jié)果而安裝在活動(dòng)節(jié)點(diǎn)上的文件。在部署操作以外安裝的文件不被考慮。
      存在多個(gè)從備用-就緒狀態(tài)904的出口通路。應(yīng)用引擎狀態(tài)機(jī)響應(yīng)于接收的用于變?yōu)榛顒?dòng)的命令,轉(zhuǎn)換到以上在這里描述的活動(dòng)狀態(tài)906?;蛘?,狀態(tài)機(jī)響應(yīng)于接收的不再與活動(dòng)引擎同步的通知,狀態(tài)機(jī)進(jìn)入備用-與活動(dòng)同步狀態(tài)910。當(dāng)可配置的一組心跳已經(jīng)從活動(dòng)引擎丟失時(shí),另一轉(zhuǎn)換通路將狀態(tài)機(jī)帶入備用-丟失心跳狀態(tài)916。
      關(guān)于備用-未就緒狀態(tài)902,引擎從多個(gè)狀態(tài)中的任何一個(gè)進(jìn)入備用-未就緒狀態(tài)902。在處于備用-同步數(shù)據(jù)狀態(tài)914時(shí),如果備用引擎確定其已從活動(dòng)引擎丟失檢查點(diǎn)和/或告警狀態(tài)改變,則狀態(tài)機(jī)轉(zhuǎn)換到備用-未就緒狀態(tài)902。這種通信故障典型地由RMC中的通信故障造成。然而,所述故障的其它源包括檢查點(diǎn)、告警狀態(tài)以及歷史塊和告警狀態(tài)改變,其中,發(fā)送歷史塊的速度快于備用引擎可處理它們的速度,并且告警狀態(tài)改變被發(fā)送地如此快,以致備用引擎不能足夠快地處理它們。可通過(guò)添加/增加用于經(jīng)由RMC轉(zhuǎn)發(fā)的數(shù)據(jù)的緩沖器的容量來(lái)避免所述故障。
      當(dāng)新的對(duì)象被部署到活動(dòng)引擎時(shí),狀態(tài)機(jī)還轉(zhuǎn)換到備用-未就緒狀態(tài)902。將新的對(duì)象部署到活動(dòng)狀態(tài)906下的引擎促使在活動(dòng)引擎上創(chuàng)建檢查點(diǎn)并且安裝部署的對(duì)象所需的代碼模塊。如果在新的文件需要被安裝在備用引擎上時(shí)狀態(tài)機(jī)處于備用-就緒狀態(tài)904,則狀態(tài)機(jī)轉(zhuǎn)換到備用-未就緒狀態(tài)902(或者,如果已經(jīng)檢測(cè)到活動(dòng)引擎,則直接轉(zhuǎn)換到備用-與活動(dòng)同步狀態(tài)910)。在備用引擎完成同步并進(jìn)入備用-就緒狀態(tài)904之間,如果備用引擎檢測(cè)到經(jīng)由RMC與活動(dòng)引擎的通信丟失,則狀態(tài)機(jī)還從以下?tīng)顟B(tài)中的任何一個(gè)進(jìn)入備用-未就緒狀態(tài)902備用-與活動(dòng)同步狀態(tài)910、備用-同步代碼狀態(tài)912或備用-同步數(shù)據(jù)狀態(tài)914。
      在處于備用-未就緒狀態(tài)902內(nèi)時(shí),備用引擎試圖在成功經(jīng)歷狀態(tài)910、912和914的同時(shí),通過(guò)將代碼模塊和數(shù)據(jù)與活動(dòng)引擎同步來(lái)執(zhí)行最終轉(zhuǎn)換到備用-就緒狀態(tài)904所需的任務(wù)。在所示的本發(fā)明的實(shí)施例中,所述過(guò)程開(kāi)始于在建立經(jīng)由RMC與活動(dòng)引擎的通信之后,從備用-未就緒狀態(tài)902轉(zhuǎn)換到備用-與活動(dòng)同步狀態(tài)910。
      關(guān)于活動(dòng)-備用不可用狀態(tài)918,應(yīng)用引擎狀態(tài)機(jī)從活動(dòng)或備用狀態(tài)轉(zhuǎn)換到活動(dòng)-備用不可用狀態(tài)918。當(dāng)發(fā)送以下同步信息(檢查點(diǎn)變量增量、預(yù)訂通知或告警狀態(tài)改變)時(shí),如果感測(cè)到經(jīng)由RMC與備用引擎的通信故障,則狀態(tài)機(jī)從活動(dòng)狀態(tài)906轉(zhuǎn)換到活動(dòng)-備用不可用狀態(tài)918。將存儲(chǔ)轉(zhuǎn)發(fā)歷史塊發(fā)送到備用引擎的故障不會(huì)導(dǎo)致從活動(dòng)狀態(tài)906轉(zhuǎn)換到備用不可用狀態(tài)918。
      活動(dòng)引擎周期性地從它相應(yīng)的備用引擎接收心跳。如果用于從備用引擎接收心跳的(可配置)時(shí)間周期屆滿(mǎn),則活動(dòng)引擎狀態(tài)機(jī)從活動(dòng)狀態(tài)906轉(zhuǎn)換到活動(dòng)-備用不可用狀態(tài)918。此外,在本發(fā)明的實(shí)施例中,心跳是狀態(tài)良好的平臺(tái)/節(jié)點(diǎn)的指示符,因此,不會(huì)將多個(gè)心跳從主管多個(gè)備用引擎的平臺(tái)發(fā)送到主管相應(yīng)活動(dòng)引擎的節(jié)點(diǎn)。相反,將一個(gè)心跳消息從主管多個(gè)備用引擎的平臺(tái)發(fā)送到主管相應(yīng)活動(dòng)引擎的平臺(tái)。從具有備用引擎的節(jié)點(diǎn)Y發(fā)送到具有活動(dòng)引擎的節(jié)點(diǎn)X的心跳的頻率是用于部署到節(jié)點(diǎn)X的所有活動(dòng)引擎的最小配置的超時(shí),其中,所述節(jié)點(diǎn)X具有部署到節(jié)點(diǎn)Y的備用引擎?;蛘撸谛奶庠谥甘久總€(gè)引擎的狀態(tài)的情況下,為每個(gè)故障切換引擎發(fā)出分離的心跳。在這樣的實(shí)例中,在主管多個(gè)備用引擎的第一平臺(tái)與主管相應(yīng)的活動(dòng)引擎的第二引擎之間發(fā)出多個(gè)心跳。
      如果活動(dòng)引擎經(jīng)由RMC接收備用引擎不可用的通知,則應(yīng)用引擎狀態(tài)機(jī)從活動(dòng)狀態(tài)906轉(zhuǎn)換到活動(dòng)-備用不可用狀態(tài)918。當(dāng)發(fā)生這種轉(zhuǎn)換時(shí)的示例包括當(dāng)備用引擎關(guān)閉并不再運(yùn)行時(shí)。
      如果備用引擎丟失了經(jīng)由RMC來(lái)自活動(dòng)引擎的可配置數(shù)量的連續(xù)心跳(造成備用引擎的狀態(tài)機(jī)首先從就緒狀態(tài)904轉(zhuǎn)換到丟失心跳狀態(tài)916),則備用引擎的狀態(tài)機(jī)從備用-丟失心跳狀態(tài)916轉(zhuǎn)換到活動(dòng)-備用不可用狀態(tài)918,并且獨(dú)立的監(jiān)視器發(fā)出命令到備用引擎,以變?yōu)榛顒?dòng)。以下將在這里進(jìn)一步討論對(duì)活動(dòng)引擎的故障的監(jiān)視。
      在處于活動(dòng)-備用不可用狀態(tài)918時(shí),活動(dòng)應(yīng)用引擎主管應(yīng)用對(duì)象的執(zhí)行,所述應(yīng)用對(duì)象在掃描中被部署到應(yīng)用引擎。活動(dòng)應(yīng)用引擎周期性地進(jìn)行檢查,以查看是否可經(jīng)由RMC聯(lián)系備用引擎。因?yàn)闆](méi)有備用引擎,所以無(wú)法將活動(dòng)應(yīng)用引擎手動(dòng)切換到備用(因?yàn)槿鄙佼?dāng)前備用引擎)。此外,活動(dòng)應(yīng)用引擎將不再試圖將典型傳遞的檢查點(diǎn)變量增量(改變)、預(yù)訂通知、告警狀態(tài)改變和存儲(chǔ)轉(zhuǎn)發(fā)歷史數(shù)據(jù)塊經(jīng)由RMC發(fā)送到備用引擎。
      如果與可操作的相應(yīng)備用引擎重新建立了連接,則狀態(tài)機(jī)從活動(dòng)-備用不可用狀態(tài)918轉(zhuǎn)換到活動(dòng)狀態(tài)906。
      關(guān)于備用-丟失心跳狀態(tài)916,如果在配置的超時(shí)周期內(nèi)備用引擎沒(méi)有從活動(dòng)伙伴的故障切換服務(wù)經(jīng)由RMC或主要網(wǎng)絡(luò)接收到心跳(例如,通過(guò)心跳超時(shí)限制參數(shù)值和連續(xù)丟失的心跳參數(shù)值確定),則備用引擎從備用-就緒狀態(tài)904轉(zhuǎn)換到備用-丟失心跳狀態(tài)916。與將心跳從備用節(jié)點(diǎn)發(fā)送到活動(dòng)節(jié)點(diǎn)的配置一致,將單個(gè)心跳從主管多個(gè)活動(dòng)引擎的節(jié)點(diǎn)發(fā)送到主管它們的相應(yīng)備用引擎的另一節(jié)點(diǎn)。從活動(dòng)節(jié)點(diǎn)X上的活動(dòng)引擎的故障切換服務(wù)發(fā)送到備用節(jié)點(diǎn)Y的心跳的重復(fù)周期是部署到節(jié)點(diǎn)X的所有活動(dòng)引擎的最小配置的超時(shí),其中,所述節(jié)點(diǎn)X具有部署到節(jié)點(diǎn)Y的備用引擎。促使轉(zhuǎn)換到備用-丟失心跳狀態(tài)916的其它潛在事件包括活動(dòng)引擎故障或掛起(由通過(guò)單獨(dú)的超時(shí)機(jī)制的活動(dòng)引擎的故障切換服務(wù)來(lái)確定,參見(jiàn)以下描述的活動(dòng)引擎超時(shí)1140);以及活動(dòng)引擎適度地關(guān)閉。在后者的實(shí)例中,備用引擎將被通知其將轉(zhuǎn)換到活動(dòng)-備用不可用狀態(tài)918。
      在處于備用-丟失心跳狀態(tài)916內(nèi)時(shí),執(zhí)行邏輯,以確定備用引擎為什么丟失心跳以及用于備用引擎的狀態(tài)機(jī)將轉(zhuǎn)換到活動(dòng)模式的操作還是保持在備用模式下(轉(zhuǎn)換到備用-就緒狀態(tài)904或備用-未就緒狀態(tài)902)。參照?qǐng)D10,參照?qǐng)D10,在步驟1000期間,用于備用引擎的故障切換服務(wù)檢查/監(jiān)視通過(guò)主要網(wǎng)絡(luò)和RMC兩者(例如,圖1的網(wǎng)絡(luò)119和鏈路140)來(lái)自活動(dòng)引擎的心跳。在步驟1002,如果已丟失經(jīng)由RMC發(fā)送的當(dāng)前配置的數(shù)量的連續(xù)心跳,則控制進(jìn)行到步驟1004。在步驟1004,故障切換服務(wù)確定是否可經(jīng)由主要網(wǎng)絡(luò)到達(dá)活動(dòng)引擎的節(jié)點(diǎn)。如果可經(jīng)由主要網(wǎng)絡(luò)到達(dá)活動(dòng)引擎的節(jié)點(diǎn),則假設(shè)RMC鏈路關(guān)閉,并且控制進(jìn)行到步驟1006,其中,引擎的狀態(tài)機(jī)進(jìn)入備用-未就緒狀態(tài)902。
      否則,如果在步驟1004無(wú)法到達(dá)活動(dòng)引擎,則控制進(jìn)行到步驟1007。在步驟1007,如果無(wú)法經(jīng)由主要網(wǎng)絡(luò)到達(dá)至少一個(gè)其它節(jié)點(diǎn),則在備用引擎的主機(jī)中可能存在通信問(wèn)題,控制進(jìn)行到步驟1006,并且狀態(tài)機(jī)進(jìn)入備用-未就緒狀態(tài)902。如果可經(jīng)由主要網(wǎng)絡(luò)到達(dá)至少一個(gè)其它節(jié)點(diǎn),則執(zhí)行進(jìn)一步的測(cè)試,以確定當(dāng)前活動(dòng)引擎是否出現(xiàn)故障,由此,控制進(jìn)行到步驟1008。在步驟1008,如果另一平臺(tái)節(jié)點(diǎn)可訪(fǎng)問(wèn)活動(dòng)引擎的節(jié)點(diǎn),則假設(shè)活動(dòng)引擎仍舊可用(并且問(wèn)題在于備用引擎的節(jié)點(diǎn)),控制進(jìn)行到步驟1006。否則,如果在步驟1008沒(méi)有節(jié)點(diǎn)可以看到活動(dòng)引擎的節(jié)點(diǎn),則故障很可能源于活動(dòng)引擎的節(jié)點(diǎn)。因此,控制進(jìn)行到步驟1010,其中,備用引擎進(jìn)入活動(dòng)引擎節(jié)點(diǎn)。因?yàn)榧僭O(shè)故障切換伙伴在服務(wù)之外,所以在步驟1010期間,狀態(tài)機(jī)從備用-丟失心跳狀態(tài)916轉(zhuǎn)換到活動(dòng)-備用不可用狀態(tài)918。
      返回步驟1002,如果經(jīng)由RMC發(fā)送的當(dāng)前配置的數(shù)量的連續(xù)心跳沒(méi)有丟失,則控制進(jìn)行到步驟1020,其中,故障切換服務(wù)檢查經(jīng)由主要網(wǎng)絡(luò)發(fā)送的心跳是否已丟失。如果可配置數(shù)量的心跳沒(méi)有丟失,則控制進(jìn)行到步驟1006,并且備用引擎進(jìn)入備用-未就緒狀態(tài)(由于不存在明顯的支持活動(dòng)引擎與備用引擎之間的通信的RMC連接的問(wèn)題)。
      然而,如果經(jīng)由主要網(wǎng)絡(luò)的連續(xù)心跳已丟失,則控制進(jìn)行到步驟1020到步驟1022。在步驟1022,執(zhí)行連接測(cè)試,以確定活動(dòng)引擎和備用引擎是否可經(jīng)由主要網(wǎng)絡(luò)到達(dá)至少一個(gè)其它平臺(tái)。然后,在步驟1024,如果活動(dòng)引擎的節(jié)點(diǎn)可經(jīng)由主要網(wǎng)絡(luò)到達(dá)至少一個(gè)平臺(tái),則控制進(jìn)行到步驟1026。在步驟1026,如果備用節(jié)點(diǎn)可經(jīng)由主要網(wǎng)絡(luò)到達(dá)至少一個(gè)其它平臺(tái),則假設(shè)在主管活動(dòng)引擎和備用引擎的節(jié)點(diǎn)之間存在主要網(wǎng)絡(luò)方面的連接問(wèn)題。因此,控制從步驟1026進(jìn)行到步驟1028,并且備用引擎的狀態(tài)機(jī)進(jìn)入備用-就緒狀態(tài)904。否則,在主管備用引擎的節(jié)點(diǎn)與所有其它節(jié)點(diǎn)之間明顯地存在連接問(wèn)題,控制從步驟1026進(jìn)行到步驟1006,并且狀態(tài)機(jī)從備用-丟失心跳狀態(tài)916轉(zhuǎn)換到備用-未就緒狀態(tài)902。
      返回步驟1024,如果活動(dòng)引擎的節(jié)點(diǎn)無(wú)法到達(dá)主要網(wǎng)絡(luò)上的任何其它節(jié)點(diǎn),則控制進(jìn)行到步驟1030。在步驟1030,如果可從備用節(jié)點(diǎn)經(jīng)由主要網(wǎng)絡(luò)到達(dá)至少一個(gè)節(jié)點(diǎn),則活動(dòng)引擎的主要網(wǎng)絡(luò)適配器明顯地出現(xiàn)故障,備用引擎應(yīng)該接管出故障的活動(dòng)引擎以服務(wù)于來(lái)自應(yīng)用引擎的客戶(hù)機(jī)的請(qǐng)求。因此,控制從步驟1030進(jìn)行到步驟1032。在步驟1032,指示當(dāng)前活動(dòng)引擎進(jìn)入備用模式,命令備用引擎進(jìn)入活動(dòng)模式??刂齐S后從步驟1032進(jìn)行到步驟1010。否則,如果備用節(jié)點(diǎn)甚至無(wú)法經(jīng)由主要網(wǎng)絡(luò)到達(dá)一個(gè)節(jié)點(diǎn),則控制從步驟1030進(jìn)行到步驟1006。
      返回圖9,將一系列狀態(tài)與經(jīng)由RMC將備用引擎和它相應(yīng)的活動(dòng)伙伴引擎同步相關(guān)。當(dāng)通過(guò)備用引擎的主機(jī)經(jīng)由RMC檢測(cè)到活動(dòng)引擎時(shí),從備用-未就緒狀態(tài)902進(jìn)入備用-與活動(dòng)同步狀態(tài)910。如先前所述,備份/備用引擎不會(huì)經(jīng)由主要網(wǎng)絡(luò)接收用于支持應(yīng)用對(duì)象的代碼模塊,而是經(jīng)由RMC從主要/活動(dòng)引擎接收所述代碼模塊。在位于備用-與活動(dòng)同步狀態(tài)910時(shí),備用應(yīng)用引擎將它的代碼模塊與活動(dòng)引擎同步。因此,沒(méi)有存在于活動(dòng)引擎上的備用引擎上的任何代碼模塊被卸載,沒(méi)有安裝在備用引擎上的活動(dòng)引擎上的任何代碼模塊被安裝在備用引擎的節(jié)點(diǎn)上。一旦代碼模塊被同步,狀態(tài)機(jī)轉(zhuǎn)換到備用-同步代碼狀態(tài)912。
      在位于備用-同步代碼狀態(tài)912內(nèi)時(shí),備用引擎將它的檢查點(diǎn)數(shù)據(jù)和其它瞬象信息與活動(dòng)引擎同步,所述其它瞬象信息包括訂戶(hù)信息。所述同步包括在不存在于活動(dòng)引擎中的備用引擎的記錄中刪除檢查點(diǎn)數(shù)據(jù)(包括對(duì)象信息)或訂戶(hù)信息;以及將檢查點(diǎn)數(shù)據(jù)(包括對(duì)象信息)或訂戶(hù)信息添加到存在于活動(dòng)引擎上而不存在于備用引擎上的備用引擎的記錄。如果在狀態(tài)機(jī)處于備用-同步代碼狀態(tài)912的同時(shí)通過(guò)RMC的通信丟失,則狀態(tài)機(jī)轉(zhuǎn)換到備用-未就緒狀態(tài)902。然而,在成功完成對(duì)對(duì)象信息、檢查點(diǎn)數(shù)據(jù)和訂戶(hù)喜訊你的同步時(shí),狀態(tài)機(jī)轉(zhuǎn)換到備用-同步數(shù)據(jù)狀態(tài)914。在操作于備用-同步數(shù)據(jù)狀態(tài)914內(nèi)時(shí),備用應(yīng)用引擎完成它的數(shù)據(jù)同步處理(例如,根據(jù)傳送的同步信息來(lái)更新數(shù)據(jù)庫(kù)和目錄),并轉(zhuǎn)換到備用-就緒狀態(tài)904。然而,如果在狀態(tài)機(jī)處于備用-同步數(shù)據(jù)狀態(tài)914的同時(shí),主要引擎與備用引擎之間的通信丟失,則狀態(tài)機(jī)轉(zhuǎn)換到備用-未就緒狀態(tài)902。
      在操作于故障切換模式下時(shí),活動(dòng)引擎和備用引擎通過(guò)告警保持對(duì)彼此狀態(tài)的認(rèn)識(shí)。以下在這里提供對(duì)掌管轉(zhuǎn)換和狀態(tài)機(jī)的操作中的各種告警狀態(tài)和它們的角色的概要。
      以下是與故障切換相關(guān)的各種告警,當(dāng)備用引擎和活動(dòng)引擎在先前描述的故障切換狀態(tài)之間進(jìn)行轉(zhuǎn)換時(shí),報(bào)告所述告警。對(duì)報(bào)告的所有告警的告警描述包含引擎故障切換伙伴的節(jié)點(diǎn)名稱(chēng)、可應(yīng)用情況下的概要狀態(tài)和細(xì)節(jié)狀態(tài)、報(bào)告告警的引擎的節(jié)點(diǎn)名稱(chēng)和報(bào)告告警的引擎的名稱(chēng)。為了簡(jiǎn)化表1,僅標(biāo)識(shí)概要狀態(tài)。從先前狀態(tài)到當(dāng)前狀態(tài)或當(dāng)前子狀態(tài)的任何轉(zhuǎn)換將導(dǎo)致發(fā)生所述告警。
      表1

      關(guān)于備用未就緒告警,活動(dòng)引擎經(jīng)由RMC監(jiān)視備用引擎的狀態(tài),以確定何時(shí)提出表1中提到的告警。此外,如果活動(dòng)引擎處于備用不可用狀態(tài),則不產(chǎn)生所述告警。
      表2概括每當(dāng)產(chǎn)生故障切換時(shí)報(bào)告的告警。
      表2


      除了上述告警之外,將提供通過(guò)RMC丟失的連續(xù)心跳和通過(guò)主要網(wǎng)絡(luò)丟失的連續(xù)心跳,作為可由用戶(hù)擴(kuò)展的屬性,以便需要時(shí)報(bào)告告警。
      簡(jiǎn)要地參照?qǐng)D11,標(biāo)識(shí)一組定時(shí)器/顯示,其與故障切換引擎相關(guān)。采用這些定時(shí)器以確保適當(dāng)?shù)馗櫣收锨袚Q引擎對(duì)以及所述故障切換引擎對(duì)通過(guò)其通信的網(wǎng)絡(luò)和主機(jī)的狀態(tài)。當(dāng)引擎試圖經(jīng)由主要網(wǎng)絡(luò)(例如,網(wǎng)絡(luò)119)確定它的故障切換伙伴的狀態(tài)時(shí),作為實(shí)例,由引擎在確定故障切換狀態(tài)900的同時(shí)使用主要網(wǎng)絡(luò)通信超時(shí)1100。主要網(wǎng)絡(luò)超時(shí)是可以獨(dú)立配置的,并且作為可在配置時(shí)間和運(yùn)行時(shí)間修改的屬性存在的。
      作為實(shí)例,由活動(dòng)引擎在處于活動(dòng)狀態(tài)906時(shí)使用備用引擎心跳超時(shí)1110,以確定活動(dòng)引擎是否已丟失經(jīng)由RMC與備用引擎的通信。心跳超時(shí)在運(yùn)行時(shí)間和配置時(shí)間兩者均是可從活動(dòng)引擎來(lái)配置的,心跳超時(shí)被部署到活動(dòng)引擎,持續(xù)到引擎重新啟動(dòng),并被分配2秒的默認(rèn)值。
      作為示例,由備用引擎在處于備用-就緒狀態(tài)904時(shí)使用活動(dòng)引擎心跳超時(shí)1120,以確定備用引擎是否丟失了經(jīng)由RMC來(lái)自它的故障切換伙伴的心跳。如果在由活動(dòng)引擎心跳超時(shí)指定的時(shí)間周期內(nèi)備用引擎沒(méi)有經(jīng)由RMC從它的活動(dòng)引擎伙伴接收到心跳,則注冊(cè)丟失的心跳(并且備用引擎轉(zhuǎn)換到備用-丟失心跳狀態(tài)916)?;顒?dòng)引擎心跳超時(shí)在配置時(shí)間和運(yùn)行時(shí)間兩者均是可從活動(dòng)引擎來(lái)配置的,所述心跳超時(shí)持續(xù)到引擎重新啟動(dòng),并被分配5秒的默認(rèn)值。
      丟失的連續(xù)心跳限制1130指定經(jīng)由主要網(wǎng)絡(luò)或RMC在活動(dòng)引擎與備用引擎之間丟失的連續(xù)數(shù)量的心跳(在備用-丟失心跳狀態(tài)916期間采用)。丟失的連續(xù)心跳限制在配置時(shí)間和運(yùn)行時(shí)間可從活動(dòng)引擎來(lái)配置,其持續(xù)到引擎重新啟動(dòng),并具有2秒的默認(rèn)值。默認(rèn)值2意味著必須連續(xù)丟失2個(gè)心跳,才導(dǎo)致丟失的心跳的連續(xù)數(shù)量條件變?yōu)椤罢妗辈⒃斐晒收锨袚Q。丟失單個(gè)心跳使得備用引擎的狀態(tài)機(jī)進(jìn)入備用-丟失心跳狀態(tài)916。
      活動(dòng)引擎超時(shí)限制1140指定超時(shí)周期,在所述超時(shí)周期內(nèi),活動(dòng)引擎必須通知它的故障切換服務(wù)活動(dòng)引擎仍然可操作,其中,所述故障切換服務(wù)運(yùn)行在與活動(dòng)引擎相同的平臺(tái)上。如果超過(guò)所述超時(shí)周期,則系統(tǒng)將確定活動(dòng)引擎已發(fā)生故障或刮起,并開(kāi)始故障切換順序,其中,命令配置故障切換的引擎的備用伙伴變?yōu)榛顒?dòng),將與故障切換有關(guān)的事件通知客戶(hù)機(jī)/訂戶(hù)?;顒?dòng)引擎超時(shí)限制在配置和運(yùn)行時(shí)間期間可配置,其持續(xù)到引擎重新啟動(dòng),并在基本要素規(guī)范中指定默認(rèn)值。
      預(yù)訂引擎節(jié)點(diǎn)連接超時(shí)1150指定由備用-丟失心跳過(guò)錯(cuò)解析方案(見(jiàn)圖10)用來(lái)等待來(lái)自節(jié)點(diǎn)的響應(yīng)以確定它們是否能夠看到活動(dòng)引擎的周期,其中,所述節(jié)點(diǎn)將引擎預(yù)訂到活動(dòng)引擎。預(yù)訂引擎節(jié)點(diǎn)連接超時(shí)在配置和運(yùn)行時(shí)間可配置,其持續(xù)到引擎重新啟動(dòng),并且在基本要素規(guī)范中指定默認(rèn)值。
      檢測(cè)影響客戶(hù)機(jī)/訂戶(hù)的活動(dòng)引擎故障故障切換主機(jī)對(duì)的運(yùn)行時(shí)間操作的另一方面在于可靠地檢測(cè)活動(dòng)主機(jī)故障,并確保當(dāng)故障切換發(fā)生時(shí),客戶(hù)機(jī)/訂戶(hù)及時(shí)地重新連接到(先前的)備用主機(jī)。以下將在這里描述監(jiān)視方案,其減少與監(jiān)視活動(dòng)主機(jī)的操作狀態(tài)相關(guān)的通信負(fù)載,同時(shí)保持了較高的可信度,從而當(dāng)活動(dòng)主機(jī)停止作用時(shí),檢測(cè)到故障,并且出現(xiàn)故障的活動(dòng)主機(jī)的客戶(hù)機(jī)很快地重新連接到故障切換對(duì)的(先前的)備用主機(jī)。
      感測(cè)引擎/主機(jī)故障的第一方面涉及檢測(cè)當(dāng)前駐留有活動(dòng)主機(jī)的節(jié)點(diǎn)的故障。一種監(jiān)視節(jié)點(diǎn)的狀態(tài)的方式為使用心跳。然而,心跳消耗網(wǎng)絡(luò)資源并占用計(jì)算資源。因此,在示例性實(shí)施例中,對(duì)于心跳的預(yù)期接收方限制與節(jié)點(diǎn)狀態(tài)相關(guān)的心跳。心跳沒(méi)有被公布者(例如,應(yīng)用引擎)發(fā)送到客戶(hù)機(jī)/訂戶(hù)。例如,心跳沒(méi)有被發(fā)送到車(chē)間場(chǎng)所顯像應(yīng)用實(shí)例,所述實(shí)例預(yù)訂關(guān)于由引擎主管的應(yīng)用對(duì)象的標(biāo)簽。在客戶(hù)機(jī)/訂戶(hù)和公布者處于不同節(jié)點(diǎn)的情況下,在主管公布者(引擎)和有關(guān)客戶(hù)機(jī)/訂戶(hù)的節(jié)點(diǎn)(平臺(tái))之間發(fā)送心跳。當(dāng)節(jié)點(diǎn)期待心跳而在配置的時(shí)間周期內(nèi)沒(méi)有接收到心跳時(shí),則監(jiān)視機(jī)制假設(shè)節(jié)點(diǎn)或它的網(wǎng)絡(luò)適配器出現(xiàn)故障,并且兩個(gè)節(jié)點(diǎn)之間的網(wǎng)絡(luò)通路出現(xiàn)故障。在運(yùn)行時(shí)間和配置時(shí)間兩者可在平臺(tái)上配置兩個(gè)節(jié)點(diǎn)之間的心跳發(fā)送率(在運(yùn)行時(shí)間,限制到具有調(diào)整允許的用戶(hù)),所述心跳發(fā)送率持續(xù)到平臺(tái)重新啟動(dòng),最小值為250毫秒,并且默認(rèn)值為2500毫秒。
      當(dāng)丟失可配置數(shù)量的連續(xù)心跳時(shí),感測(cè)到差錯(cuò)。由主管感興趣的活動(dòng)引擎的節(jié)點(diǎn)丟失的連續(xù)心跳的數(shù)量可在運(yùn)行時(shí)間和配置時(shí)間兩者在平臺(tái)上進(jìn)行配置(在運(yùn)行時(shí)間限制到具有調(diào)整允許的用戶(hù));所述連續(xù)心跳的數(shù)量持續(xù)到平臺(tái)重新啟動(dòng);并具有默認(rèn)值2。如果來(lái)自節(jié)點(diǎn)的配置數(shù)量的連續(xù)心跳丟失,則假設(shè)節(jié)點(diǎn)出現(xiàn)故障,其中,從所述節(jié)點(diǎn)期待心跳,并且通過(guò)駐留在它們的主機(jī)節(jié)點(diǎn)上的監(jiān)視服務(wù)向期待來(lái)自所述故障節(jié)點(diǎn)的數(shù)據(jù)的所有客戶(hù)機(jī)通知假設(shè)的故障。
      感測(cè)引擎/主機(jī)故障的第二方面涉及檢測(cè)引擎本身的故障(在它的主機(jī)節(jié)點(diǎn)/平臺(tái)沒(méi)有停止的情況下)。不同于使用心跳,單獨(dú)的監(jiān)視處理確定特定引擎對(duì)于各種情況不再可用,并將其通知給客戶(hù)機(jī)。所述情況的示例包括當(dāng)應(yīng)用引擎停止,出現(xiàn)故障(例如,意外地碰撞)或掛起時(shí)(即,盡管在操作中,但是沒(méi)有接收由駐留有應(yīng)用引擎的平臺(tái)傳遞給它的消息/響應(yīng)于所述消息)。
      參照?qǐng)D12,步驟序列概括與監(jiān)視并響應(yīng)于活動(dòng)應(yīng)用引擎故障相關(guān)的階段的程序,其通過(guò)將服務(wù)客戶(hù)機(jī)/訂戶(hù)的消息收發(fā)基礎(chǔ)結(jié)構(gòu)(例如,WONDERWARE的INTOUCH人機(jī)接口)通知給位于其它網(wǎng)絡(luò)節(jié)點(diǎn)的引擎,從而用于客戶(hù)機(jī).訂戶(hù)的消息收發(fā)基礎(chǔ)結(jié)構(gòu)可采取用于更新數(shù)據(jù)連接的步驟以參考故障切換引擎配置的(先前的)備用伙伴??傊?,并不是依賴(lài)發(fā)送周期性心跳到每個(gè)客戶(hù)機(jī),而是在與活動(dòng)引擎相同的機(jī)器上執(zhí)行的單獨(dú)處理監(jiān)視活動(dòng)引擎的狀態(tài)。當(dāng)檢測(cè)到活動(dòng)引擎的故障時(shí),監(jiān)視處理通知備用引擎的故障切換服務(wù)。然后,故障切換服務(wù)向到達(dá)被故障切換的引擎的服務(wù)客戶(hù)機(jī)/訂戶(hù)的消息收發(fā)基礎(chǔ)結(jié)構(gòu)通知新的活動(dòng)引擎的狀態(tài)。
      在階段1200期間,單獨(dú)執(zhí)行的監(jiān)視處理(例如,在計(jì)算系統(tǒng)上的引導(dǎo)處理,在所述計(jì)算系統(tǒng)上運(yùn)行應(yīng)用引擎)監(jiān)視活動(dòng)應(yīng)用引擎的狀態(tài)。監(jiān)視處理根據(jù)時(shí)間間隔從活動(dòng)應(yīng)用引擎接收周期性的通知。所述間隔可在運(yùn)行時(shí)間和配置時(shí)間兩者對(duì)于每個(gè)引擎分別進(jìn)行配置。然而,運(yùn)行時(shí)間配置不會(huì)限制到具有調(diào)整允許的用戶(hù),所述間隔持續(xù)到引擎重新啟動(dòng)。由在相同節(jié)點(diǎn)上操作的處理來(lái)監(jiān)視引擎的狀態(tài)與經(jīng)由心跳分別通知客戶(hù)機(jī)引擎的狀態(tài)的方案相比,減少了網(wǎng)絡(luò)工作量。
      在階段1210期間,監(jiān)視處理檢測(cè)活動(dòng)應(yīng)用引擎已停止,碰撞或掛起。作為響應(yīng),在階段1220,監(jiān)視處理開(kāi)始通知備用引擎先前的活動(dòng)引擎不可操作。作為示例,監(jiān)視處理通知它自己的機(jī)器上的故障切換服務(wù),所述機(jī)器反過(guò)來(lái)通知(經(jīng)由RMC)與備用引擎相同的平臺(tái)上的故障切換服務(wù)備用引擎變?yōu)榛顒?dòng)。
      在階段1225期間,備用引擎上的故障切換服務(wù)采用先前經(jīng)由RMC傳遞的訂戶(hù)/客戶(hù)機(jī)信息,向用于出現(xiàn)故障的引擎的每個(gè)客戶(hù)機(jī)/訂戶(hù)的消息收發(fā)基礎(chǔ)結(jié)構(gòu)(例如,本地消息交換-LMX)發(fā)出活動(dòng)引擎故障通知?;顒?dòng)引擎故障通知消息標(biāo)識(shí)故障引擎(通過(guò)句柄)、新的活動(dòng)引擎(通過(guò)句柄)和時(shí)間周期,在所述時(shí)間周期內(nèi),新的活動(dòng)引擎將完成啟動(dòng)。
      在步驟1230,備用引擎從備用-就緒狀態(tài)904轉(zhuǎn)換到活動(dòng)狀態(tài)906(見(jiàn)圖9)。作為示例,故障切換服務(wù)更新備用引擎的狀態(tài),以反映所述引擎正轉(zhuǎn)換到活動(dòng)狀態(tài)(在圖9中,從備用-就緒904到活動(dòng)906的狀態(tài)轉(zhuǎn)換)。然后,故障切換服務(wù)指導(dǎo)備用引擎開(kāi)始在活動(dòng)狀態(tài)下運(yùn)行(例如,調(diào)用關(guān)于它被管理的每個(gè)應(yīng)用對(duì)象的啟動(dòng)方法等)。當(dāng)活動(dòng)引擎的啟動(dòng)程序完成時(shí),當(dāng)先的活動(dòng)應(yīng)用引擎通知故障切換服務(wù)。作為響應(yīng),故障切換服務(wù)更新“轉(zhuǎn)換”引擎的狀態(tài),以反映所述引擎目前活動(dòng)(見(jiàn)活動(dòng)狀態(tài)906)并執(zhí)行它被管理的應(yīng)用引擎。
      然后,在步驟1240,用于目前的活動(dòng)(先前備用的)引擎的故障切換服務(wù)采用先前經(jīng)由RMC傳遞的訂戶(hù)/客戶(hù)機(jī)信息,通知用于訂戶(hù)/客戶(hù)機(jī)(例如,INTOUCH車(chē)間/處理顯像應(yīng)用)的消息收發(fā)基礎(chǔ)結(jié)構(gòu)(例如,LMX)先前備用的引擎是目前的活動(dòng)伙伴。到達(dá)服務(wù)預(yù)訂客戶(hù)機(jī)的消息收發(fā)基礎(chǔ)結(jié)構(gòu)的活動(dòng)狀態(tài)通知消息包括目前的活動(dòng)引擎的引擎標(biāo)識(shí)(通過(guò)句柄)和“活動(dòng)”狀態(tài)標(biāo)識(shí)符。
      然后,在步驟1250,在對(duì)客戶(hù)機(jī)/訂戶(hù)完全透明的情況下,消息收發(fā)基礎(chǔ)結(jié)構(gòu)對(duì)于受新的活動(dòng)引擎的改變影響的所有參考更新它們的路由表。由與故障切換對(duì)的新的活動(dòng)引擎上的參考相應(yīng)的句柄來(lái)代替先前與故障引擎相關(guān)的每個(gè)數(shù)據(jù)/屬性參考的消息交換句柄。接著,在不改變由客戶(hù)機(jī)/訂戶(hù)使用的任何參考串的情況下(即,在客戶(hù)機(jī)透明的情況下),將與故障活動(dòng)引擎的所有數(shù)據(jù)預(yù)訂重新路由/連接到新的活動(dòng)引擎。
      在以上描述的基于角色的冗余引擎布置中,主要引擎和備份引擎在由截然不同的物理平臺(tái)主管的同時(shí),被看作全局/統(tǒng)一名稱(chēng)空間內(nèi)的單個(gè)邏輯實(shí)體(例如,對(duì)在引擎對(duì)伙伴上主管的對(duì)象/屬性的客戶(hù)機(jī)參考不會(huì)在構(gòu)成故障切換引擎對(duì)的兩個(gè)實(shí)體之間進(jìn)行區(qū)分)。將相同的名稱(chēng)分配到故障切換對(duì)的主要引擎和備份引擎兩者,并且由基于它們的當(dāng)前角色/狀態(tài)執(zhí)行的操作來(lái)區(qū)分所述引擎。因此,冗余引擎的客戶(hù)機(jī)/訂戶(hù)向邏輯上啟用故障切換的引擎實(shí)體發(fā)出它們的請(qǐng)求,其中,所述實(shí)體包括主要引擎和備份引擎兩者。消息收發(fā)和命名服務(wù)在完全不知曉客戶(hù)機(jī)的情況下,以透明方式將參考/名稱(chēng)串解析為啟用故障切換的引擎對(duì)的當(dāng)前活動(dòng)應(yīng)用引擎的標(biāo)識(shí)符。這潛在地導(dǎo)致對(duì)于以下的流線(xiàn)型處理切換故障切換對(duì)中的活動(dòng)服務(wù)器/公布者引擎,以及將應(yīng)用引擎對(duì)象重新定位到網(wǎng)絡(luò)內(nèi)的新的平臺(tái)。
      在接收到備用引擎目前在活動(dòng)狀態(tài)下運(yùn)行的通知時(shí),作為示例,消息收發(fā)部件(例如,消息交換機(jī))將一組三種不同類(lèi)型的對(duì)屬性的參考從故障引擎切換到新的活動(dòng)引擎。
      監(jiān)督參考-包括對(duì)以下的參考修改屬性(不遵循安全性的監(jiān)督設(shè)置),監(jiān)視屬性的改變(監(jiān)督在預(yù)訂情況下所得到的)以及從屬性檢索數(shù)據(jù)(監(jiān)督在沒(méi)有預(yù)訂的情況下所得到的)。
      用戶(hù)參考-包括對(duì)以下的參考修改屬性(與遵循安全性的登陸用戶(hù)相關(guān)的用戶(hù)設(shè)置),監(jiān)視屬性的改變(用戶(hù)在預(yù)訂情況下所得到的),從屬性檢索數(shù)據(jù)(用戶(hù)在沒(méi)有預(yù)訂的情況下所得到的)以及預(yù)綁定參考。
      系統(tǒng)參考-包括對(duì)以下的參考修改屬性(諸如與系統(tǒng)信息的全局網(wǎng)絡(luò)存儲(chǔ)庫(kù)/數(shù)據(jù)庫(kù)相關(guān)的系統(tǒng)設(shè)置),監(jiān)視屬性的改變(系統(tǒng)在預(yù)訂情況下所得到的)以及從屬性檢索數(shù)據(jù)(系統(tǒng)在沒(méi)有預(yù)訂的情況下所得到的)。
      在示例性實(shí)施例中,切換參考的處理對(duì)于消息交換客戶(hù)機(jī)是透明的。客戶(hù)機(jī)采用來(lái)自全局名稱(chēng)空間(由全局名稱(chēng)表125保存)的獨(dú)立于位置的名稱(chēng),以參考與啟用故障切換的應(yīng)用引擎相關(guān)的屬性。結(jié)果,當(dāng)發(fā)生故障切換到不同網(wǎng)絡(luò)節(jié)點(diǎn)上的備用引擎時(shí),沒(méi)有由客戶(hù)機(jī)使用的參考名稱(chēng)發(fā)生改變(由于參考名稱(chēng)可等同地應(yīng)用于激活的主要應(yīng)用引擎或備份應(yīng)用引擎)。
      當(dāng)先前備用的引擎開(kāi)始作為活動(dòng)引擎操作之后,客戶(hù)機(jī)接收用于預(yù)訂的數(shù)據(jù)更新,其包含關(guān)于新激活的引擎的屬性的當(dāng)前值。如果當(dāng)客戶(hù)機(jī)引擎接收到活動(dòng)引擎的故障的通知時(shí)與客戶(hù)機(jī)引擎接收到備用引擎已變?yōu)榛顒?dòng)的通知時(shí)之間的變量增量/延遲時(shí)間超過(guò)配置的限制,則與所有參考的屬性相關(guān)的數(shù)據(jù)的質(zhì)量將被設(shè)置為“差”,直到從新激活的引擎接收到數(shù)據(jù)更新為止。配置的限制(具有15秒的默認(rèn)值)可在運(yùn)行時(shí)間和配置時(shí)間對(duì)于全局名稱(chēng)空間的范圍內(nèi)的所有引擎可配置,并且持續(xù)到引擎重新啟動(dòng)。
      全局名稱(chēng)空間/重新定位活動(dòng)引擎通過(guò)對(duì)應(yīng)用引擎進(jìn)行基于名稱(chēng)的訪(fǎng)問(wèn)將上述故障切換引擎配置和部署結(jié)構(gòu)與全局/統(tǒng)一名稱(chēng)空間集成,所述名稱(chēng)空間支持網(wǎng)絡(luò)位置獨(dú)立。通過(guò)獨(dú)立于位置的名稱(chēng)來(lái)標(biāo)識(shí)引擎。在全局名稱(chēng)空間中,由名稱(chēng)服務(wù)將參考從獨(dú)立于物理位置的參考解析到網(wǎng)絡(luò)地址。在這種情況下,當(dāng)引擎重新定位時(shí),僅需要向名稱(chēng)服務(wù)通知用于命名的引擎的新地址。與重新定位的引擎相關(guān)的名稱(chēng)/參考獨(dú)立于位置,因此,當(dāng)將引擎移動(dòng)到網(wǎng)絡(luò)內(nèi)的新平臺(tái)時(shí),所述名稱(chēng)/參考不會(huì)改變。由重新定位的應(yīng)用引擎的客戶(hù)機(jī)通過(guò)提交到命名服務(wù)的重新綁定請(qǐng)求來(lái)建立與重新定位的應(yīng)用引擎的聯(lián)系。
      參照?qǐng)D13,概括配置數(shù)據(jù)庫(kù)接口,其在處理控制和制造信息系統(tǒng)環(huán)境下,有助于主機(jī)(例如,支持一組應(yīng)用對(duì)象的應(yīng)用引擎)中的上述故障切換功能。
      IFialOverConfiguration接口1300是用于創(chuàng)建故障切換主機(jī)(例如,應(yīng)用引擎對(duì))的主要接口。IFailOverConfiguration接口1300包括一組方法,所述方法包括CreateBackupEngine方法1310。CreateBackupEngine方法1310在配置數(shù)據(jù)庫(kù)124中創(chuàng)建備份故障切換引擎。如果成功的話(huà),則CreateBackupEngine方法1310將指針/參考返回到用于新創(chuàng)建的備份引擎對(duì)象的標(biāo)識(shí)。DeleteBackupEngine方法1320從配置數(shù)據(jù)庫(kù)124中刪除先前創(chuàng)建的備份故障切換引擎對(duì)象。在應(yīng)用引擎的配置期間,如果用戶(hù)沒(méi)有檢查啟用冗余檢查欄404,則調(diào)用DeleteBackupEngine方法1320,GetBackupEngine方法1330將參考返回備份引擎對(duì)象。ValidateHostedEngines方法1340使分配到標(biāo)識(shí)的平臺(tái)的所有應(yīng)用引擎生效(檢查它們的配置)。
      IPackageManager接口1350作為管理配置數(shù)據(jù)庫(kù)124內(nèi)的對(duì)象封裝的一般接口包括GetFailOverPartnerId方法1360。GetFailOverPartnerId方法1360接收作為輸入的故障切換伙伴引擎對(duì)象的標(biāo)識(shí)。GetFailOverPartnerId方法1360將參考返回伙伴引擎對(duì)象。ObjectStatus方法1370返回與應(yīng)用引擎的目前狀態(tài)相應(yīng)的一組狀態(tài)位。示例性狀態(tài)喜訊你包括所述對(duì)象是否是模板、隱藏、被檢驗(yàn)、未決更新、部署、主要引擎、備份引擎和啟用故障切換。
      根據(jù)可應(yīng)用本發(fā)明的原理的許多可行實(shí)施例,應(yīng)該認(rèn)識(shí)到在這里參照附圖描述的實(shí)施例僅僅是示例性的,不應(yīng)被看作對(duì)本發(fā)明的范圍的限制。此外,可在不脫離本發(fā)明的情況下修改、補(bǔ)充和/或重新排序所示的步驟。因此,如這里所述的發(fā)明包括可落入所附權(quán)利要求及其等同物的范圍的所有那些實(shí)施例。
      權(quán)利要求
      1.一種在監(jiān)督處理控制數(shù)據(jù)獲取應(yīng)用運(yùn)行時(shí)間環(huán)境中用于在啟用冗余的主機(jī)的數(shù)據(jù)獲取客戶(hù)機(jī)的故障切換主機(jī)伙伴之間保持透明性的方法,所述方法包括步驟在名稱(chēng)解析表內(nèi)進(jìn)行存儲(chǔ),所述名稱(chēng)解析表用于將獨(dú)立于位置的參考名稱(chēng)映射到網(wǎng)絡(luò)位置特定的地址;將獨(dú)立于位置的名稱(chēng)分配到啟用冗余的主機(jī),所述主機(jī)包括活動(dòng)主機(jī)伙伴和備用主機(jī)伙伴;以及為啟用冗余的主機(jī)的每個(gè)客戶(hù)機(jī)提供消息收發(fā)基礎(chǔ)結(jié)構(gòu),其中,所述消息收發(fā)基礎(chǔ)結(jié)構(gòu)維護(hù)名稱(chēng),所述名稱(chēng)用于客戶(hù)機(jī)對(duì)于啟用冗余的主機(jī)上的預(yù)訂數(shù)據(jù)的每個(gè)參考的地址翻譯,從而不必考慮哪個(gè)啟用冗余的主機(jī)伙伴當(dāng)前活動(dòng),而將相同的名稱(chēng)用于參考啟用冗余的主機(jī)上的數(shù)據(jù)。
      2.如權(quán)利要求1所述的方法,還包括由消息收發(fā)基礎(chǔ)結(jié)構(gòu)接收通知啟用冗余的主機(jī)的備用伙伴目前是活動(dòng)伙伴;以及響應(yīng)于接收到通知,用與目前為活動(dòng)伙伴的備用伙伴相應(yīng)的位置特定地址來(lái)更新以下位置特定地址,該位置特定地址在名稱(chēng)解析表內(nèi)與分配到啟用冗余的主機(jī)的獨(dú)立于位置的參考名稱(chēng)相應(yīng)。
      3.如權(quán)利要求2所述的方法,其中,在相同計(jì)算節(jié)點(diǎn)上分別作為備用主機(jī)操作的故障切換服務(wù)向消息收發(fā)基礎(chǔ)結(jié)構(gòu)發(fā)出所述通知。
      4.如權(quán)利要求1所述的方法,其中,消息收發(fā)基礎(chǔ)結(jié)構(gòu)包括本地消息交換機(jī)。
      5.如權(quán)利要求4所述的方法,其中,對(duì)關(guān)于啟用冗余的主機(jī)的屬性的客戶(hù)機(jī)參考包括監(jiān)督參考。
      6.如權(quán)利要求4所述的方法,其中,對(duì)關(guān)于啟用冗余的主機(jī)的屬性的客戶(hù)機(jī)參考包括用戶(hù)參考。
      7.如權(quán)利要求4所述的方法,其中,對(duì)關(guān)于啟用冗余的主機(jī)的屬性的客戶(hù)機(jī)參考包括系統(tǒng)參考。
      8.如權(quán)利要求1所述的方法,其中,消息收發(fā)基礎(chǔ)結(jié)構(gòu)確定在指定的周期內(nèi)是否完成到先前備用的主機(jī)伙伴的故障切換,如果備用伙伴變?yōu)榛顒?dòng)所過(guò)去的周期超過(guò)指定的周期,則指明對(duì)數(shù)據(jù)客戶(hù)機(jī)的警告。
      9.如權(quán)利要求1所述的方法,其中,獨(dú)立于位置的參考名稱(chēng)在由消息收發(fā)基礎(chǔ)結(jié)構(gòu)覆蓋的網(wǎng)絡(luò)范圍內(nèi)是唯一的。
      10.如權(quán)利要求1所述的方法,其中,啟用冗余的主機(jī)包括主管一組應(yīng)用對(duì)象的應(yīng)用引擎,所述應(yīng)用對(duì)象僅在啟用冗余的主機(jī)的活動(dòng)主機(jī)上執(zhí)行。
      11.一種在監(jiān)督處理控制數(shù)據(jù)獲取應(yīng)用運(yùn)行時(shí)間環(huán)境中用于在啟用冗余的主機(jī)的數(shù)據(jù)獲取客戶(hù)機(jī)的故障切換主機(jī)伙伴之間保持透明性的系統(tǒng),所述系統(tǒng)包括名稱(chēng)解析表,用于將獨(dú)立于位置的參考名稱(chēng)映射到網(wǎng)絡(luò)位置特定的地址;分配到啟用冗余的主機(jī)的獨(dú)立于位置的名稱(chēng),所述主機(jī)包括活動(dòng)主機(jī)伙伴和備用主機(jī)伙伴;以及服務(wù)于啟用冗余的主機(jī)的每個(gè)客戶(hù)機(jī)的消息收發(fā)基礎(chǔ)結(jié)構(gòu),其中,所述消息收發(fā)基礎(chǔ)結(jié)構(gòu)維護(hù)名稱(chēng),所述名稱(chēng)用于客戶(hù)機(jī)對(duì)于啟用冗余的主機(jī)上的預(yù)訂數(shù)據(jù)的每個(gè)參考的地址翻譯,從而不必考慮哪個(gè)啟用冗余的主機(jī)伙伴當(dāng)前活動(dòng),而將相同的名稱(chēng)用于參考啟用冗余的主機(jī)上的數(shù)據(jù)。
      12.如權(quán)利要求11所述的系統(tǒng),還包括在消息收發(fā)結(jié)構(gòu)內(nèi),有助于以下操作的可執(zhí)行程序部件由消息收發(fā)基礎(chǔ)結(jié)構(gòu)接收通知啟用冗余的主機(jī)的備用伙伴目前是活動(dòng)伙伴;以及響應(yīng)于接收到通知,用與目前為活動(dòng)伙伴的備用伙伴相應(yīng)的位置特定地址來(lái)更新以下位置特定地址,該位置特定地址在名稱(chēng)解析表內(nèi)與分配到啟用冗余的主機(jī)的獨(dú)立于位置的參考名稱(chēng)相應(yīng)。
      13.如權(quán)利要求12所述的系統(tǒng),其中,在相同計(jì)算節(jié)點(diǎn)上分別作為備用主機(jī)操作的故障切換服務(wù)向消息收發(fā)基礎(chǔ)結(jié)構(gòu)發(fā)出所述通知。
      14.如權(quán)利要求11所述的系統(tǒng),其中,消息收發(fā)基礎(chǔ)結(jié)構(gòu)包括本地消息交換機(jī)。
      15.如權(quán)利要求14所述的系統(tǒng),其中,對(duì)關(guān)于啟用冗余的主機(jī)的屬性的客戶(hù)機(jī)參考包括監(jiān)督參考。
      16.如權(quán)利要求14所述的系統(tǒng),其中,對(duì)關(guān)于啟用冗余的主機(jī)的屬性的客戶(hù)機(jī)參考包括用戶(hù)參考。
      17.如權(quán)利要求14所述的系統(tǒng),其中,對(duì)關(guān)于啟用冗余的主機(jī)的屬性的客戶(hù)機(jī)參考包括系統(tǒng)參考。
      18.如權(quán)利要求11所述的系統(tǒng),還包括數(shù)據(jù)質(zhì)量管理邏輯,其確定在指定的周期內(nèi)是否完成到先前備用的主機(jī)伙伴的故障切換,如果備用伙伴變?yōu)榛顒?dòng)所過(guò)去的周期超過(guò)指定的周期,則指明對(duì)數(shù)據(jù)客戶(hù)機(jī)的警告。
      19.如權(quán)利要求11所述的系統(tǒng),其中,獨(dú)立于位置的參考名稱(chēng)在由消息收發(fā)基礎(chǔ)結(jié)構(gòu)覆蓋的網(wǎng)絡(luò)范圍內(nèi)是唯一的。
      20.如權(quán)利要求11所述的系統(tǒng),其中,啟用冗余的主機(jī)包括主管一組應(yīng)用對(duì)象的應(yīng)用引擎,所述應(yīng)用對(duì)象僅在啟用冗余的主機(jī)的活動(dòng)主機(jī)上執(zhí)行。
      全文摘要
      公開(kāi)一種在監(jiān)督處理控制數(shù)據(jù)獲取應(yīng)用運(yùn)行時(shí)間環(huán)境中用于在啟用冗余的主機(jī)的數(shù)據(jù)獲取客戶(hù)機(jī)的故障切換主機(jī)伙伴之間提供透明性的系統(tǒng)。所述系統(tǒng)包括名稱(chēng)解析表,用于將獨(dú)立于位置的參考名稱(chēng)映射到網(wǎng)絡(luò)位置特定的地址。將獨(dú)立于位置的名稱(chēng)分配到啟用冗余的主機(jī),所述主機(jī)包括活動(dòng)主機(jī)伙伴和備用主機(jī)伙伴。消息收發(fā)基礎(chǔ)結(jié)構(gòu)服務(wù)于啟用冗余的主機(jī)的客戶(hù)機(jī)。所述消息收發(fā)基礎(chǔ)結(jié)構(gòu)維護(hù)名稱(chēng),所述名稱(chēng)用于客戶(hù)機(jī)對(duì)于啟用冗余的主機(jī)上的預(yù)訂數(shù)據(jù)的每個(gè)參考的地址翻譯,從而不必考慮哪個(gè)啟用冗余的主機(jī)伙伴當(dāng)前活動(dòng),將相同的名稱(chēng)用于參考啟用冗余的主機(jī)上的數(shù)據(jù)。
      文檔編號(hào)G05B19/418GK101095089SQ200580038851
      公開(kāi)日2007年12月26日 申請(qǐng)日期2005年9月13日 優(yōu)先權(quán)日2004年9月16日
      發(fā)明者約翰·約瑟夫·克拉耶維斯基三世, 德里克·C.·瓊斯, 阿貝吉特·馬努斯赫, 道格拉斯·P.·凱恩 申請(qǐng)人:因文西斯系統(tǒng)公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1