Web服务故障的分类方法

出处:landysky 发布于:2012-09-18 09:55:41

  摘 要: Web 服务故障分类是实现故障诊断的基础。在分析了Web 服务的故障管理流程的基础上,提出了Web服务类型和执行过程相结合的Web 服务故障分类方法,构建了Web 服务故障树,根据故障及其外部表现间的对应关系构造了Web 服务故障矩阵,通过分析和验证说明Web 服务分类方法能够有效支持快速、准确的Web 服务故障诊断。

  随着Web 服务技术在分布式应用系统的广泛应用,Web 服务正逐步成为Internet 环境中资源封装的标准形式,Web 服务粗粒度、松耦合等特性在增加业务应用的灵活性和分布式系统的自适应能力同时,也增加了应用系统的复杂性。为了提高基于Web 服务的分布式应用系统的可用性,故障管理成为Web 服务管理技术的研究热点。而科学、合理的故障分类是及时、准确地判断故障根源并正确响应的基础。

  为实现Web 服务故障的自诊断和自恢复,K.S.May Chan从产生原因的角度将Web 服务故障分为三类,即物理故障、开发故障和接口故障,在此基础上进一步将这三类故障细化为若干故障子类,并在故障子类与可观测的故障现象之间建立了关联关系,该关联关系为故障诊断提供依据,但在三类故障之下所涵盖的故障子类不够全面,降低了故障诊断的准确性;M.G. Fugini从产生层次的角度,将Web 服务故障分为Web 服务执行故障、应用组合故障、操作数故障、QoS 违反故障及内部数据故障等六类,并针对这些故障类型提出了两种故障响应方式,在故障类型与响应方式间建立关联关系,该关联关系为故障响应提供依据,但是六类故障间存在相互交叉界限不清等问题,增加了故障诊断的复杂性;Stefan Brüning则从故障检测的角度提出了SOA 体系结构下Web 服务的故障分类,但是其分类方法主要依据SOA 的执行步骤,没有区分Web 服务的类型,难以直接用于Web服务故障诊断。

  针对已有Web 服务故障分类存在的不足,本文首先分析了Web 服务的故障管理流程,然后系统梳理了基于Web 服务的分布式应用系统故障类型,提出了Web 服务类型和执行过程相结合的Web 服务故障分类方法,构建了Web 服务故障树;并对各类型Web服务故障的外部表现进行了分析,根据故障及其外部表现间的对应关系构造了Web 服务故障矩阵,通过对比分析和实现验证,充分说明Web 服务分类方法和故障矩阵对于实现快速、准确的Web 服务故障诊断具有重要作用。

  1 Web服务故障管理

  Web 服务故障管理的目的是保证Web 服务安全、高效、可靠地运行,它是指当Web 服务应用系统出现异常时,系统能够自动根据故障产生的故障现象,利用检测得到的信息,对故障进行诊断,并终确定根故障原因,然后再依据故障知识库中的相关知识提供正确的故障响应方法。

  Web 服务故障管理主要包括故障检测与诊断FDD(Fault Dectection and Diagnosis)和故障容错控制FTC(Fault-tolerant Control)两个部分,管理流程如图1 所示。

图1 Web 服务故障管理流程

图1 Web 服务故障管理流程

  故障检测与诊断从Web 服务中适时准确地检测出故障信息,并对故障产生的原因、类型、位置及其发展做出判断;故障容错控制[8]则是根据不同的故障源和故障特征做出决策方案,并采取相应的容错控制措施,对故障进行补偿、抑制、削弱和消除,以保证Web 服务继续安全可靠运行,或用降低性能的方法保证Web 服务在规定时间内完成其基本功能。故障检测与诊断为故障容错控制提供必须的诊断结果。其中,故障诊断过程可以看作是一个故障类型识别过程,识别系统依据故障类型和故障矩阵库所提供的故障原因与可观测的故障现象的因果关系逐层分析推理故障原因,终确定根故障原因。

  由此可见,故障检测与诊断是故障容错控制的前提条件,也是故障管理的基础,而掌握故障的类型及故障类型与故障现象的关联关系又是故障检测与诊断的必要条件之一,因此只有先明确了故障本身的特性才能对其进行及时、准确地管理。

  2 Web服务故障分类

  目前,针对Web 服务容错处理的相关研究较多,但是对于Web 服务故障的分类方法的研究却比较少。

  现有Web 服务故障分类方法主要采用的分类原则有三类:一是按照故障产生的原因分类,二是按照故障产生的层次分类,三是按照Web 服务的执行过程分类。本文提出的Web 服务故障分类方法采用了第三类分类原则,即从Web 服务的类型和执行过程相结合的角度对故障分类。依据这一分类原则,本文从Web 服务执行过程中所有可能产生故障的环节入手对故障进行分类,相对于前两种分类原则,该原则具有系统性强、完备性高的特点,得到的故障分类更加全面、具体,并为故障根源分析提供了实际的、可操作的依据。

  自顶向下,首先建立基于Web 服务的应用系统的故障树,明确Web 服务故障的位置;然后深入研究Web 服务故障的分类。

  2.1 Web 服务故障类型

  基于Web 服务的应用系统是分布式系统,所有在分布式系统中可能出现的故障类型也都可能在基于Web 服务的应用系统中产生。基于Web 服务的应用系统的故障主要可以分为网络故障和节点故障两大类,每一类又可以分为软件故障和硬件故障,如图2所示。Web 服务故障属于节点故障中的软件故障,它与故障树中的其他故障存在一定的因果关系。在诊断基于Web 服务的应用系统故障时,应当按照故障树的结构自底向上逐层分析应用系统的运行状态,定位故障。对于网络、系统的故障分类和诊断,人们已经进行了深入研究,在此不再赘述。本文将重点分析Web服务的故障分类。

