管理并簡化分布式應(yīng)用的制作方法
【專利摘要】分布式實(shí)例系統(tǒng)管理各實(shí)例以及各實(shí)例之間的通信。該分布式實(shí)例系統(tǒng)向各實(shí)例提供有限的一組通信方法?;谒褂玫耐ㄐ欧椒ǖ念愋停摲植际綄?shí)例系統(tǒng)知道各實(shí)例所發(fā)送的消息并且可作出關(guān)于如何處理這些消息的決策。在消息交換中所涉及的實(shí)例之一結(jié)束時(shí),主機(jī)使用它對消息交換類型的知識來確定是否丟棄該消息、丟棄該消息的回復(fù)、和/或向尚存的實(shí)例發(fā)送出錯(cuò)消息。一實(shí)例可按樹類結(jié)構(gòu)來創(chuàng)建一個(gè)或多個(gè)子實(shí)例。狀態(tài)數(shù)據(jù)從各子實(shí)例沿該樹向上傳遞,并被聚集在父實(shí)例中??筛鶕?jù)所聚集的狀態(tài)數(shù)據(jù)來生成監(jiān)視數(shù)據(jù)。
【專利說明】管理并簡化分布式應(yīng)用
【背景技術(shù)】
[0001]大型分布式應(yīng)用管理起來很復(fù)雜。具體而言,需要大量的手動(dòng)干預(yù)來處理分布式通信的不可靠性質(zhì)。對于可運(yùn)行交換數(shù)百萬消息的數(shù)百萬進(jìn)程的非常大規(guī)模的應(yīng)用而言,這一問題惡化。傳統(tǒng)上,這些大規(guī)模應(yīng)用需要來自系統(tǒng)管理員的人類干預(yù)來手動(dòng)地補(bǔ)償和糾正出現(xiàn)故障的進(jìn)程。另外,這些應(yīng)用需要支持這一干預(yù)的廣泛的基礎(chǔ)結(jié)構(gòu),如死信隊(duì)列和掛起進(jìn)程報(bào)告。
[0002]例如在兩個(gè)應(yīng)用(如業(yè)務(wù)進(jìn)程的兩個(gè)組件)交換消息時(shí),問題會發(fā)生。這些應(yīng)用可通過中介來交換消息。發(fā)送實(shí)例可要求對發(fā)送給目的地實(shí)例的消息的響應(yīng)。然而,如果目的地實(shí)例在接收到該消息之前結(jié)束,則該消息將處于中介中。結(jié)果,發(fā)送實(shí)例從未接收到響應(yīng),并且因此變得停止。當(dāng)大型分布式應(yīng)用運(yùn)行數(shù)百萬進(jìn)程時(shí),數(shù)千不可路由的消息可在中介中聚集。系統(tǒng)管理員必須手動(dòng)清理這些不可路由的消息并重啟停止的進(jìn)程。對于極大型分布式應(yīng)用而言,規(guī)模變得過大,以致人類操作員無法管理這些不可路由的消息、停止的進(jìn)程以及類似問題。
[0003]這些問題不只是大型應(yīng)用的問題,而是也出現(xiàn)在小型應(yīng)用中。另外,在使用經(jīng)中介的消息收發(fā)時(shí)以及在使用相關(guān)的單向點(diǎn)對點(diǎn)消息收發(fā)時(shí),這些問題產(chǎn)生。其他大規(guī)模場景,如大量小型托管應(yīng)用,也可能需要解決這些問題。
[0004]概述
[0005]提供本概述以便以簡化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本概述并不旨在標(biāo)識所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。
[0006]本解決方案通過向系統(tǒng)開發(fā)者提供允許將各應(yīng)用表示為多個(gè)實(shí)例的增強(qiáng)的分布式實(shí)例系統(tǒng)而降低了管理開銷。各實(shí)例只通過有限的一組消息交換模式來通信。該系統(tǒng)知曉所有各單獨(dú)實(shí)例和這些實(shí)例中的每一個(gè)的壽命。通過將實(shí)例壽命意識與有限的消息交換模式的組合,該系統(tǒng)可以做出關(guān)于如何處理故障的適當(dāng)決策。這創(chuàng)建了極低成本的編程平臺,甚至適用于通常沒有活動(dòng)人類管理角色的最終用戶應(yīng)用。另外,該分布式實(shí)例系統(tǒng)提供了用于創(chuàng)建極大型系統(tǒng)的理想平臺,該極大型系統(tǒng)利用消息收發(fā)系統(tǒng)中內(nèi)在的最終一致性,針對分布式事務(wù)的缺少進(jìn)行了優(yōu)化,并且具有多承租人、高密度云計(jì)算的可伸縮性要求。
[0007]該分布式實(shí)例系統(tǒng)可被實(shí)現(xiàn)成執(zhí)行環(huán)境、分布式運(yùn)行時(shí)、分布式管理環(huán)境、分布式管理和執(zhí)行系統(tǒng)、或提供實(shí)例的壽命管理的其他平臺。該系統(tǒng)可被實(shí)現(xiàn)在單個(gè)機(jī)器上或可被虛擬化在多個(gè)機(jī)器、服務(wù)器或處理器上。
[0008]各實(shí)例包括行為和相關(guān)聯(lián)的狀態(tài)的組合。應(yīng)用的狀態(tài)可被分解成一系列實(shí)例,其中各單獨(dú)的實(shí)例表示該應(yīng)用的問題域的具體人工產(chǎn)物。各實(shí)例可與其他實(shí)例通信。各實(shí)例可具有顯式的壽命,如顯式的開始和結(jié)束。各實(shí)例在該系統(tǒng)中的存在和壽命可以是外部可見的并且可在外部進(jìn)行管理。
[0009]各實(shí)施例可以使用實(shí)例管理器,該實(shí)例管理器擔(dān)當(dāng)分布式實(shí)例系統(tǒng)中的增強(qiáng)的中介,用于管理各實(shí)例之間的通信。在現(xiàn)有系統(tǒng)中,中介管理各通信,但不知道各應(yīng)用所使用的消息交換模式。在本發(fā)明的系統(tǒng)中,與先前分布式系統(tǒng)中可用的實(shí)例通信知識相比,實(shí)例管理器具有更多的實(shí)例通信知識。另外,該實(shí)例管理器知道各實(shí)例的壽命并且可以基于對實(shí)例壽命的這一知識來管理通信。例如,實(shí)例管理器可以管理兩個(gè)實(shí)例A和B之間的通信。實(shí)例A向?qū)嵗鼴發(fā)送消息,并且包括與該消息有關(guān)的可被實(shí)例管理器用來作出關(guān)于該消息的決策的信息。例如,實(shí)例A可以將該消息標(biāo)識為請求-回復(fù)交換的第一局。
[0010]在傳統(tǒng)的中介系統(tǒng)中,如果實(shí)例A在接收到來自實(shí)例B的回復(fù)之前結(jié)束,則回復(fù)消息將被保持在死信隊(duì)列中。網(wǎng)絡(luò)管理員將必須從死信隊(duì)列中手動(dòng)地清除該回復(fù)消息。在極大規(guī)模應(yīng)用的情況下,死信隊(duì)列中可存在數(shù)千消息,并且人類網(wǎng)絡(luò)管理員將必須分析并消除這些消息中的每一個(gè)。另外,在大量應(yīng)用的情況下,可存在要按此方式手動(dòng)地監(jiān)視和維護(hù)的數(shù)千消息隊(duì)列。
[0011]在本文公開的系統(tǒng)的各實(shí)施例中,該分布式實(shí)例系統(tǒng)具有與消息交換有關(guān)的信息一即,它是請求-回復(fù)。因此,該實(shí)例管理器可以基于消息的預(yù)期使用來作出與如何處理消息有關(guān)的決策。如果分布式實(shí)例系統(tǒng)知道該消息是請求-回復(fù)交換的回復(fù)部分,并且發(fā)出請求的實(shí)例A已完成或不再對該回復(fù)感興趣,則該分布式實(shí)例系統(tǒng)可以只是消除該回復(fù)消息而非嘗試將它遞送給實(shí)例A。因?yàn)閷?shí)例A已完成,所以它不關(guān)心或需要從實(shí)例B接收該回復(fù)消息,因?yàn)樗鼘⒑唵蔚貙⒃撓⒆鳛樵肼暥鴣G棄。
[0012]類似地,如果實(shí)例B在接收到來自A的請求消息之前已完成,則該分布式實(shí)例系統(tǒng)(它具有與該消息交換有關(guān)的信息)可作出關(guān)于實(shí)例管理器應(yīng)當(dāng)如何處理該請求消息的決策。并非堅(jiān)持該請求消息作為不可遞送的信和/或繼續(xù)嘗試遞送給實(shí)例B,實(shí)例管理器可向?qū)嵗鼳發(fā)送出錯(cuò)消息。實(shí)例A可具有消息出錯(cuò)處理智能,使得它可以處理請求消息的失敗,而無需停止或等待來自實(shí)例B的回復(fù)(該回復(fù)將永遠(yuǎn)不會到達(dá))。
[0013]在一個(gè)實(shí)施例中,增強(qiáng)的分布式實(shí)例系統(tǒng)管理各實(shí)例,知曉各實(shí)例的壽命,并且提供各實(shí)例之間的有限的一組消息交換模式。通過利用該有限的一組消息交換模式,該系統(tǒng)可以消除或降低對用戶管理的需求。請求-回復(fù)消息允許各實(shí)例之間可靠的異步請求-回復(fù)通信。此外,對話是用于支持各實(shí)例之間可靠且異步的全雙工消息收發(fā)交換模式的一種機(jī)制。
[0014]分布式實(shí)例系統(tǒng)可以將各實(shí)例構(gòu)造成一個(gè)或多個(gè)分層結(jié)構(gòu)樹。這允許該系統(tǒng)凝聚性地管理各狀態(tài)并且降低管理開銷。各實(shí)例組織成分層結(jié)構(gòu)樹使得能夠降低與管理極大型分布式應(yīng)用中的各實(shí)例相關(guān)聯(lián)的管理復(fù)雜度。例如,大型業(yè)務(wù)進(jìn)程可包括多個(gè)異步業(yè)務(wù)事務(wù)。各實(shí)例的分層組織使得能夠管理該大型業(yè)務(wù)進(jìn)程。另外,各實(shí)例可被組織以在必要時(shí)提供隔離來保護(hù)業(yè)務(wù)進(jìn)程信息。程序可被分成可高度并行化的多個(gè)可分布的狀態(tài)。此外,各實(shí)例的處理邏輯定義可以是后期綁定的和獨(dú)立地版本化的。
[0015]該系統(tǒng)運(yùn)行各應(yīng)用實(shí)例并向這些實(shí)例提供有限的一組消息交換模式。存儲設(shè)備保持實(shí)例狀態(tài)和消息。存儲設(shè)備可在物理上位于一個(gè)或多個(gè)機(jī)器中,分布在一個(gè)或多個(gè)進(jìn)程上。實(shí)例管理器支持這些有限的消息交換模式。
[0016]該有限的一組消息交換模式允許該系統(tǒng)設(shè)備標(biāo)識可被消除而無需用戶干預(yù)的消息。該有限的一組消息交換模式允許各實(shí)例交換異步請求和回復(fù)消息。實(shí)例管理器基于交換中所涉及的各實(shí)例的壽命來標(biāo)識應(yīng)被消除的請求和回復(fù)消息。[0017]各實(shí)例可被組織成分層結(jié)構(gòu),其中一個(gè)實(shí)例擔(dān)當(dāng)創(chuàng)建和/或管理一個(gè)或多個(gè)子實(shí)例的父實(shí)例。該分層結(jié)構(gòu)可具有多個(gè)層,其中子實(shí)例生成它們自己的子實(shí)例并且因此也作為父實(shí)例來操作。子實(shí)例可向它們相應(yīng)的父實(shí)例發(fā)送狀態(tài)報(bào)告。每一父實(shí)例在將所聚集的狀態(tài)報(bào)告?zhèn)鬟f給更高層父實(shí)例之前聚集來自它們相應(yīng)的子實(shí)例的狀態(tài)報(bào)告。在任何層處聚集的狀態(tài)報(bào)告可被傳遞給管理入口。
[0018]各實(shí)例可包括監(jiān)視實(shí)例。攜帶健康和狀態(tài)信息的監(jiān)視消息可通過實(shí)例樹被向上傳播。在根層或在較低層處的監(jiān)視實(shí)例可收集監(jiān)視消息。各實(shí)例可被組織成提供封裝端到端進(jìn)程的監(jiān)視信息的同構(gòu)視圖。
[0019]對話是分布式實(shí)例系統(tǒng)所跟蹤的兩個(gè)實(shí)例之間的成對關(guān)聯(lián)。對話可通過涉及這兩個(gè)參與實(shí)例的握手來建立。握手由該分布式實(shí)例系統(tǒng)來協(xié)調(diào)。在參與對話的一實(shí)例已結(jié)束時(shí),通知參與該對話的另一實(shí)例。任一實(shí)例可顯式地終止對話,或通過終止自己從而隱式地終止所有它相關(guān)聯(lián)的對話。在一實(shí)例終止對話時(shí),通知該對話中的另一實(shí)例。在各實(shí)例具有父-子關(guān)系時(shí),創(chuàng)建對話。這一對話是創(chuàng)建子實(shí)例的父實(shí)例的副作用。在子實(shí)例完成時(shí),父-子對話結(jié)束。在父-子關(guān)系之外,一實(shí)例可以通過使用該分布式實(shí)例系統(tǒng)所協(xié)調(diào)的握手過程登記對另一實(shí)例的壽命的興趣,來發(fā)起對話。對話是由該基礎(chǔ)結(jié)構(gòu)維護(hù)并理解的雙方成對關(guān)系。之后,對話被建立,它是對稱的。在一方結(jié)束對話時(shí),通知另一方。父-子是對話的一特定使用。父實(shí)例創(chuàng)建子實(shí)例并且作為該創(chuàng)建的副作用,父實(shí)例和子實(shí)例兩者是對話的雙方。如果子實(shí)例終止,則向父實(shí)例通知對話結(jié)束。類似地,如果父實(shí)例終止,則向子實(shí)例通知對話結(jié)束并且子實(shí)例也終止。
[0020]在另一實(shí)施例中,一種用于管理多個(gè)實(shí)例的方法包括在一個(gè)或多個(gè)實(shí)例處理器上發(fā)起多個(gè)實(shí)例,監(jiān)視該多個(gè)實(shí)例中的每一個(gè)的壽命,以及向該多個(gè)實(shí)例提供定義的一組消
肩、O
[0021]該方法還包括提供用于發(fā)送實(shí)例和目的地實(shí)例之間的通信的請求-回復(fù)消息格式,標(biāo)識目的地實(shí)例在接收到請求消息之前何時(shí)已結(jié)束,以及自動(dòng)消除該請求消息。該方法還在消除請求消息時(shí)向發(fā)送實(shí)例提供出錯(cuò)消息。
[0022]該方法還包括提供用于發(fā)送實(shí)例和目的地實(shí)例之間的通信的請求-回復(fù)消息格式,標(biāo)識發(fā)送實(shí)例在接收到回復(fù)消息之前何時(shí)已結(jié)束,以及自動(dòng)消除該回復(fù)消息。
[0023]該方法還可包括提供用于發(fā)送實(shí)例和目的地實(shí)例之間的通信的單向消息格式,標(biāo)識目的地實(shí)例在接收到單向消息之前何時(shí)已結(jié)束,以及自動(dòng)消除該單向消息。
[0024]多個(gè)實(shí)例可被安排成分層格式,其中各實(shí)例被安排成多層父-子編組。該方法還可包括從子實(shí)例向父實(shí)例發(fā)送實(shí)例狀態(tài)信息,在父實(shí)例處聚集子實(shí)例的實(shí)例狀態(tài)信息,將所聚集的狀態(tài)信息從父實(shí)例發(fā)送給更高的父實(shí)例,以及將進(jìn)程狀態(tài)信息提供給監(jiān)視實(shí)例,該進(jìn)程狀態(tài)信息包括所聚集的狀態(tài)信息。所聚集的狀態(tài)信息可以提供與各實(shí)例相關(guān)聯(lián)的端到端進(jìn)程的同構(gòu)視圖。
【專利附圖】
【附圖說明】
[0025]圖1是根據(jù)一個(gè)實(shí)施例的分布式實(shí)例系統(tǒng)的各組件的高級框圖;
[0026]圖2是根據(jù)一個(gè)實(shí)施例的分布式實(shí)例系統(tǒng)的拓?fù)浣Y(jié)構(gòu)的高級框圖;
[0027]圖3示出了根據(jù)一個(gè)實(shí)施例的各實(shí)例的分層結(jié)構(gòu);[0028]圖4示出了用于兩個(gè)實(shí)例之間的請求-回復(fù)交換的請求-回復(fù)消息收發(fā)模式;
[0029]圖5示出了用于兩個(gè)實(shí)例之間的請求-回復(fù)交換的另一請求-回復(fù)消息收發(fā)模式;
[0030]圖6示出了用于兩個(gè)實(shí)例之間的單向消息的單向消息收發(fā)模式;
[0031]圖7示出了兩個(gè)實(shí)例之間建立的對話;以及
[0032]圖8示出了創(chuàng)建了不同類型的兩個(gè)子實(shí)例的父實(shí)例。
【具體實(shí)施方式】
[0033]大型計(jì)算系統(tǒng)包括多個(gè)分布式應(yīng)用。各應(yīng)用負(fù)責(zé)對處理邏輯進(jìn)行處理并執(zhí)行可能持續(xù)數(shù)星期、數(shù)月或甚至數(shù)年的長期運(yùn)行的業(yè)務(wù)進(jìn)程。各應(yīng)用是隔離的,除了訪問共享網(wǎng)絡(luò)之外。各應(yīng)用通過在這一網(wǎng)絡(luò)上發(fā)送消息來進(jìn)行通信。各進(jìn)程的執(zhí)行發(fā)生在大量物理計(jì)算資源上,并且因此該基礎(chǔ)結(jié)構(gòu)和計(jì)算系統(tǒng)必須被設(shè)計(jì)成是容錯(cuò)的。在現(xiàn)有系統(tǒng)中,這一要求的常見解決方案是使得所有消息交換經(jīng)由中介異步地發(fā)生,該中介通常被實(shí)現(xiàn)成持久隊(duì)列。使用異步通信也普遍適用于具有長期運(yùn)行的業(yè)務(wù)進(jìn)程的系統(tǒng)。
[0034]如果作為較大分布式應(yīng)用的一部分的業(yè)務(wù)進(jìn)程失敗,則該分布式應(yīng)用中的其他業(yè)務(wù)進(jìn)程可被留置等待該失敗的進(jìn)程的輸出,并且結(jié)果,相關(guān)聯(lián)的消息留置未經(jīng)處理。留置等待的進(jìn)程和消息需要某種方式的人類干預(yù)才能恢復(fù)或除去它們。例如,如果業(yè)務(wù)進(jìn)程在請求-回復(fù)消息交換期間失敗,則始發(fā)應(yīng)用可留置等待,不知道失敗或掛起的進(jìn)程。此外,原始請求消息留在中介中,而中介不能夠處理該消息,除了將它標(biāo)志為不可遞送的信之外。這些不可遞送的信通常需要人類干預(yù)才能補(bǔ)償和糾正失敗的進(jìn)程并清理中介。
[0035]業(yè)務(wù)進(jìn)程在它們的壽命中橫跨多個(gè)應(yīng)用,并且這些應(yīng)用通常具有不同的管理特性。結(jié)果,沒有系統(tǒng)健康、端到端進(jìn)程狀態(tài)、或其他監(jiān)視數(shù)據(jù)的單個(gè)經(jīng)協(xié)調(diào)的視圖。相反,系統(tǒng)管理員通常處理各種控制系統(tǒng)并且形成每一控制系統(tǒng)中的專家知識。
[0036]因?yàn)檫@些系統(tǒng)中的業(yè)務(wù)進(jìn)程通常持續(xù)很長一段時(shí)間,所以當(dāng)業(yè)務(wù)進(jìn)程內(nèi)的邏輯需要改變時(shí),如由于公司購置或策略變化,難以在不中斷進(jìn)行中(in-flight)進(jìn)程的情況下更新該邏輯。這一問題在傳統(tǒng)上由應(yīng)用開發(fā)人員來解決,他們負(fù)責(zé)實(shí)現(xiàn)復(fù)雜的分支邏輯以處理存在的部分完成的進(jìn)程。
[0037]為了解決現(xiàn)有系統(tǒng)中的這些問題,在一個(gè)實(shí)施例中,一種增強(qiáng)的系統(tǒng)負(fù)責(zé)這些業(yè)務(wù)進(jìn)程的處理和組織。通過使用有限且很好地理解的一組消息交換模式,該增強(qiáng)的系統(tǒng)使得消除掛起的進(jìn)程和死信以及降低相關(guān)聯(lián)的管理開銷成為可能。此外,通過將這些進(jìn)程的各組成部分按分層方式來組織,簡化這樣的系統(tǒng)的管理是可能的,從而提供覆蓋端到端進(jìn)程的單個(gè)監(jiān)視和控制體驗(yàn)。通過使得該系統(tǒng)處理諸如最終一致性、故障傳播、以及跨實(shí)例相關(guān)等復(fù)雜度,降低了對分布式應(yīng)用的各部分進(jìn)行協(xié)調(diào)的認(rèn)知開銷。
[0038]業(yè)務(wù)進(jìn)程的各組成部分在運(yùn)行時(shí)作為各實(shí)例出現(xiàn),其中實(shí)例表示處理邏輯單元及其相關(guān)聯(lián)的狀態(tài)兩者。各實(shí)例可分布在許多處理單元上而沒有對特定一個(gè)處理單元的任何親和性。
[0039]圖1是根據(jù)一個(gè)實(shí)施例的分布式實(shí)例系統(tǒng)100的各組件的高級框圖。該分布式實(shí)例系統(tǒng)包括運(yùn)行一應(yīng)用或進(jìn)程的各實(shí)例的一個(gè)或多個(gè)實(shí)例處理器101。實(shí)例管理器102控制實(shí)例處理器101并分配在實(shí)例處理器101上運(yùn)行的特定實(shí)例。實(shí)例管理器102還監(jiān)視每一實(shí)例的壽命并且知道每一實(shí)例何時(shí)開始和結(jié)束。
[0040]各實(shí)例和應(yīng)用狀態(tài)可被存儲在實(shí)例存儲103中。雖然圖1中示出了單個(gè)存儲設(shè)備102,但分布式實(shí)例系統(tǒng)100可包括多個(gè)存儲設(shè)備。在其他實(shí)施例中,作為實(shí)例存儲103的補(bǔ)充或替換,可以使用外部存儲設(shè)備。在一個(gè)實(shí)施例中,每一實(shí)例一次被綁定到一個(gè)存儲設(shè)備103。如所需要的,實(shí)例-存儲綁定可作為再平衡、故障切換、或遷移的一部分來改變。在其他實(shí)施例中,存儲103是可任選的,并且實(shí)例狀態(tài)和消息被存儲在實(shí)例處理器101內(nèi),這可使得該系統(tǒng)工作在降低的可靠性水平上。存儲設(shè)備103的使用可以是按實(shí)例決策,其中一些實(shí)例狀態(tài)和消息可外部化到存儲中,而其他則不會。各實(shí)例可與相同或不同應(yīng)用或進(jìn)程的其他實(shí)例進(jìn)行通信。
[0041]在實(shí)例處理器101上運(yùn)行的實(shí)例可彼此通信以允許在各實(shí)例之間交換消息。消息存儲104可被用來存儲消息和消息狀態(tài)。實(shí)例管理器102通過消息總線105將消息路由到各系統(tǒng)組件并在各系統(tǒng)組件之間路由消息,如在實(shí)例處理器101、實(shí)例存儲103、以及消息存儲104之間。實(shí)例管理器102實(shí)施在該分布式實(shí)例系統(tǒng)上可用的消息交換模式。
[0042]實(shí)例管理器102負(fù)責(zé)執(zhí)行各實(shí)例的處理邏輯并控制實(shí)例處理器101上的實(shí)例。實(shí)例管理器還管理各實(shí)例的壽命??稍趯?shí)例管理器102和實(shí)例處理器101之間交換控制消息,以創(chuàng)建新實(shí)例和終止已有實(shí)例。實(shí)例管理器負(fù)責(zé)實(shí)現(xiàn)這些命令,并且結(jié)果,知道所有實(shí)例的壽命。
[0043]實(shí)例管理器還負(fù)責(zé)處理各實(shí)例之間的消息交換。向?qū)嵗芾砥?02提供了與每一消息有關(guān)的附加知識,包括哪一實(shí)例發(fā)送了該消息以及應(yīng)當(dāng)接收該消息的哪一個(gè)或多個(gè)實(shí)例。實(shí)例管理器102提供有限的一組消息收發(fā)模式,這允許該系統(tǒng)作出有關(guān)該系統(tǒng)內(nèi)的消息收發(fā)行為的具體聲明以簡化該系統(tǒng)及其管理。
[0044]兩個(gè)主要的消息收發(fā)模式是請求-回復(fù)和單向。
[0045]請求-回復(fù)消息收發(fā)模式這一模式用于兩個(gè)實(shí)例之間的異步請求-回復(fù)通信。因?yàn)樵摲植际綄?shí)例系統(tǒng)知道發(fā)送者和接收者實(shí)例兩者的壽命,所以該系統(tǒng)呈現(xiàn)了多個(gè)簡化屬性。例如,如果接收者實(shí)例在發(fā)送回復(fù)之前終止,則該系統(tǒng)向發(fā)送者返回出錯(cuò)響應(yīng)。這消除了先前將被留在中介處的掛起的業(yè)務(wù)進(jìn)程和死信。如果發(fā)送實(shí)例在響應(yīng)被遞送之前終止,則該系統(tǒng)可以丟棄該回復(fù)消息。如果響應(yīng)的遞送必須被保證,則回復(fù)實(shí)例(即,原始接收者實(shí)例)可建立與原始發(fā)送實(shí)例的請求-回復(fù)交換。
[0046]單向消息收發(fā)模式這一模式用于兩個(gè)實(shí)例之間的異步單向通信。發(fā)送和接收實(shí)例可在傳送單向消息之前建立對話。在一些情形中,單向消息可綁定到對話。對話是該分布式實(shí)例系統(tǒng)的通信模型的一部分。對話經(jīng)由異步握手通過實(shí)例管理器來建立,該實(shí)例管理器可以是持久中介(如果需要持久性的話)?;蛘撸徊僮骺山υ捵鳛橹苯幼饔没蜃鳛楦弊饔?。如果接收實(shí)例在遞送單向消息之前結(jié)束和/或終止對話,則該系統(tǒng)按與單向消息收發(fā)的大多數(shù)實(shí)現(xiàn)一致的方式丟棄該消息。然而,該系統(tǒng)還將該對話的終止通知給發(fā)送實(shí)例。
[0047]請求-回復(fù)和單向消息收發(fā)模式可被組合,以創(chuàng)建其他更豐富的消息收發(fā)模式,如發(fā)布和訂閱。
[0048]實(shí)例分層結(jié)構(gòu)該分布式實(shí)例系統(tǒng)還將各實(shí)例構(gòu)造成分層結(jié)構(gòu)。如果實(shí)例A創(chuàng)建新實(shí)例B,則實(shí)例A自動(dòng)變成實(shí)例B的父實(shí)例。實(shí)例A可能不能夠直接創(chuàng)建新實(shí)例,但可改為要求該系統(tǒng)對新實(shí)例的創(chuàng)建進(jìn)行仲裁。類似地,如果實(shí)例B稍后創(chuàng)建新實(shí)例C和D,則實(shí)例B自動(dòng)變成實(shí)例C和D的父實(shí)例,以此類推。各實(shí)例之間的這一關(guān)系創(chuàng)建實(shí)例樹。該樹中的各實(shí)例將業(yè)務(wù)進(jìn)程的多個(gè)分開且不同的片段組合成例如反映該端到端進(jìn)程的分層結(jié)構(gòu)。
[0049]每一子實(shí)例可具有與其相應(yīng)父實(shí)例的自動(dòng)對話。這樣的父-子對話將不需要附加的握手來建立。在一些實(shí)施例中,子實(shí)例可能不能夠獨(dú)立于它自己的壽命來終止父-子對話。此外,父實(shí)例可能不能夠通過終止父-子對話來迫使終止子實(shí)例。
[0050]各實(shí)例還可按需創(chuàng)建。例如,如果實(shí)例Z向?qū)嵗鼸發(fā)送消息,但實(shí)例E尚未存在,則該分布式實(shí)例系統(tǒng)可具有確定哪一實(shí)例應(yīng)當(dāng)是實(shí)例E的父實(shí)例的功能。該系統(tǒng)隨后通知該預(yù)期父實(shí)例(例如,以上的實(shí)例B),并且隨后預(yù)期父實(shí)例B有機(jī)會創(chuàng)建實(shí)例E作為子實(shí)例。實(shí)例E隨后可接收來自實(shí)例Z的消息。類似地,如果實(shí)例B也尚未存在,則該過程可跨多層來被重復(fù)。例如,實(shí)例A可接收來自該系統(tǒng)的創(chuàng)建實(shí)例B的通知,并且隨后實(shí)例B接收創(chuàng)建實(shí)例E的通知。
[0051]這一端到端進(jìn)程的節(jié)點(diǎn)分層結(jié)構(gòu)具有單個(gè)根。在其他實(shí)施例中,該分層結(jié)構(gòu)可具有多個(gè)根。例如,監(jiān)視實(shí)例也可以是根節(jié)點(diǎn)。這允許該系統(tǒng)提供統(tǒng)一的控制模型。例如,終止或掛起父實(shí)例造成該同一控制動(dòng)作傳播到它的所有子實(shí)例,而不必特別地解決該分層結(jié)構(gòu)中每一單獨(dú)的實(shí)例。此外,該分層結(jié)構(gòu)呈現(xiàn)用于聚集來自各實(shí)例的監(jiān)視和健康信息的機(jī)會。結(jié)果,監(jiān)視端到端進(jìn)程更簡單。這可通過使用該系統(tǒng)所呈現(xiàn)的第三消息收發(fā)模式——監(jiān)視消息模式一來實(shí)現(xiàn)。
[0052]聚集消息收發(fā)模式這一模式被用來異步地傳送監(jiān)視數(shù)據(jù)。實(shí)例可發(fā)出自動(dòng)沿實(shí)例樹向上轉(zhuǎn)發(fā)的監(jiān)視消息一從子實(shí)例行進(jìn)到父實(shí)例,并隨后到父實(shí)例自己的父實(shí)例一直至監(jiān)視消息到達(dá)根實(shí)例為止。監(jiān)視消息可具有與其他消息不同的時(shí)間線特性。例如,監(jiān)視消息可具有比操作消息低的優(yōu)先級。具體而言,監(jiān)視消息可機(jī)會性地從實(shí)例轉(zhuǎn)移到實(shí)例,如通過承載在其他交換上以提高系統(tǒng)效率。任何實(shí)例可訂閱這一監(jiān)視數(shù)據(jù)流,從而允許實(shí)例捕捉該分層結(jié)構(gòu)的訂閱實(shí)例的那一部分的所有監(jiān)視數(shù)據(jù)。這將向訂閱實(shí)例提供該進(jìn)程的任何部分的完整畫面。任何實(shí)例可抑制監(jiān)視數(shù)據(jù)沿分層結(jié)構(gòu)向上傳播。實(shí)例既可發(fā)布監(jiān)視數(shù)據(jù)又可抑制監(jiān)視數(shù)據(jù)的進(jìn)一步傳播。將理解,監(jiān)視只是一個(gè)示例,并且作為監(jiān)視數(shù)據(jù)的補(bǔ)充或替換,各實(shí)例之間可交換任何類型的數(shù)據(jù)。
[0053]圖2是根據(jù)一個(gè)實(shí)施例的分布式實(shí)例系統(tǒng)200的拓?fù)浣Y(jié)構(gòu)的高級框圖。實(shí)例處理器201可被實(shí)現(xiàn)成多個(gè)實(shí)例處理節(jié)點(diǎn)201,每一實(shí)例處理節(jié)點(diǎn)都在實(shí)例管理器202的控制之下。實(shí)例存儲203保持不活動(dòng)時(shí)間段期間的各實(shí)例以及應(yīng)用狀態(tài)和消息狀態(tài)。實(shí)例處理器在系統(tǒng)故障的情況下提供可靠的消息收發(fā)和可恢復(fù)性。然而,如果例如既不要求或需要可靠的消息收發(fā)又不要求或需要持久的實(shí)例,則這些能力中的任一個(gè)可被犧牲。
[0054]實(shí)例管理器202負(fù)責(zé)將各實(shí)例的處理邏輯加載到所分配的實(shí)例處理器201。這允許該系統(tǒng)向應(yīng)用呈現(xiàn)多個(gè)附加的簡化益處,包括加載處理邏輯的不同版本的能力以及允許各實(shí)例版本的并排執(zhí)行。例如,以實(shí)例的處理邏輯的版本I開始的業(yè)務(wù)進(jìn)程可繼續(xù)使用該版本,即使在創(chuàng)建了版本2時(shí)也如此。業(yè)務(wù)進(jìn)程的新實(shí)例可自動(dòng)利用最新版本。
[0055]此外,該系統(tǒng)將業(yè)務(wù)進(jìn)程表示為不同的經(jīng)協(xié)調(diào)的實(shí)例的分層結(jié)構(gòu)的能力極大地降低了對正在進(jìn)行的進(jìn)程的變更的影響,從而允許應(yīng)用開發(fā)人員將各進(jìn)程建模成可獨(dú)立地版本化的各實(shí)例的組合。[0056]圖3示出了根據(jù)一個(gè)實(shí)施例的各實(shí)例的分層結(jié)構(gòu)300。根實(shí)例301被創(chuàng)建并且是實(shí)例302和303的父實(shí)例。進(jìn)而,實(shí)例302被創(chuàng)建并且是實(shí)例304和305的父實(shí)例,而實(shí)例303被創(chuàng)建并且是實(shí)例306和307的父實(shí)例。
[0057]再參考圖1,實(shí)例301-307可在一個(gè)或多個(gè)實(shí)例處理器101上運(yùn)行。實(shí)例301-307可全部在同一實(shí)例處理器101上運(yùn)行或可分散在多個(gè)實(shí)例處理器101上。在高度分布式的應(yīng)用中,每一實(shí)例301-307可在單獨(dú)的實(shí)例處理器101上運(yùn)行。實(shí)例301-307中的一個(gè)或多個(gè)可在與分布式實(shí)例系統(tǒng)100經(jīng)由外部總線105進(jìn)行通信的分開的分布式實(shí)例系統(tǒng)上運(yùn)行。這樣的外部通信假定在外部總線上使用的協(xié)議與分布式實(shí)例系統(tǒng)所使用的有限消息交換模式之間的橋接已經(jīng)完成。
[0058]任何實(shí)例301-307可參與同任何其他實(shí)例301-307的請求-回復(fù)消息交換。任何實(shí)例301-307可與任何其他實(shí)例301-307建立對話308。單向消息可通過已在各實(shí)例之間建立的對話308發(fā)送。
[0059]實(shí)例301-307形成卷升至根實(shí)例301的分層結(jié)構(gòu)。監(jiān)視消息沿該分層結(jié)構(gòu)向上傳送,并且監(jiān)視實(shí)例309可訂閱該監(jiān)視數(shù)據(jù)。根實(shí)例301將監(jiān)視數(shù)據(jù)310發(fā)布給監(jiān)視實(shí)例309。監(jiān)視數(shù)據(jù)310由應(yīng)用創(chuàng)建并且表示該應(yīng)用的當(dāng)前狀態(tài)。監(jiān)視數(shù)據(jù)310沿分層結(jié)構(gòu)樹向上流動(dòng)。監(jiān)視數(shù)據(jù)在每一層處被聚集,使得實(shí)例303聚集實(shí)例304和305兩者的監(jiān)視數(shù)據(jù)且根實(shí)例301聚集實(shí)例301和303兩者以及它們相應(yīng)的子節(jié)點(diǎn)的監(jiān)視數(shù)據(jù)。將理解,監(jiān)視實(shí)例309不限于在根實(shí)例處監(jiān)視,而是可插入在任何層處。例如,監(jiān)視實(shí)例309可替換地接收來自實(shí)例303的監(jiān)視數(shù)據(jù)311。來自實(shí)例303的監(jiān)視數(shù)據(jù)311包括實(shí)例303及其子實(shí)例306和307的所聚集的狀態(tài)和健康數(shù)據(jù),而監(jiān)視數(shù)據(jù)310包括所有實(shí)例301-207的所聚集的狀態(tài)和健康數(shù)據(jù)。
[0060]分層結(jié)構(gòu)300可擴(kuò)展到任何數(shù)量的實(shí)例。父實(shí)例與其子實(shí)例之間存在隱式的對話,這允許父實(shí)例和子實(shí)例進(jìn)行通信并知道相關(guān)實(shí)例的狀態(tài)。通過將子實(shí)例的壽命綁定到它的父實(shí)例,簡化了各實(shí)例的管理。子實(shí)例不能比它的父實(shí)例更長壽。因此,如果一實(shí)例結(jié)束,則該實(shí)例的所有子實(shí)例也結(jié)束。這提供了一種容易的方式來結(jié)束并清理該實(shí)例之下所有層處的實(shí)例,并允許最終用戶將樹中的各實(shí)例當(dāng)成一個(gè)。以此方式,各進(jìn)程被分解成更加可管理的一組實(shí)例。如果根實(shí)例301結(jié)束,則該分層結(jié)構(gòu)中的所有實(shí)例結(jié)束。
[0061]情形1:圖4示出了用于兩個(gè)實(shí)例之間的請求-回復(fù)交換的請求-回復(fù)消息收發(fā)模式。始發(fā)實(shí)例401向目的地實(shí)例403傳送操作請求402。請求402被傳遞給實(shí)例管理器404,實(shí)例管理器404負(fù)責(zé)將請求402轉(zhuǎn)發(fā)給目的地實(shí)例403。然而,在實(shí)例管理器404能傳遞請求消息402之前,目的地實(shí)例403結(jié)束(405)。實(shí)例管理器404知道每一實(shí)例401、403的壽命。因此,實(shí)例管理器404知道目的地實(shí)例403已結(jié)束并且該操作請求將永遠(yuǎn)不能路由到它的目的地。因此,實(shí)例管理器404向源實(shí)例401發(fā)送出錯(cuò)回復(fù)406并消除請求402,從而防止請求402變成不可遞送的信并且防止始發(fā)實(shí)例401變成掛起的實(shí)例。
[0062]情形2:圖5示出了用于兩個(gè)實(shí)例之間的請求-回復(fù)交換的另一請求-回復(fù)消息收發(fā)模式。始發(fā)實(shí)例501向目的地實(shí)例503傳送操作請求502。請求502被傳遞給實(shí)例管理器504,實(shí)例管理器504負(fù)責(zé)在消息505中將請求502轉(zhuǎn)發(fā)給目的地實(shí)例503。目的地實(shí)例503接收請求505并生成操作回復(fù)消息506,該操作回復(fù)消息在實(shí)例管理器504的控制下被發(fā)送回始發(fā)實(shí)例501。然而,在實(shí)例管理器504能傳遞回復(fù)消息506之前,始發(fā)實(shí)例501結(jié)束(507)。實(shí)例管理器504知道每一實(shí)例501、503的壽命。因此,實(shí)例管理器504知道始發(fā)實(shí)例501已結(jié)束并且該操作回復(fù)506將永遠(yuǎn)不能路由到它的目的地。因?yàn)槭及l(fā)實(shí)例501已結(jié)束,所以該回復(fù)不再需要或有用。因此,實(shí)例管理器504消除回復(fù)506,從而防止回復(fù)605變成不可遞送的。
[0063]情形3:圖6示出了用于兩個(gè)實(shí)例之間的單向消息的單向消息收發(fā)模式。始發(fā)實(shí)例601將信號602傳送到目的地603。信號602是始發(fā)實(shí)例601不會預(yù)期有響應(yīng)的單向消息。實(shí)例管理器604接收消息602,消息602應(yīng)被轉(zhuǎn)發(fā)給目的地603。然而,目的地實(shí)例603在信號602可被遞送之前結(jié)束(605)。實(shí)例管理器604知道目的地實(shí)例605的狀態(tài)并且知道該實(shí)例何時(shí)已結(jié)束。因此,并非將信號602保持作為不可遞送的,實(shí)例管理器604消除該信號。因?yàn)樾盘?02是單向消息并且始發(fā)實(shí)例601沒有預(yù)期來自目的地實(shí)例603的響應(yīng)或確認(rèn),所以實(shí)例管理器604僅僅終止信號602并且不創(chuàng)建發(fā)給始發(fā)實(shí)例601的進(jìn)一步的出錯(cuò)消息或警告。這是真實(shí)的單向消息交換,其中始發(fā)實(shí)例只需要知道該信號被發(fā)送并且不關(guān)心該信號是否被接收到。因此,在目標(biāo)實(shí)例結(jié)束時(shí),信號602可被實(shí)例管理器604安全地丟棄。
[0064]情形4:圖7示出了兩個(gè)實(shí)例之間建立的對話。實(shí)例A701通過向?qū)嵗芾砥?04注冊對實(shí)例B703的興趣來建立與實(shí)例B703的對話702。一實(shí)例可向中介、實(shí)例管理器、或某一其他設(shè)備注冊對另一實(shí)例的興趣。對話是通過涉及兩個(gè)參與實(shí)例的握手來建立的,該握手由分布式實(shí)例系統(tǒng)進(jìn)行協(xié)調(diào)。一旦建立了對話702,實(shí)例701、703就可跟蹤該對話并且因此可跟蹤另一實(shí)例的壽命。任一實(shí)例可建立對話。對話繼續(xù),直至被一個(gè)實(shí)例取消或直至一個(gè)實(shí)例結(jié)束。將要結(jié)束的實(shí)例可通知另一實(shí)例該對話將結(jié)束,或者實(shí)例管理器可以通知一個(gè)實(shí)例對話中的另一實(shí)例已經(jīng)完成。例如,在實(shí)例B703結(jié)束(705)時(shí),實(shí)例管理器704可使用通知706來通知實(shí)例701。或者,在一個(gè)實(shí)例認(rèn)識到該對話已經(jīng)意外終止(即,在沒有通知的情況下),這指示另一實(shí)例已經(jīng)結(jié)束。
[0065]對話可被用來支持或增強(qiáng)單向消息收發(fā)。例如,該對話的一個(gè)實(shí)例可向該對話中的另一實(shí)例發(fā)送信號。發(fā)送實(shí)例不要求對該單向信號消息的回復(fù),但在發(fā)送消息時(shí)以及在傳輸之后的某一時(shí)間內(nèi)知道目的地實(shí)例是否是活的。這一生命狀態(tài)知識可被發(fā)送實(shí)例用來評估該信號是否被目的地實(shí)例接收到的可能性。具體而言,發(fā)送實(shí)例可等待(直接或間接)依賴于該信號的接收的事件。對話的終止告知該實(shí)例信號可能已經(jīng)丟失,所以它可以選擇做除等待該事件之外的某些事情。
[0066]本文描述的實(shí)例可以是不同類型的,并且可以與不同的進(jìn)程相關(guān)聯(lián)。圖8示出了創(chuàng)建了不同類型的兩個(gè)子實(shí)例802、803的父實(shí)例801。例如,在訂單業(yè)務(wù)進(jìn)程中,在顧客開始新訂單時(shí),訂單實(shí)例801可被創(chuàng)建。訂單實(shí)例801可生成挑選子實(shí)例802以向顧客提供物品選擇進(jìn)程。訂單實(shí)例801還可生成運(yùn)送子實(shí)例803以提供顧客所選擇的物品的運(yùn)送進(jìn)程。
[0067]挑選實(shí)例802和運(yùn)送實(shí)例803可以使用請求-回復(fù)消息收發(fā)和單向消息收發(fā)來交換信息以完成顧客的訂單。挑選實(shí)例802和運(yùn)送實(shí)例803還可建立對話804來跟蹤另一實(shí)例的壽命。
[0068]挑選實(shí)例802和運(yùn)送實(shí)例803可以向父訂單實(shí)例801發(fā)送監(jiān)視消息,訂單實(shí)例801可進(jìn)而將該健康信息沿進(jìn)一步的實(shí)例樹向上傳播。[0069]訂單實(shí)例801、挑選實(shí)例802以及運(yùn)送實(shí)例803可以是在使用特定訂單進(jìn)程的各顧客之間提供隔離的許多獨(dú)立的訂單-實(shí)例樹之一。這一隔離可以提供保護(hù)業(yè)務(wù)進(jìn)程和個(gè)人顧客信息的安全性。
[0070]作為許多獨(dú)立的訂單-實(shí)例樹之一,訂單實(shí)例801、挑選實(shí)例802以及運(yùn)送實(shí)例803提供按高度并行化方式操作的多個(gè)分布式訂單進(jìn)程。
[0071]本文描述的功能中的許多功能可以用硬件、軟件、和/或固件、和/或其任何組合來實(shí)現(xiàn)。在用軟件實(shí)現(xiàn)時(shí),各代碼段執(zhí)行必要的任務(wù)或步驟。程序或代碼段可被存儲在處理器可讀、計(jì)算機(jī)可讀或機(jī)器可讀介質(zhì)中。處理器可讀、計(jì)算機(jī)可讀或機(jī)器可讀介質(zhì)可包括能存儲或轉(zhuǎn)移信息的任何設(shè)備或介質(zhì)。這樣的處理器可讀介質(zhì)的示例包括電路、半導(dǎo)體存儲器設(shè)備、閃存、ROM、可擦除ROM (ER0M)、軟盤、緊致盤、光盤、硬盤、光纖介質(zhì),等等。
[0072]例如,在圖1中,存儲102可以是任何易失性或非易失性存儲設(shè)備,如硬盤驅(qū)動(dòng)器、閃存、固態(tài)存儲器、光盤、CD、DVD、計(jì)算機(jī)程序產(chǎn)品、或向?qū)嵗幚砥?01提供計(jì)算機(jī)可讀或機(jī)器可讀介質(zhì)的其他存儲器設(shè)備。在其他實(shí)施例中,存儲器可以是若干物理存儲設(shè)備的虛擬化,其中物理存儲設(shè)備是相同或不同的種類。代碼段可以經(jīng)由內(nèi)部總線、另一計(jì)算機(jī)網(wǎng)絡(luò)(如因特網(wǎng)或內(nèi)聯(lián)網(wǎng))、或經(jīng)由其他有線或無線網(wǎng)絡(luò)等從存儲102下載或轉(zhuǎn)移到實(shí)例處理器101。
[0073]盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動(dòng)作。更確切而言,上述具體特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的。
【權(quán)利要求】
1.一種分布式實(shí)例系統(tǒng),包括: 運(yùn)行一個(gè)或多個(gè)進(jìn)程的實(shí)例的一個(gè)或多個(gè)實(shí)例處理器; 管理在所述實(shí)例處理器上運(yùn)行的實(shí)例的一個(gè)或多個(gè)實(shí)例管理器,所述實(shí)例管理器監(jiān)視所述實(shí)例的壽命并且向所述實(shí)例提供受管理的一組消息交換模式。
2.如權(quán)利要求1所述的分布式實(shí)例系統(tǒng),其特征在于,有限的一組消息交換模式允許所述分布式實(shí)例系統(tǒng)標(biāo)識無需用戶干預(yù)就能被消除的消息。
3.如權(quán)利要求1所述的分布式實(shí)例系統(tǒng),其特征在于,所述有限的一組消息交換模式允許各實(shí)例交換異步請求和回復(fù)消息,以及 其中所述實(shí)例管理器基于交換中所涉及的各實(shí)例的壽命來標(biāo)識應(yīng)被消除的請求和回復(fù)消息。
4.如權(quán)利要求1所述的分布式實(shí)例系統(tǒng),其特征在于,一實(shí)例發(fā)起與另一實(shí)例的對話,其中所述對話是使用涉及這兩個(gè)實(shí)例的握手來發(fā)起的,所述握手由分布式實(shí)例系統(tǒng)來進(jìn)行協(xié)調(diào)。
5.一種用于管理多個(gè)實(shí)例的方法,包括 在一個(gè)或多個(gè)實(shí)例處理器上發(fā)起多個(gè)實(shí)例; 監(jiān)視所述多個(gè)實(shí)例中的每一個(gè)的壽命;以及 向所述多個(gè)實(shí)例提供定義的一組消息。
6.如權(quán)利要求11所述的方法,其特征在于,還包括: 提供用于發(fā)送實(shí)例和目的地實(shí)例之間的通信的請求-回復(fù)消息格式; 標(biāo)識所述目的地實(shí)例在接收到請求消息之前何時(shí)已結(jié)束;以及 自動(dòng)消除所述請求消息。
7.如權(quán)利要求11所述的方法,其特征在于,還包括: 提供用于發(fā)送實(shí)例和目的地實(shí)例之間的通信的請求-回復(fù)消息格式; 標(biāo)識所述發(fā)送實(shí)例在接收到回復(fù)消息之前何時(shí)已結(jié)束;以及 自動(dòng)消除所述回復(fù)消息。
8.如權(quán)利要求11所述的方法,其特征在于,還包括: 提供用于發(fā)送實(shí)例和目的地實(shí)例之間的通信的單向消息格式; 標(biāo)識所述目的地實(shí)例在接收到單向請求之前何時(shí)已結(jié)束;以及 自動(dòng)消除所述單向消息。
9.如權(quán)利要求11所述的方法,其特征在于,所述多個(gè)實(shí)例被按分層的方式來安排,其中各實(shí)例被安排成多層父-子編組,所述方法還包括: 從子實(shí)例向父實(shí)例發(fā)送實(shí)例狀態(tài)信息; 在所述父實(shí)例處聚集所述子實(shí)例的實(shí)例狀態(tài)信息;以及 從所述父實(shí)例向更高的父實(shí)例發(fā)送所聚集的狀態(tài)信息。
10.一種存儲用于管理多個(gè)實(shí)例的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀存儲介質(zhì),所述指令包括用于以下操作的代碼: 在一個(gè)或多個(gè)實(shí)例處理器上發(fā)起多個(gè)實(shí)例; 監(jiān)視所述多個(gè)實(shí)例中的每一個(gè)的壽命;以及 向所述多個(gè)實(shí)例提供定義的一組消息。
【文檔編號】G06F15/16GK103562903SQ201280025722
【公開日】2014年2月5日 申請日期:2012年5月18日 優(yōu)先權(quán)日:2011年5月27日
【發(fā)明者】N·塔爾伯特, J·泰勒, S·巴特雷斯, J·布朗, K·沃爾夫, E·平特 申請人:微軟公司