故障安全的流处理的制作方法

文档序号:7958430阅读:138来源:国知局
专利名称:故障安全的流处理的制作方法
技术领域
本发明涉及一种容错,可靠的流处理方法。本发明因而还涉及一种设备、一种系统和一种计算机软件产品。
本发明基于优先权申请EP 05290650.0,在此将其引入作为参考。
背景技术
存在一大类新兴的应用,其中,在一些外部环境中产生的数据被异步推送到处理该信息的服务器或客户端。一些示例性应用包括传感器网络、位置跟踪服务、生产线管理、网络管理以及流式媒体应用。这些应用的特征在于需要以及时且响应的方式来处理大量数据流。许多这种基于流的应用被自然地分布,通常被嵌入具有许多连接的计算设备的环境中,所述计算设备具有不同种类的能力。当数据从其起始点(例如传感器)下行到应用时,它经过许多计算设备,所述计算设备中每一个都是潜在的计算目标。而且,为了克服时变负载峰值以及改变要求,针对所述问题而应用许多服务器。在两种情况下,分布式计算是标准。
在2003CIDR会议记录中的Mitch Cherniack等人的“ScalableDistributed Stream Processing”中,公开了一种能够模拟数据流处理的流处理器。
Annette Stmple在其论文“Stream Based Design of DistributedSystems through Refinement”中详述了一种基于流的构架,用于通过逐步求精法来设计分布式系统中的部件。分布式系统被看作是通过单向信道连接的异步通信部件的网络。消息流对信道上的通信历史(history)进行建模。将输入历史映射到输出历史的流处理功能描述了一种部件。每个部件的行为由流处理功能来指定。
在John David等人发表在IEEE学报知识与数据工程Vol10,NO.5,1998的“A Unified Data Model for Representing Multimedia,Timeline,andSimulation Data”中,描述了一种统一的数据模型,该模型利用一组相关的数据建模结构来表示多媒体、时间线以及模拟数据。用于多媒体类型的同一模型以一致的方式构成图像、音频、视频以及较长的文本数据,这给出了多媒体方案,并且甚至针对这些复杂的数据类型而查询数据独立性的程度。拥有固有时间元素(intrinsic temporal element)的信息都可以利用称作流的结构来被表示。流可以被聚集成并行的多流,这因而提供了用于查看多组基于时间的信息的结构。所述统一流结构允许实时测量、数字模拟数据以及数据的可视化,其中所述数据要利用同一组运算符而被聚集并处理。
本领域的理论发展开始于1986年的Vaughan Pratt的开创性论文“Modeling Concurrency with Partial Orders”,其中并发性被看作是动作的流,可能的执行序列已经例如特别按照形式语言(典型地通过混洗(shuffle)运算符)、偏序以及时态逻辑、Kripke结构而被不同地表达。单个混合方法具有混合了代数学和逻辑学的丰富语言并且具有流模型的自然类别。当前的开发,比如斯坦福计算机科学系2005年的“Chu Spaces andtheir Interpretation as Concurrent Objects”,将这种流看作是Chu空间,Chu空间是从集合到反集合的二元关系,所述反集合被定义为通过逆功能来变换的集合。通过实现在数学和计算实践中出现的所有小的具体类别和多数大的类别,Chu空间容许大量的解释。计算机科学特别关注的是它们作为计算进程的解释,其让反集合成为在时间中分布的事件的调度(schedule)、让集合成为构成Scott意义上的信息系统的状态的自动化(automaton),并且让关系中的对成为历史产生的单独副本。状态上的转变和调度上的优先的传统齐次二元关系,被分别恢复为与自身的非齐次二元关系的右和左余项(residual)。Chu空间的自然代数学是线性逻辑的,通过进程解释来进行进程代数。
全部已知方法共享公共的特性,即从有意义的对象(object)来处理并且组合流。本发明的目的是通过允许分解流的新运算符来增强流处理。作为所呈现的副效应,这种运算符的应用增强了系统启动时间和一大类流式媒体相关的服务的可用性和可靠性。
先前已知的例如串行(tandem)处理或三重(triple)冗余系统的部件冗余、例如多传输路径的传输冗余以及数据冗余,共享了所有方法至少需要附加处理资源这一缺点。
冗余是提供多个可互换部件来执行单个功能,以克服故障和错误。
冗余通常主要应用于硬件。例如,可以安装两个或甚至三个计算机/进程来进行同一工作。存在几种方式来使用这些计算机/进程。它们可以一直是激活的,这因而通过并行处理而给出了额外的性能以及额外的可用性;一个是激活的而其它简单地监控其活动以便在其发生故障的情况下接替它)(“热备用”);“备用”可以保持关闭并且仅在需要时被开启(“冷备用”)。硬件冗余的另一个公共形式是磁盘镜像。冗余也可以被用来检测硬件或软件中的错误并且从该错误中恢复。已知的例子是循环冗余校验,其向块添加冗余数据以便在存储或传输过程中检测恶化。例如如果在安全关键系统中错误成本足够高,则利用由三个分离团队和某个系统所编程的三个分离的计算机,可以将冗余用于硬件和软件二者中,以检查它们都产生相同的答案,或某种多数表决法。
例如流数据结构内的冗余是消息的总信息量的一部分,它可以被去除而不会丢失基本信息。
理论上,冗余是用1减去实际不确定度(uncertainty)与最大不确定度之比。这是消息结构的一部分,它不是通过发送方的选择来被确定的,而是通过控制正讨论的符号选择的公认统计规则来被确定的。
容错是系统或部件尽管出现硬件或软件故障也继续正常操作的能力。这通常涉及冗余度。
在cornell大学的技术报告TR95-1517中,Dexter Kozen等人的“Efficient Algorithm for Optimal Video Transmission”,解决了在有限带宽的信道上发送编码视频流的问题。当有足够带宽可用时,一些数据必须被丢弃。对于许多视频编码来说,一些数据比其它数据更重要。在该论文中建议确定优先级,这优化了显像品质。
因此,为了传输带宽而知道可接受信息丢失和丢失信息的信息插入的概念。