图2 基于Web 服务的应用系统故障树

图2 基于Web 服务的应用系统故障树。

  从Web 服务自身的特点来看,Web 服务是部署在Web 上的对象或组件,是基于Web 服务提供者、Web 服务请求者、Web 服务中介三个角色,以及发布、发现、绑定三个步骤构建的。Web 服务提供者是Web服务的拥有者,它为其他服务和用户提供功能;Web服务请求者是Web 服务功能的使用者,利用SOAP消息向Web 服务提供者发送请求以获得服务;Web服务中介的作用是把一个Web 服务请求者与合适的Web 服务提供者联系在一起,充当管理者的角色,如UDDI 注册中心或基于EBXML 的注册中心。

  Web 服务实现了服务提供者和消费者之间的动态链接,是构建松耦合分布式系统的关键技术。动态链接性,使Web 服务应用系统能够适应快速变化的环境和需求。然而,与此同时这种动态特性也引入了新的故障问题,在Web 服务执行的整个过程中,发布、发现、绑定和执行等环节都有可能产生故障,而且如果不及时处理这些故障,将会导致Web 服务应用系统失效的严重后果。

  依据将Web 服务类型和执行过程相结合对故障进行分类的原则,本文提出了如图3 所示的Web 服务故障分类。

图3 Web 服务故障分类

