專利名稱:故障安全的流處理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種容錯,可靠的流處理方法。本發(fā)明因而還涉及一種設(shè)備、一種系統(tǒng)和一種計算機軟件產(chǎn)品。
本發(fā)明基于優(yōu)先權(quán)申請EP 05290650.0,在此將其引入作為參考。
背景技術(shù):
存在一大類新興的應(yīng)用,其中,在一些外部環(huán)境中產(chǎn)生的數(shù)據(jù)被異步推送到處理該信息的服務(wù)器或客戶端。一些示例性應(yīng)用包括傳感器網(wǎng)絡(luò)、位置跟蹤服務(wù)、生產(chǎn)線管理、網(wǎng)絡(luò)管理以及流式媒體應(yīng)用。這些應(yīng)用的特征在于需要以及時且響應(yīng)的方式來處理大量數(shù)據(jù)流。許多這種基于流的應(yīng)用被自然地分布,通常被嵌入具有許多連接的計算設(shè)備的環(huán)境中,所述計算設(shè)備具有不同種類的能力。當(dāng)數(shù)據(jù)從其起始點(例如傳感器)下行到應(yīng)用時,它經(jīng)過許多計算設(shè)備,所述計算設(shè)備中每一個都是潛在的計算目標(biāo)。而且,為了克服時變負(fù)載峰值以及改變要求,針對所述問題而應(yīng)用許多服務(wù)器。在兩種情況下,分布式計算是標(biāo)準(zhǔn)。
在2003CIDR會議記錄中的Mitch Cherniack等人的“ScalableDistributed Stream Processing”中,公開了一種能夠模擬數(shù)據(jù)流處理的流處理器。
Annette Stmple在其論文“Stream Based Design of DistributedSystems through Refinement”中詳述了一種基于流的構(gòu)架,用于通過逐步求精法來設(shè)計分布式系統(tǒng)中的部件。分布式系統(tǒng)被看作是通過單向信道連接的異步通信部件的網(wǎng)絡(luò)。消息流對信道上的通信歷史(history)進行建模。將輸入歷史映射到輸出歷史的流處理功能描述了一種部件。每個部件的行為由流處理功能來指定。
在John David等人發(fā)表在IEEE學(xué)報知識與數(shù)據(jù)工程Vol10,NO.5,1998的“A Unified Data Model for Representing Multimedia,Timeline,andSimulation Data”中,描述了一種統(tǒng)一的數(shù)據(jù)模型,該模型利用一組相關(guān)的數(shù)據(jù)建模結(jié)構(gòu)來表示多媒體、時間線以及模擬數(shù)據(jù)。用于多媒體類型的同一模型以一致的方式構(gòu)成圖像、音頻、視頻以及較長的文本數(shù)據(jù),這給出了多媒體方案,并且甚至針對這些復(fù)雜的數(shù)據(jù)類型而查詢數(shù)據(jù)獨立性的程度。擁有固有時間元素(intrinsic temporal element)的信息都可以利用稱作流的結(jié)構(gòu)來被表示。流可以被聚集成并行的多流,這因而提供了用于查看多組基于時間的信息的結(jié)構(gòu)。所述統(tǒng)一流結(jié)構(gòu)允許實時測量、數(shù)字模擬數(shù)據(jù)以及數(shù)據(jù)的可視化,其中所述數(shù)據(jù)要利用同一組運算符而被聚集并處理。
本領(lǐng)域的理論發(fā)展開始于1986年的Vaughan Pratt的開創(chuàng)性論文“Modeling Concurrency with Partial Orders”,其中并發(fā)性被看作是動作的流,可能的執(zhí)行序列已經(jīng)例如特別按照形式語言(典型地通過混洗(shuffle)運算符)、偏序以及時態(tài)邏輯、Kripke結(jié)構(gòu)而被不同地表達。單個混合方法具有混合了代數(shù)學(xué)和邏輯學(xué)的豐富語言并且具有流模型的自然類別。當(dāng)前的開發(fā),比如斯坦福計算機科學(xué)系2005年的“Chu Spaces andtheir Interpretation as Concurrent Objects”,將這種流看作是Chu空間,Chu空間是從集合到反集合的二元關(guān)系,所述反集合被定義為通過逆功能來變換的集合。通過實現(xiàn)在數(shù)學(xué)和計算實踐中出現(xiàn)的所有小的具體類別和多數(shù)大的類別,Chu空間容許大量的解釋。計算機科學(xué)特別關(guān)注的是它們作為計算進程的解釋,其讓反集合成為在時間中分布的事件的調(diào)度(schedule)、讓集合成為構(gòu)成Scott意義上的信息系統(tǒng)的狀態(tài)的自動化(automaton),并且讓關(guān)系中的對成為歷史產(chǎn)生的單獨副本。狀態(tài)上的轉(zhuǎn)變和調(diào)度上的優(yōu)先的傳統(tǒng)齊次二元關(guān)系,被分別恢復(fù)為與自身的非齊次二元關(guān)系的右和左余項(residual)。Chu空間的自然代數(shù)學(xué)是線性邏輯的,通過進程解釋來進行進程代數(shù)。
全部已知方法共享公共的特性,即從有意義的對象(object)來處理并且組合流。本發(fā)明的目的是通過允許分解流的新運算符來增強流處理。作為所呈現(xiàn)的副效應(yīng),這種運算符的應(yīng)用增強了系統(tǒng)啟動時間和一大類流式媒體相關(guān)的服務(wù)的可用性和可靠性。
先前已知的例如串行(tandem)處理或三重(triple)冗余系統(tǒng)的部件冗余、例如多傳輸路徑的傳輸冗余以及數(shù)據(jù)冗余,共享了所有方法至少需要附加處理資源這一缺點。
冗余是提供多個可互換部件來執(zhí)行單個功能,以克服故障和錯誤。
冗余通常主要應(yīng)用于硬件。例如,可以安裝兩個或甚至三個計算機/進程來進行同一工作。存在幾種方式來使用這些計算機/進程。它們可以一直是激活的,這因而通過并行處理而給出了額外的性能以及額外的可用性;一個是激活的而其它簡單地監(jiān)控其活動以便在其發(fā)生故障的情況下接替它)(“熱備用”);“備用”可以保持關(guān)閉并且僅在需要時被開啟(“冷備用”)。硬件冗余的另一個公共形式是磁盤鏡像。冗余也可以被用來檢測硬件或軟件中的錯誤并且從該錯誤中恢復(fù)。已知的例子是循環(huán)冗余校驗,其向塊添加冗余數(shù)據(jù)以便在存儲或傳輸過程中檢測惡化。例如如果在安全關(guān)鍵系統(tǒng)中錯誤成本足夠高,則利用由三個分離團隊和某個系統(tǒng)所編程的三個分離的計算機,可以將冗余用于硬件和軟件二者中,以檢查它們都產(chǎn)生相同的答案,或某種多數(shù)表決法。
例如流數(shù)據(jù)結(jié)構(gòu)內(nèi)的冗余是消息的總信息量的一部分,它可以被去除而不會丟失基本信息。
理論上,冗余是用1減去實際不確定度(uncertainty)與最大不確定度之比。這是消息結(jié)構(gòu)的一部分,它不是通過發(fā)送方的選擇來被確定的,而是通過控制正討論的符號選擇的公認(rèn)統(tǒng)計規(guī)則來被確定的。
容錯是系統(tǒng)或部件盡管出現(xiàn)硬件或軟件故障也繼續(xù)正常操作的能力。這通常涉及冗余度。
在cornell大學(xué)的技術(shù)報告TR95-1517中,Dexter Kozen等人的“Efficient Algorithm for Optimal Video Transmission”,解決了在有限帶寬的信道上發(fā)送編碼視頻流的問題。當(dāng)有足夠帶寬可用時,一些數(shù)據(jù)必須被丟棄。對于許多視頻編碼來說,一些數(shù)據(jù)比其它數(shù)據(jù)更重要。在該論文中建議確定優(yōu)先級,這優(yōu)化了顯像品質(zhì)。
因此,為了傳輸帶寬而知道可接受信息丟失和丟失信息的信息插入的概念。
發(fā)明內(nèi)容
在下文中,流是這樣的實體表示任意種類的不必完全有序的實體序列或值。這些實體或值稱為流的元素。排序是時間性(tempral)的流實體的元素按時間被區(qū)分為不同的實例(instance)。流還具有當(dāng)前時間的概念,可以根據(jù)該概念來確定序列中的當(dāng)前元素。
子流是這樣的流其本身是另一個流的元素的元素或流。它們通常將總的序列分成語義上有意義的部分。因此,子流允許流數(shù)據(jù)模型與時間進化的(temporal evolutionary)數(shù)據(jù)進行交互。按照數(shù)字視頻,子流可以被認(rèn)為是整個視頻序列中的獨立情景。
增強系統(tǒng)的可靠性和容錯的問題通過流處理而得到解決,其中,數(shù)據(jù)流被處理以產(chǎn)生結(jié)果數(shù)據(jù)流,以便在數(shù)據(jù)流被處理之前,該數(shù)據(jù)流通過分裂(fission)而被分解成至少兩個分裂子流,以使每個分裂子流都攜帶所述數(shù)據(jù)流的部分信息,然后該數(shù)據(jù)流通過處理至少兩個分裂子流而被處理,這獨立地產(chǎn)生至少兩個分裂結(jié)果子流,其中,每個分裂結(jié)果子流攜帶所述結(jié)果數(shù)據(jù)流的部分信息,并且其中,所述至少兩個分裂結(jié)果子流通過結(jié)合(fusion)而被組成結(jié)果數(shù)據(jù)流,以便在分裂子流的一部分不可用的情況下,可以插入遺漏的信息。直觀地子流的傳統(tǒng)觀點是原始流(具有開始和結(jié)束位置)上的垂直分裂的結(jié)果,而分裂是通過原始流(具有可評估部分)的水平分裂。
換言之,建議替換通常的恢復(fù)機制,即并行流處理,其中流被完全分離。
流的分裂和結(jié)合被應(yīng)用于流處理的纖維式分布(fibered distribution),以便在發(fā)生故障的情況下,部分(降級的)流處理和結(jié)果流(服務(wù))保留。本發(fā)明基于以下三種假設(shè)-一種系統(tǒng),其具有部件,每個部件都具有操作上下文(context),例如用于處理兩個連續(xù)流的分裂部件(用于流分解)和結(jié)合部件(流組合);-一種(連續(xù))流,其是可分裂且可結(jié)合的,其特性是流信息可以從分裂結(jié)果中被部分重建;-優(yōu)選地一種備用系統(tǒng),其連續(xù)監(jiān)控操作上下文并且在發(fā)生故障的情況下代替處理部件。
如前面所提到的,分裂意味著流水平分裂成子流,以便該子流攜帶(稍微降級的)信息。結(jié)合是逆功能,即將子流合并或組合成原始流。
將分裂(分解)應(yīng)用于流,以在子系統(tǒng)中分配所述流,并且相應(yīng)地將結(jié)合(組合)應(yīng)用于結(jié)果。當(dāng)子系統(tǒng)發(fā)生故障(go down)時,在剩余的處理分支上執(zhí)行降級的服務(wù)。優(yōu)選地,在第二階段中,備用子系統(tǒng)(簡言之王牌(joker))替換發(fā)生故障的子系統(tǒng),以使該發(fā)生故障的子系統(tǒng)在維護或修復(fù)階段可以被替換,被重新初始化等,并且被配置為新的王牌。所述系統(tǒng)一直保持為可用,沒有系統(tǒng)被關(guān)閉或者重啟。
這具有這樣的優(yōu)點網(wǎng)絡(luò)性能和用于流式媒體處理的恢復(fù)管理得到改進。所述系統(tǒng)總是處于開啟狀態(tài),并且所述服務(wù)總是可用而且更加可靠。系統(tǒng)故障不會導(dǎo)致系統(tǒng)崩潰,而只會造成短期內(nèi)服務(wù)平滑的降級。其就處理資源來說相當(dāng)便宜,也不耗費分裂和結(jié)合工作以及可選地耗費備用系統(tǒng),這是因為該子系統(tǒng)在多個等同的子系統(tǒng)之中共享。因此,所述冗余概念本身得到了改進。
本發(fā)明還具有這樣的優(yōu)點所述系統(tǒng)即使在維護階段也能總是保持開啟。因此,可以用質(zhì)量降級的成本來在操作時替換部件。
參考附圖及其描述,本發(fā)明的所述及許多其它目的和優(yōu)點對于本領(lǐng)域的技術(shù)人員將變得顯而易見,其中
圖1是根據(jù)現(xiàn)有技術(shù)并根據(jù)本發(fā)明的流及其分解的示意圖;圖2是根據(jù)本發(fā)明方法的原理的示意圖;圖3是根據(jù)本發(fā)明系統(tǒng)的原理的示意圖;圖4是根據(jù)本發(fā)明的具有王牌部件的系統(tǒng)原理的示意圖。
具體實施例方式
圖1示出了幾個流S1、S1.1和S1.2,以及S1.a和S1.b。第一流S1包括元素E的序列。
這個序列,或更一般地通過時間的元素的順序,攜帶了一種信息,該信息通過從流到語義域的映射I來表達。此外,所述信息具有一種質(zhì)量,該質(zhì)量是從語義域到有序域的映射Q,給每個信息一種質(zhì)量。例如考慮MPEG編碼流,其攜帶圖片序列信息作為信息。這種信息的質(zhì)量在其可視表示中可以通過下列因素而被區(qū)分例如涉及抖動的顯像品質(zhì)、延遲、分辨率等。在這種情況下,所述質(zhì)量可以是對測量的映射,例如顯像品質(zhì)的經(jīng)驗值,0=辨別不出、1=可以辨別、2=可接受、3=非常好。
附圖還示出了垂直分解VD,如在“A Unified Data Model forRepresenting Multimedia,Timeline,and Simulation Data”中所顯示的子流,其中兩個子流S1.1和S1.2聚集成第一流S1。從聚集信息中產(chǎn)生所述分解。平面(flat)流是不可分解的。垂直可分解流的例子是由剪輯序列組成的視頻流。垂直不可分解的流例如是沒有附加語義的明文整數(shù)序列。
附圖示出了向兩個分裂子流S1.a和S1.b的水平分解HD。這個分解不依賴于聚集信息而依賴于所攜帶的信息。這種分裂的需求是每個分裂子流S1.a和S1.b都攜帶原始流S1的信息,其中允許信息質(zhì)量降級。
兩種分解都是可逆的,即可以從子流重建原始(被分解)流。
水平分解可以通過兩個運算符來表達,將一個流映射成子流之和的分裂運算符FI,以及將子流之和映射成一個流的結(jié)合運算符FU,其中,S=FU(FI(S))。
例如,考慮由例如來自鼠標(biāo)指針的坐標(biāo)所組成的流
S=[(x1,y1);(x2,y2);(x3,y3);(x4,y4);(x5,y5);(x6,y6);(x7,y7);...]讓分裂運算符將具有奇數(shù)索引的坐標(biāo)映射成第一分裂流,而將具有偶數(shù)索引的坐標(biāo)映射成第二分裂流,即FI(S)='>[(x1,y1);(x3,y3);(x5,y5);(x7,y7),...][(x2,y2);(x4,y4);(x6,y6);...],]]>而對應(yīng)的結(jié)合運算符FU(S.a,S.b)逆操作從分裂子流中交替地取出坐標(biāo),并且將它們(以正確的順序)合并成一個流。
由坐標(biāo)構(gòu)成的流的質(zhì)量是坐標(biāo)信息的密度。由一個元素(x,y)給出的信息在該例子中顯然是屏幕上的位置。因此,可用的位置越多,指針的指定就越精確。此外,所述信息必須是實際的,即局部密度是質(zhì)量而不是平均模糊(averaged blur),即分裂'>[(x1,y1);(x7,y7);...][(x2,y2);(x3,y3);(x4,y4);(x5,y5);(x6,y6);...]]]>不是水平分解,這是因為第一子流的質(zhì)量太低。
水平分解允許從質(zhì)量降級的分裂子流的一部分中重建原始信息。
在上述例子中,具有奇數(shù)索引坐標(biāo)的流以及具有偶數(shù)索引坐標(biāo)的流足以用于定點(pointing)。即使不是那樣,中間坐標(biāo)也可以例如通過線性多項式、樣條(spline)等來被插入,這是因為可以假定指針的軌跡是連續(xù)的。
在分裂子流中攜帶部分信息而不是信息片段這一事實,是通過構(gòu)成序列的較少元素而不是全部元素來表達的。
圖2示出了水平分解的應(yīng)用。假設(shè)存在向兩個所示分裂子流S1.a和S1.b的水平分解HD。所述流中的每一個都例如通過分離的進程、任務(wù)而在分離的線程中被處理,或者甚至通過分離的硬件P.a和P.b來被處理。該處理產(chǎn)生了兩個結(jié)果分裂子流RS1.a和RS1.b。這兩個流可以通過(除處理部件之外的)另一個系統(tǒng)部件C而被結(jié)合成結(jié)果流RS1。
目前,這看起來類似于一種用于流的并行(矢量)處理的特殊方法。根據(jù)較近的研究,增加了可靠性。可以從以下起始點來看待流處理具有進程P,其將流S轉(zhuǎn)變成結(jié)果流RS,即P(S)=RS。根據(jù)本發(fā)明,流S被水平分解成(這里是一對)分裂子流之和,即FI(S)=<S.a,S.b>,在圖中是S1.a和S1.b。進程映射P被相應(yīng)地分成P.a和P.b。應(yīng)當(dāng)指出,這些映射是原始映射P的纖維(fiber)。在最簡單的情況下,每個流可以被一樣地看待,即P.a=P.b=P。將P的分解表示為FI(P)=<P.a,P.b>和FI(D)=<D1,D2>,從而滿足下列約束FU(FI(D)(FI(S)))=P(S)。對于該例子是RS1=P(S)=FU(<P.a(S1.a),P.b(S1.b)>).
這具有這樣的效果無論何時進程發(fā)生故障或流變得惡化或毀壞,具有降級質(zhì)量的結(jié)果流都保持可用。假設(shè)例如分裂子流S1.b毀壞或者進程P.b發(fā)生故障,則發(fā)生下列情況RS′1=FU(<P.a(S1.a),[]>)。這個結(jié)果流攜帶原始RS1的信息,即I(RS′1)=I(RS1),但具有較低的質(zhì)量,Q(I(RS′1))。
用指針的坐標(biāo)流來擴展上述例子,進程P可以是將坐標(biāo)從一個坐標(biāo)系映射到另一個坐標(biāo)系的線性變換。由于這個進程是逐點(point wise)的,即逐元素的,因此用于具有奇數(shù)索引坐標(biāo)的分裂子流和具有偶數(shù)索引坐標(biāo)的分裂子流的變換的簡單復(fù)制可以完成這項工作。
相反,垂直分解會導(dǎo)致嚴(yán)重的信息缺乏。
圖3示出了一種結(jié)構(gòu),其用于更可靠地并行處理兩個流而無需(除分裂和結(jié)合之外的)附加進程。兩個流S1和S2必須通過進程P來處理,其產(chǎn)生兩個結(jié)果流RS1和RS2,即'>RS1RS2='>P(S1)P(S2).]]>根據(jù)本發(fā)明的有利設(shè)備包括分裂部件D1和D2以及用于組合結(jié)果流的結(jié)合部件C1和C2。這根據(jù)下列方案來實現(xiàn)'>RS1RS2='>FU(⟨P.a(S1.a),P.b(S1.b)⟩)FU(⟨P.a(S2.a),P.b(S2.b)⟩)]]>其中'>S1.aS2.b=FI(S1)'>S2.aS2.b=FI(S2).]]>這具有這樣的優(yōu)點無論何時一個處理部件發(fā)生故障,輸出上的每個信息都保留。相反,方案'>RS1RS2='>P(S1)P(S2)]]>中的下行(down-going)處理器P導(dǎo)致嚴(yán)重的信息丟失,即結(jié)果流之一會毀壞或惡化。
顯然,這種流處理方法可以用這樣的方法來聯(lián)合推廣應(yīng)用從'>RS1RS2='>P(S1)P(S2)]]>到'>RS1RS2='>FU(⟨P.a(S1.a),P.b(S1.b)⟩)FU(⟨P.a(S2.a),P.b(S2.b)⟩)]]>的變換,其中'>S1.aS2.b=FI(S1)]]>并且'>S2.aS2.b=FI(S2),]]>甚至編譯器(compiler)能夠?qū)⑷绲谝涣魈幚淼娜魏问噶孔儞Q成有利的第二個。
圖4示出了優(yōu)選實施例中的設(shè)備結(jié)構(gòu),即具有王牌部件PJ.b。從先前附圖中示出的結(jié)構(gòu)開始,所述設(shè)備還包括分裂部件D1和D2、結(jié)合部件C1和C2,以及處理部件P.a和P.b。上面提到的兩個流S1和S2被饋入,并且結(jié)果流SR1和SR2被產(chǎn)生。
如上面所提到的,當(dāng)處理部件發(fā)生故障時,在圖片P.b中,結(jié)果流的質(zhì)量降級。為了恢復(fù)原始操作,建議一種恢復(fù)過程。稱為王牌處理器PJ.b的備用部件被建議用來接替故障部件的任務(wù)。為了立即用所述處理器來替換故障進程,所有(或至少關(guān)鍵的)處理部件的處理上下文是由王牌處理器來維護的。在處理器發(fā)生故障的情況下,該故障可以例如通過校驗和等從結(jié)果流中被發(fā)現(xiàn),以及例如通過有效信號或監(jiān)視器(watchdog)等從處理器本身中被發(fā)現(xiàn)。
當(dāng)發(fā)現(xiàn)故障時,王牌具有足夠的信息(或者通過調(diào)度程序(dispatcher))將自己調(diào)入如虛箭頭所示的處理方案中。由于設(shè)計的對稱性,故障部件可以在第二恢復(fù)階段中被調(diào)用為(當(dāng)操作恢復(fù)時)新的王牌部件。
這意味著冗余處理器可以接替故障處理器的工作,以便整個有效操作如附圖所示的那樣返回。這個分配原理允許平滑的恢復(fù)而不會丟失全部信息。優(yōu)選地,調(diào)度程序負(fù)責(zé)適配處理器的上下文。所述上下文切換會花費一些時間,但是在中間階段,只會發(fā)生質(zhì)量降級而不是信息丟失。
處理實況流具有雙重困難。首先,穩(wěn)健過程(robust procedure)必須有效,以無延遲地處理流。其次,即使處理單元發(fā)生故障,實況流消耗也是可能的。音頻流或視頻流就是很好的例子。它們必須被實時地處理,并且在幾種情況下它們是可分裂和可結(jié)合的,其特性是即使遺漏一個子流,流信息也仍然存在。只有(音頻或視頻)流的質(zhì)量在短期內(nèi)降低,直到王牌替換發(fā)生故障的處理部件為止。
如許多音頻和視頻流的一類連續(xù)信息具有這樣的特性適當(dāng)?shù)淖恿?分裂流)甚至包括可接受質(zhì)量的信息,以便原始流的信息可以被呈現(xiàn)/或甚至通過插入等被重建(質(zhì)量降級)。
所建議的穩(wěn)健解決方案基于幾種假設(shè)。連續(xù)數(shù)據(jù)(流)必須允許數(shù)據(jù)流的分裂,以使得只處理分裂的一部分導(dǎo)致服務(wù)質(zhì)量降級但不毀壞數(shù)據(jù)所攜帶的信息。這種消失(disappearing)會持續(xù)到服務(wù)質(zhì)量變得不可接受為止,即信息丟失。而且必須允許從分裂中顯現(xiàn)的被處理部分的結(jié)合,以使結(jié)果與無分裂進程的輸出一樣。分裂運算符存在的特性取決于編碼和流構(gòu)成。應(yīng)當(dāng)指出,進程纖維可能需要其它進程的上下文。在這種情況下,進程進行交互可能是必要的。
另一個較弱的需求是取回的流數(shù)據(jù)是可延遲的,即原始流可以從部分分裂流被重建(降級)。這個需求確保了從服務(wù)器取回數(shù)據(jù)的請求可以被延遲和/或重試,直到用另一個子系統(tǒng)來替代處理部分分裂子系統(tǒng)。
在多個具有不同操作上下文的等價子系統(tǒng)的情況下,例如矢量計算機等,多個子系統(tǒng)可以被分成等價類,它們共享基于分裂/結(jié)合策略的操作上下文。在這些等價類之一中,子系統(tǒng)能夠接替所提供的服務(wù),即子系統(tǒng)能夠通過發(fā)現(xiàn)到分裂/結(jié)合處理的入口點來代替另一個子系統(tǒng)。這可以用以下方法來實現(xiàn)(0)在相同的等價類中的子系統(tǒng)之中,共享由于適當(dāng)?shù)姆至?結(jié)合策略而帶來的操作上下文。王牌維護所有操作中的子系統(tǒng)的數(shù)據(jù)模型;在子系統(tǒng)發(fā)生故障的情況下(1)通過相同的等價類中的子系統(tǒng)來檢測子系統(tǒng)服務(wù)故障;(2)通過導(dǎo)致服務(wù)降級(具有間隙(gap)的流)的結(jié)合進程來忽略故障的子系統(tǒng)服務(wù);
(3)與王牌交換故障的子系統(tǒng);(4)通過王牌來接替來自相同等價類中的子系統(tǒng)的有故障的子系統(tǒng)服務(wù);(5)請求子系統(tǒng)維護(例如交換或重啟子系統(tǒng))。如果新的子系統(tǒng)替換有故障的子系統(tǒng),則這個系統(tǒng)將被配置為王牌。
用于王牌應(yīng)用的實際例子可以是上述鼠標(biāo)位置例子的流。當(dāng)一個子流消失時,遺漏的中間點被插入,直到王牌進程恢復(fù)所述流為止。
另一個例子是向移動設(shè)備傳輸視頻,其中,幀必須被壓縮成合適的顯示格式。壓縮操作代替了分裂和結(jié)合。因此,分裂流的壓縮結(jié)合類似于壓縮的分裂流的結(jié)合。如果一部分消失,則播放(rendering)引擎平滑地顯示剩余的幀。
類似地,本發(fā)明由于一般性而可應(yīng)用于如網(wǎng)絡(luò)網(wǎng)關(guān)的任何密度流處理設(shè)備,例如互聯(lián)網(wǎng)協(xié)議上的語音網(wǎng)關(guān)或如視頻服務(wù)器的媒體服務(wù)器,這是因為通常的媒體流允許分裂操作和質(zhì)量降級,例如忽略這種信息的頻譜中的高階值。
權(quán)利要求
1.一種容錯、可靠的流處理方法,其中,數(shù)據(jù)流被處理裝置處理以產(chǎn)生結(jié)果數(shù)據(jù)流,其中-在處理所述數(shù)據(jù)流之前,將該數(shù)據(jù)流分解(分裂)成至少兩個分裂子流,以使每個分裂子流攜帶所述數(shù)據(jù)流的部分信息,-通過獨立處理所述至少兩個分裂子流來處理所述數(shù)據(jù)流,這產(chǎn)生至少兩個分裂結(jié)果子流,-每個分裂結(jié)果子流攜帶所述結(jié)果數(shù)據(jù)流的部分信息,并且-所述至少兩個分裂結(jié)果子流可組合(結(jié)合)成所述結(jié)果數(shù)據(jù)流,以便在所述分裂子流的一部分不可用的情況下,可以插入遺漏的信息。
2.根據(jù)權(quán)利要求1的方法,其中,所述至少兩個分裂子流的一部分的不可用性,觸發(fā)了所述不可用分裂流的流處理的恢復(fù)。
3.根據(jù)權(quán)利要求2的方法,其中,所述流處理的恢復(fù)是由備用系統(tǒng)來執(zhí)行的,該備用系統(tǒng)維護處理上下文以處理所述至少兩個分裂子流。
4.根據(jù)權(quán)利要求1的方法,其中,分裂流被部分地冗余編碼以插入遺漏的信息。
5.一種適于容錯并可靠地處理數(shù)據(jù)流的設(shè)備或系統(tǒng),其中,所述設(shè)備包括用于數(shù)據(jù)流處理的處理裝置,并且所述設(shè)備或所述系統(tǒng)包括-產(chǎn)生裝置,用于產(chǎn)生至少兩個分裂子流,其中所述至少兩個分裂子流是數(shù)據(jù)流的分解,以使每個分裂子流攜帶所述數(shù)據(jù)流的部分信息,和-處理裝置,適于獨立處理所述至少兩個分裂子流,以產(chǎn)生至少兩個分裂結(jié)果子流,其中,每個分裂結(jié)果子流攜帶所述結(jié)果數(shù)據(jù)流的部分信息,并且其中,所述至少兩個分裂結(jié)果子流可組合(結(jié)合)成所述結(jié)果數(shù)據(jù)流,以便在所述分裂子流的一部分不可用的情況下,可以插入遺漏的信息。
6.根據(jù)權(quán)利要求5的設(shè)備或系統(tǒng),其中,所述設(shè)備或系統(tǒng)還包括檢測裝置,該檢測裝置用于檢測所述至少兩個分裂子流的一部分的不可用性,該不可用性能夠觸發(fā)所述不可用分裂流的流處理的恢復(fù)。
7.根據(jù)權(quán)利要求6的設(shè)備或系統(tǒng),其中,所述設(shè)備或系統(tǒng)還包括備用系統(tǒng)部件,該備用系統(tǒng)部件適于執(zhí)行所述流處理的恢復(fù),并且適于維護處理上下文以處理所述至少兩個分裂子流。
8.根據(jù)權(quán)利要求5、6、或7的設(shè)備或系統(tǒng),其中,所述設(shè)備或系統(tǒng)包括分裂裝置或包括結(jié)合裝置,所述分裂裝置用于將數(shù)據(jù)流分解成至少兩個分裂子流,所述結(jié)合裝置用于將至少兩個分裂子流組合成數(shù)據(jù)流。
9.根據(jù)權(quán)利要求5、6、7或8的設(shè)備或系統(tǒng),其是媒體流處理網(wǎng)絡(luò)節(jié)點,如媒體服務(wù)器、媒體網(wǎng)關(guān)、基站或網(wǎng)絡(luò)客戶端。
10.一種用于容錯并可靠地處理流的計算機軟件產(chǎn)品,其中,所述計算機軟件產(chǎn)品包括用于執(zhí)行根據(jù)權(quán)利要求1的方法的編程裝置。
全文摘要
本發(fā)明涉及一種容錯、可靠的流處理的方法,其中,數(shù)據(jù)流由處理裝置來處理以產(chǎn)生結(jié)果數(shù)據(jù)流,在數(shù)據(jù)流被處理之前,該數(shù)據(jù)流被分解(分裂)成至少兩個分裂子流,以使每個分裂子流攜帶所述數(shù)據(jù)流的部分信息,該數(shù)據(jù)流通過獨立處理至少兩個分裂子流而被處理,以產(chǎn)生至少兩個分裂結(jié)果子流,其中,每個分裂結(jié)果子流攜帶結(jié)果數(shù)據(jù)流的部分信息,并且其中,至少兩個分裂結(jié)果子流可組合(結(jié)合)成結(jié)果數(shù)據(jù)流,以便在分裂子流的一部分不可用的情況下,可以插入遺漏的信息。本發(fā)明因而還涉及一種設(shè)備、一種系統(tǒng)以及一種計算機軟件產(chǎn)品。
文檔編號H04L1/00GK1838580SQ20061006536
公開日2006年9月27日 申請日期2006年3月23日 優(yōu)先權(quán)日2005年3月24日
發(fā)明者M·W·霍赫, P·薩博, H·勒斯勒爾 申請人:阿爾卡特公司