发明内容
在下文中,流是这样的实体表示任意种类的不必完全有序的实体序列或值。这些实体或值称为流的元素。排序是时间性(tempral)的流实体的元素按时间被区分为不同的实例(instance)。流还具有当前时间的概念,可以根据该概念来确定序列中的当前元素。
子流是这样的流其本身是另一个流的元素的元素或流。它们通常将总的序列分成语义上有意义的部分。因此,子流允许流数据模型与时间进化的(temporal evolutionary)数据进行交互。按照数字视频,子流可以被认为是整个视频序列中的独立情景。
增强系统的可靠性和容错的问题通过流处理而得到解决,其中,数据流被处理以产生结果数据流,以便在数据流被处理之前,该数据流通过分裂(fission)而被分解成至少两个分裂子流,以使每个分裂子流都携带所述数据流的部分信息,然后该数据流通过处理至少两个分裂子流而被处理,这独立地产生至少两个分裂结果子流,其中,每个分裂结果子流携带所述结果数据流的部分信息,并且其中,所述至少两个分裂结果子流通过结合(fusion)而被组成结果数据流,以便在分裂子流的一部分不可用的情况下,可以插入遗漏的信息。直观地子流的传统观点是原始流(具有开始和结束位置)上的垂直分裂的结果,而分裂是通过原始流(具有可评估部分)的水平分裂。
换言之,建议替换通常的恢复机制,即并行流处理,其中流被完全分离。
流的分裂和结合被应用于流处理的纤维式分布(fibered distribution),以便在发生故障的情况下,部分(降级的)流处理和结果流(服务)保留。本发明基于以下三种假设-一种系统,其具有部件,每个部件都具有操作上下文(context),例如用于处理两个连续流的分裂部件(用于流分解)和结合部件(流组合);-一种(连续)流,其是可分裂且可结合的,其特性是流信息可以从分裂结果中被部分重建;-优选地一种备用系统,其连续监控操作上下文并且在发生故障的情况下代替处理部件。
如前面所提到的,分裂意味着流水平分裂成子流,以便该子流携带(稍微降级的)信息。结合是逆功能,即将子流合并或组合成原始流。
将分裂(分解)应用于流,以在子系统中分配所述流,并且相应地将结合(组合)应用于结果。当子系统发生故障(go down)时,在剩余的处理分支上执行降级的服务。优选地,在第二阶段中,备用子系统(简言之王牌(joker))替换发生故障的子系统,以使该发生故障的子系统在维护或修复阶段可以被替换,被重新初始化等,并且被配置为新的王牌。所述系统一直保持为可用,没有系统被关闭或者重启。
这具有这样的优点网络性能和用于流式媒体处理的恢复管理得到改进。所述系统总是处于开启状态,并且所述服务总是可用而且更加可靠。系统故障不会导致系统崩溃,而只会造成短期内服务平滑的降级。其就处理资源来说相当便宜,也不耗费分裂和结合工作以及可选地耗费备用系统,这是因为该子系统在多个等同的子系统之中共享。因此,所述冗余概念本身得到了改进。
本发明还具有这样的优点所述系统即使在维护阶段也能总是保持开启。因此,可以用质量降级的成本来在操作时替换部件。