图3 Web 服务故障分类

  首先,根据Web 服务的复杂程度,将Web 服务故障分为原子Web 服务故障和组合Web 服务故障。

  然后,按照Web 服务执行过程的四个步骤,可以将原子Web 服务故障分为发布故障、发现故障、绑定故障和执行故障四个子类,再依据故障产生的原因对每一个子类进一步划分。依据组合Web 服务的实现过程,将组合Web 服务故障分为组合组件故障、组合过程故障和执行故障三类,并在此基础上根据故障产生原因再对每类故障进行逐步细化。

  下面对原子服务故障和组合服务故障分别进行说明。首先从原子服务故障的四个子类(发布故障、发现故障、绑定故障和执行故障)出发,对其所涵盖的各个子类进行阐述。

  (1) 发布故障。

  即在Web 服务发布过程中可能产生的故障。在这一过程中,Web 服务被部署到服务器上,并向服务注册中心注册服务功能及访问接口,此阶段可能出现两类故障,即WSDL 文件描述故障和服务部署故障。

  WSDL 文件描述故障是指服务的描述信息不正确。这又存在两种可能性,一是描述信息本身错误(服务描述不正确),二是服务描述信息与所部署的服务不匹配(服务与描述不匹配)。其中,由于描述信息不正确导致的故障,通过检查描述文件就能够做出判断。描述信息错误也存在两种情况,一种是格式故障,即服务描述的格式不正确,如,XML 文件漏掉了一些标签;另一种是内容故障,如,描述中所指定的算法不存在。

  此外,由部署的服务与提供的描述信息不匹配所导致的故障则存在三种情况,一是描述信息不完整,即服务所提供的性能多于描述信息中所发布的内容;二是描述中的性能未提供,即服务本身并未提供描述信息中提到的性能;三是性能描述不正确,即描述的性能与实际提供的性能不匹配。

  服务部署故障出现在服务不能在目标平台成功部署时。这可能是由于以下两种原因所致,一是服务与服务器不匹配,即服务与服务器的软件版本不匹配,所导致的服务不能执行或执行受限;二是服务所需的资源未找到,此时服务也许能够部署成功但却无法执行。部署故障只有通过服务执行过程中的错误信息进行诊断。

  (2)发现故障。

  发现服务过程中的故障,可能产生于查找特定种类的服务或返回服务的过程中。

  相对容易判断的故障是服务未发现。产生这种故障的原因有:需要的服务不存在,或服务未在发现服务中列出。发现的服务错误是比较难诊断的故障。这类故障往往会导致服务输出的结果不正确。导致这种故障产生的原因有指定了不正确的发现标准、查找服务本身发生故障或提供的说明与实际提供的服务不匹配。

  (3)绑定故障。

  在绑定期间,服务的消费者和服务的提供者会就服务执行的条件进行协商。当出现授权拒绝、失败、审计问题或缺乏安全性时,就可能导致绑定被拒绝。而且,客户端也可能被绑定到错误的服务,这可能是因为服务的描述信息不正确或者是服务发现错误等原因。

  (4)执行故障。

  当服务执行完,但输出的结果与期待的输出不匹配时,就会产生执行故障。

  服务可能已经崩溃,但服务器通常会发现崩溃的服务并把服务崩溃的消息通知给客户端。如果服务返回的结果不正确,则可能是因为软件故障或输入不正确造成的,而输入错误则可能是由转换故障或输入越界所致。服务器崩溃和通信故障都会导致服务执行超时。

  以上各类故障都可能是由超时导致的。超时故障可能是由服务器崩溃或通信故障所造成的,而服务器崩溃属于分布式故障的范围,它可能是由硬件、软件或网络故障所致。

  组合Web 服务故障包括组合组件故障、组合过程故障和执行故障三个子类,下面分别说明:

  (1)组合组件故障。

  组合多个服务创建一个新服务的能力是Web 服务的基本特点。组合组件故障会导致组合服务故障,组合组件故障包含两种情况:一是组合服务中的任意一个原子服务故障,二是原子服务与业务流程中的需求不匹配,这两种都会导致整个组合服务不可用。

  (2)组合过程故障。

  即在服务组合过程中产生的故障。在这一过程中,组合引擎按照业务流程将多个Web 服务组合成一个新的Web 服务,此阶段可能出现三类故障,即业务流程故障、组合引擎故障和组合超时故障。

  业务流程故障是指流程中所定义的组合过程不正确。这又存在两种可能性,一是流程定义内容不一致,二是流程定义内容不完整。目前对组合Web 服务的描述大都采用基于BPEL 的流程文件定义的,所以对于业务流程故障的这两种情况,通过分析检查BPEL 文件就能做出判断。

  组合引擎故障是指由组合引擎出现的问题导致服务无法实现组合的故障。组合引擎负责实现业务逻辑并提供数据传输和转换等简单的基础服务,其内部可使用多种技术和设计模式。这种故障可以根据组合引擎返回的消息做出判断,或依赖于组合服务容器提供的监控功能进行诊断,如JBI 环境中提供的"JBI 运行时"管理。

  组合超时故障可能是由服务器崩溃或通信故障所造成的,而服务器崩溃属于分布式故障的范围,它可能是由硬件、软件或网络故障所致。

  (3)执行故障。

  组合服务的执行故障与原子服务类似。包括:原子服务崩溃、组合服务崩溃、结果不正确和执行超时四种情况。

  2.2 Web 服务故障矩阵

  通过分析Web 服务执行过程中可能产生的故障类型与故障现象的因果关系,建立的故障与故障现象的关联关系矩阵,即故障矩阵,如图4 所示。

图4 Web 服务故障类型与故障现象矩阵。

