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