参考附图及其描述,本发明的所述及许多其它目的和优点对于本领域的技术人员将变得显而易见,其中
图1是根据现有技术并根据本发明的流及其分解的示意图;图2是根据本发明方法的原理的示意图;图3是根据本发明系统的原理的示意图;图4是根据本发明的具有王牌部件的系统原理的示意图。
具体实施例方式
图1示出了几个流S1、S1.1和S1.2,以及S1.a和S1.b。第一流S1包括元素E的序列。
这个序列,或更一般地通过时间的元素的顺序,携带了一种信息,该信息通过从流到语义域的映射I来表达。此外,所述信息具有一种质量,该质量是从语义域到有序域的映射Q,给每个信息一种质量。例如考虑MPEG编码流,其携带图片序列信息作为信息。这种信息的质量在其可视表示中可以通过下列因素而被区分例如涉及抖动的显像品质、延迟、分辨率等。在这种情况下,所述质量可以是对测量的映射,例如显像品质的经验值,0=辨别不出、1=可以辨别、2=可接受、3=非常好。
附图还示出了垂直分解VD,如在“A Unified Data Model forRepresenting Multimedia,Timeline,and Simulation Data”中所显示的子流,其中两个子流S1.1和S1.2聚集成第一流S1。从聚集信息中产生所述分解。平面(flat)流是不可分解的。垂直可分解流的例子是由剪辑序列组成的视频流。垂直不可分解的流例如是没有附加语义的明文整数序列。
附图示出了向两个分裂子流S1.a和S1.b的水平分解HD。这个分解不依赖于聚集信息而依赖于所携带的信息。这种分裂的需求是每个分裂子流S1.a和S1.b都携带原始流S1的信息,其中允许信息质量降级。
两种分解都是可逆的,即可以从子流重建原始(被分解)流。
水平分解可以通过两个运算符来表达,将一个流映射成子流之和的分裂运算符FI,以及将子流之和映射成一个流的结合运算符FU,其中,S=FU(FI(S))。
例如,考虑由例如来自鼠标指针的坐标所组成的流
S=[(x1,y1);(x2,y2);(x3,y3);(x4,y4);(x5,y5);(x6,y6);(x7,y7);...]让分裂运算符将具有奇数索引的坐标映射成第一分裂流,而将具有偶数索引的坐标映射成第二分裂流,即FI(S)='>[(x1,y1);(x3,y3);(x5,y5);(x7,y7),...][(x2,y2);(x4,y4);(x6,y6);...],]]>而对应的结合运算符FU(S.a,S.b)逆操作从分裂子流中交替地取出坐标,并且将它们(以正确的顺序)合并成一个流。
由坐标构成的流的质量是坐标信息的密度。由一个元素(x,y)给出的信息在该例子中显然是屏幕上的位置。因此,可用的位置越多,指针的指定就越精确。此外,所述信息必须是实际的,即局部密度是质量而不是平均模糊(averaged blur),即分裂'>[(x1,y1);(x7,y7);...][(x2,y2);(x3,y3);(x4,y4);(x5,y5);(x6,y6);...]]]>不是水平分解,这是因为第一子流的质量太低。
水平分解允许从质量降级的分裂子流的一部分中重建原始信息。
在上述例子中,具有奇数索引坐标的流以及具有偶数索引坐标的流足以用于定点(pointing)。即使不是那样,中间坐标也可以例如通过线性多项式、样条(spline)等来被插入,这是因为可以假定指针的轨迹是连续的。
在分裂子流中携带部分信息而不是信息片段这一事实,是通过构成序列的较少元素而不是全部元素来表达的。
图2示出了水平分解的应用。假设存在向两个所示分裂子流S1.a和S1.b的水平分解HD。所述流中的每一个都例如通过分离的进程、任务而在分离的线程中被处理,或者甚至通过分离的硬件P.a和P.b来被处理。该处理产生了两个结果分裂子流RS1.a和RS1.b。这两个流可以通过(除处理部件之外的)另一个系统部件C而被结合成结果流RS1。
目前,这看起来类似于一种用于流的并行(矢量)处理的特殊方法。根据较近的研究,增加了可靠性。可以从以下起始点来看待流处理具有进程P,其将流S转变成结果流RS,即P(S)=RS。根据本发明,流S被水平分解成(这里是一对)分裂子流之和,即FI(S)=<S.a,S.b>,在图中是S1.a和S1.b。进程映射P被相应地分成P.a和P.b。应当指出,这些映射是原始映射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)>).
这具有这样的效果无论何时进程发生故障或流变得恶化或毁坏,具有降级质量的结果流都保持可用。假设例如分裂子流S1.b毁坏或者进程P.b发生故障,则发生下列情况RS′1=FU(<P.a(S1.a),[]>)。这个结果流携带原始RS1的信息,即I(RS′1)=I(RS1),但具有较低的质量,Q(I(RS′1))。
用指针的坐标流来扩展上述例子,进程P可以是将坐标从一个坐标系映射到另一个坐标系的线性变换。由于这个进程是逐点(point wise)的,即逐元素的,因此用于具有奇数索引坐标的分裂子流和具有偶数索引坐标的分裂子流的变换的简单复制可以完成这项工作。
相反,垂直分解会导致严重的信息缺乏。
图3示出了一种结构,其用于更可靠地并行处理两个流而无需(除分裂和结合之外的)附加进程。两个流S1和S2必须通过进程P来处理,其产生两个结果流RS1和RS2,即'>RS1RS2='>P(S1)P(S2).]]>根据本发明的有利设备包括分裂部件D1和D2以及用于组合结果流的结合部件C1和C2。这根据下列方案来实现'>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).]]>这具有这样的优点无论何时一个处理部件发生故障,输出上的每个信息都保留。相反,方案'>RS1RS2='>P(S1)P(S2)]]>中的下行(down-going)处理器P导致严重的信息丢失,即结果流之一会毁坏或恶化。
显然,这种流处理方法可以用这样的方法来联合推广应用从'>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)能够将如第一流处理的任何矢量变换成有利的第二个。
图4示出了优选实施例中的设备结构,即具有王牌部件PJ.b。从先前附图中示出的结构开始,所述设备还包括分裂部件D1和D2、结合部件C1和C2,以及处理部件P.a和P.b。上面提到的两个流S1和S2被馈入,并且结果流SR1和SR2被产生。
如上面所提到的,当处理部件发生故障时,在图片P.b中,结果流的质量降级。为了恢复原始操作,建议一种恢复过程。称为王牌处理器PJ.b的备用部件被建议用来接替故障部件的任务。为了立即用所述处理器来替换故障进程,所有(或至少关键的)处理部件的处理上下文是由王牌处理器来维护的。在处理器发生故障的情况下,该故障可以例如通过校验和等从结果流中被发现,以及例如通过有效信号或监视器(watchdog)等从处理器本身中被发现。
当发现故障时,王牌具有足够的信息(或者通过调度程序(dispatcher))将自己调入如虚箭头所示的处理方案中。由于设计的对称性,故障部件可以在第二恢复阶段中被调用为(当操作恢复时)新的王牌部件。
这意味着冗余处理器可以接替故障处理器的工作,以便整个有效操作如附图所示的那样返回。这个分配原理允许平滑的恢复而不会丢失全部信息。优选地,调度程序负责适配处理器的上下文。所述上下文切换会花费一些时间,但是在中间阶段,只会发生质量降级而不是信息丢失。
处理实况流具有双重困难。首先,稳健过程(robust procedure)必须有效,以无延迟地处理流。其次,即使处理单元发生故障,实况流消耗也是可能的。音频流或视频流就是很好的例子。它们必须被实时地处理,并且在几种情况下它们是可分裂和可结合的,其特性是即使遗漏一个子流,流信息也仍然存在。只有(音频或视频)流的质量在短期内降低,直到王牌替换发生故障的处理部件为止。
如许多音频和视频流的一类连续信息具有这样的特性适当的子流(分裂流)甚至包括可接受质量的信息,以便原始流的信息可以被呈现/或甚至通过插入等被重建(质量降级)。
所建议的稳健解决方案基于几种假设。连续数据(流)必须允许数据流的分裂,以使得只处理分裂的一部分导致服务质量降级但不毁坏数据所携带的信息。这种消失(disappearing)会持续到服务质量变得不可接受为止,即信息丢失。而且必须允许从分裂中显现的被处理部分的结合,以使结果与无分裂进程的输出一样。分裂运算符存在的特性取决于编码和流构成。应当指出,进程纤维可能需要其它进程的上下文。在这种情况下,进程进行交互可能是必要的。
另一个较弱的需求是取回的流数据是可延迟的,即原始流可以从部分分裂流被重建(降级)。这个需求确保了从服务器取回数据的请求可以被延迟和/或重试,直到用另一个子系统来替代处理部分分裂子系统。
在多个具有不同操作上下文的等价子系统的情况下,例如矢量计算机等,多个子系统可以被分成等价类,它们共享基于分裂/结合策略的操作上下文。在这些等价类之一中,子系统能够接替所提供的服务,即子系统能够通过发现到分裂/结合处理的入口点来代替另一个子系统。这可以用以下方法来实现(0)在相同的等价类中的子系统之中,共享由于适当的分裂/结合策略而带来的操作上下文。王牌维护所有操作中的子系统的数据模型;在子系统发生故障的情况下(1)通过相同的等价类中的子系统来检测子系统服务故障;(2)通过导致服务降级(具有间隙(gap)的流)的结合进程来忽略故障的子系统服务;
(3)与王牌交换故障的子系统;(4)通过王牌来接替来自相同等价类中的子系统的有故障的子系统服务;(5)请求子系统维护(例如交换或重启子系统)。如果新的子系统替换有故障的子系统,则这个系统将被配置为王牌。
用于王牌应用的实际例子可以是上述鼠标位置例子的流。当一个子流消失时,遗漏的中间点被插入,直到王牌进程恢复所述流为止。
另一个例子是向移动设备传输视频,其中,帧必须被压缩成合适的显示格式。压缩操作代替了分裂和结合。因此,分裂流的压缩结合类似于压缩的分裂流的结合。如果一部分消失,则播放(rendering)引擎平滑地显示剩余的帧。
类似地,本发明由于一般性而可应用于如网络网关的任何密度流处理设备,例如互联网协议上的语音网关或如视频服务器的媒体服务器,这是因为通常的媒体流允许分裂操作和质量降级,例如忽略这种信息的频谱中的高阶值。
权利要求
1.一种容错、可靠的流处理方法,其中,数据流被处理装置处理以产生结果数据流,其中-在处理所述数据流之前,将该数据流分解(分裂)成至少两个分裂子流,以使每个分裂子流携带所述数据流的部分信息,-通过独立处理所述至少两个分裂子流来处理所述数据流,这产生至少两个分裂结果子流,-每个分裂结果子流携带所述结果数据流的部分信息,并且-所述至少两个分裂结果子流可组合(结合)成所述结果数据流,以便在所述分裂子流的一部分不可用的情况下,可以插入遗漏的信息。
2.根据权利要求1的方法,其中,所述至少两个分裂子流的一部分的不可用性,触发了所述不可用分裂流的流处理的恢复。
3.根据权利要求2的方法,其中,所述流处理的恢复是由备用系统来执行的,该备用系统维护处理上下文以处理所述至少两个分裂子流。
4.根据权利要求1的方法,其中,分裂流被部分地冗余编码以插入遗漏的信息。
5.一种适于容错并可靠地处理数据流的设备或系统,其中,所述设备包括用于数据流处理的处理装置,并且所述设备或所述系统包括-产生装置,用于产生至少两个分裂子流,其中所述至少两个分裂子流是数据流的分解,以使每个分裂子流携带所述数据流的部分信息,和-处理装置,适于独立处理所述至少两个分裂子流,以产生至少两个分裂结果子流,其中,每个分裂结果子流携带所述结果数据流的部分信息,并且其中,所述至少两个分裂结果子流可组合(结合)成所述结果数据流,以便在所述分裂子流的一部分不可用的情况下,可以插入遗漏的信息。
6.根据权利要求5的设备或系统,其中,所述设备或系统还包括检测装置,该检测装置用于检测所述至少两个分裂子流的一部分的不可用性,该不可用性能够触发所述不可用分裂流的流处理的恢复。
7.根据权利要求6的设备或系统,其中,所述设备或系统还包括备用系统部件,该备用系统部件适于执行所述流处理的恢复,并且适于维护处理上下文以处理所述至少两个分裂子流。
8.根据权利要求5、6、或7的设备或系统,其中,所述设备或系统包括分裂装置或包括结合装置,所述分裂装置用于将数据流分解成至少两个分裂子流,所述结合装置用于将至少两个分裂子流组合成数据流。
9.根据权利要求5、6、7或8的设备或系统,其是媒体流处理网络节点,如媒体服务器、媒体网关、基站或网络客户端。
10.一种用于容错并可靠地处理流的计算机软件产品,其中,所述计算机软件产品包括用于执行根据权利要求1的方法的编程装置。
全文摘要
本发明涉及一种容错、可靠的流处理的方法,其中,数据流由处理装置来处理以产生结果数据流,在数据流被处理之前,该数据流被分解(分裂)成至少两个分裂子流,以使每个分裂子流携带所述数据流的部分信息,该数据流通过独立处理至少两个分裂子流而被处理,以产生至少两个分裂结果子流,其中,每个分裂结果子流携带结果数据流的部分信息,并且其中,至少两个分裂结果子流可组合(结合)成结果数据流,以便在分裂子流的一部分不可用的情况下,可以插入遗漏的信息。本发明因而还涉及一种设备、一种系统以及一种计算机软件产品。
文档编号H04L1/00GK1838580SQ20061006536
公开日2006年9月27日 申请日期2006年3月23日 优先权日2005年3月24日
发明者M·W·霍赫, P·萨博, H·勒斯勒尔 申请人:阿尔卡特公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1