图4 Web 服务故障类型与故障现象矩阵。

  故障矩阵中的两个维度,分别是故障类型。(横向)和故障现象类型(纵向),位于矩阵下方的则是导致故障产生的终原因。从Web 服务使用者,即用户的角度看,Web 服务故障可能表现出的故障现象有:Web 服务未响应、服务输出结果不正确、服务生成多个结果、服务生成的结果不一致、服务速度慢和服务结果输出超时等。故障现象与故障之间是多对多的关系。一种故障现象的出现,可能是由多个类型的故障所致,同样,同一类故障也可能会导致多种故障现象出现。例如,故障现象"Web 服务未响应"就可能是由"WSDL描述故障"、"服务未发现"、"QoS 故障"等所导致。

  故障类型与故障现象之间的对应关系由矩阵中的圆点表示,故障类型与故障产生原因之间的关系则由故障类型箭头下的连线表示。故障矩阵不仅反映了故障类型与故障现象的因果关系,同时也表示了故障类型与故障根源之间因果关系。

  故障矩阵明确了故障现象与故障类型之间的对应关系,是Web 服务故障的根源分析的基础。例如,当出现"服务输出结果不正确"的故障现象时,如图4中加粗显示部分,故障诊断服务根据故障矩阵可以将故障类型确定在"绑定到错误服务"、"发现错误服务"、"QoS 故障"、"执行输入不正确"、"原子服务与需求不匹配"和"业务流程故障"的故障范围内,然后通知驻留在Web 服务上的诊断代理采用与故障类型相关的检测方法进行检测,再对检测返回的结果进行分析计算得出故障范围内故障类型的出现概率,并依据出现概率大小确定故障类型为"发现错误服务故障";然后再进一步根据故障矩阵找到可能的故障原因范围并确定所需检测的信息,如"WSDL 文件格式错误"、"服务查询标准错误"等,在对获得的相关检测信息分析后,确定终的根故障原因,如"WSDL 文件内容冲突".

  3 分析与验证

  3.1 对比分析

  通过对已有分类方法的分析,可发现本文提出的Web 服务故障分类方法在划分的故障类型及对故障根源分析的支持方面都具有明显优势。各种分类方法对比如表1 所示。

  3.2 实现验证

  在Web 服务故障分类方法和故障矩阵的基础上,设计实现了基于策略的Web 服务故障管理子系统,该子系统作为Web 服务综合管理系统的重要组成部分,完成Web 服务故障的监测和诊断功能。子系统体系结构如图5 所示。

表1 分类方法的比较

表1 分类方法的比较

图5 基于策略的Web 服务故障管理体系结构。

图5 基于策略的Web 服务故障管理体系结构。

  Web 服务故障管理功能是以Web 服务的形式对外提供的。故障管理服务负责整个Web 服务应用系统的管理控制,依据管理员定义的一系列管理策略接收和处理被管Web 服务提供的相关信息,完成Web 服务故障监测、诊断和响应的功能。故障管理服务包括故障监测模块、故障诊断模块、故障响应模块、策略管理模块、数据管理模块、数据库和故障管理接口模块、策略数据库、故障矩阵库、监测数据库、响应知识库,位于底层的是被管对象层,它由各个Web 服务被管对象及各自的故障管理代理(Agent)组成,故障管理代理负责收集Web 服务被管对象的信息和响应故障管理服务发来的轮询信息。

  故障监测模块,是按照预先定义的故障监测策略采集故障数据,并依据故障矩阵库提供的故障症状特征判断故障症状是否出现,如果故障症状出现则将信息写入告警信息库;故障诊断模块,是利用故障矩阵库中故障症状与故障类型的关联关系找到引起告警信息库中的故障症状的故障范围(这一过程对于故障诊断效率的提高至关重要),然后根据故障矩阵库提供的每类故障的诊断方法再按照故障诊断策略执行相应的诊断操作,逐步迭代,并终找到根故障原因;故障响应模块,根据故障诊断模块的诊断结果,按照策略库中预先定义的响应策略对Web 服务故障进行处理。

  实验中,我们构建了一个由十个原子服务组成的三层结构的组合Web 服务作为被管对象,如图6 所示。共进行了八组测试,在这八组测试中分别引入了组合引擎故障、QoS 故障、原子服务器崩溃故障等故障类型,以测试基于策略的Web 服务故障管理子系统的准确性和郊率。实验结果显示,八组测试都能够准确确定位故障位置及故障根源,并且平均诊断时间为3 秒钟。

图6 组合Web 服务示意图

图6 组合Web 服务示意图

  实验表明采用本文提出的Web 服务故障分类方法构建的基于策略的Web 服务故障管理子系统能够有效地提高故障监测和故障诊断执行过程的效率,并为保证故障监测和诊断结果的准确性提供了依据。

  4 结语

  Web 服务是目前构建分布式应用系统的重要技术途径,对Web 服务故障进行明确的分类,是Web 服务故障诊断必要条件,也是开展Web 服务故障管理的基础。本文提出的Web 服务故障分类较为全面的覆盖了Web 服务生命周期中可能发生的故障,并在此基础上根据故障类型与故障现象的关联关系构造了Web服务故障矩阵,并通过分析和实现验证了Web 服务故障分类方法的有效性。

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

相关技术资料
上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!