论文部分内容阅读
作为主流的分布式软件系统运行支撑平台,中间件封装了一组公共服务以提高分布应用的开发、部署、维护和演化的效率与质量。Internet的普及、中间件标准化的完善、以及开源软件的兴起,均不同程度地促使了中间件服务的种类以及同类服务的不同实现的极大丰富。这种繁荣在满足用户个性化和适应Internet开放性的同时,也导致了中间件服务的可靠性对整个系统的可靠性影响显著增加,这为中间件故障管理带来了新的挑战。作为下一代中间件故障管理的主流途径之一,自修复中间件能够在运行时自动完成故障的检测与修复。但在目前的研究与实践中,尚存在若干问题,尤其是现有的工作均侧重于对上层应用故障的修复,而忽略了对中间件服务故障的修复。为此,本文研究了中间件服务自修复原理并设计了相应的支撑框架,提出了一种中间件依赖服务自修复方法,给出了一个系统化的中间件服务可靠性影响分析与修复效果评估方案,实现了一个特定于J2EE的原型系统并成功应用于PKUAS、JOnAS、JBoss等J2EE中间件产品。
容错技术经过长期的研究与实践,形成了许多被广泛认同并使用的概念、方法与技术。这些原理性知识是自修复中间件研究与实践的基础,但为了明确中间件服务自修复的范围,即能够发现和修复什么样的故障,有必要将这些原理特化到中间件的语境中来。本文从故障检测、服务修复、可靠性分析以及协调模式等四个方面建立了中间件服务自修复原理框架。首先,从故障检测的角度对服务故障进行抽象,从故障的范围、表现形式以及传播方式三个角度研究中间件服务故障模型;其次,分析服务修复的能力,将中间件服务按照其修复能力划分为不可修复服务、可重启修复服务和可在线修复服务三个级别。再次,探讨中间件服务可靠性影响分析与修复效果评估在中间件服务自修复中的意义;最后,研究故障检测与服务修复机制以及修复机制之间的协调模式。
在中间件服务自修复原理中,故障模型的定义和服务修复能力的分级确定了中间件服务自修复的范围,可靠性影响分析与修复效果评估用来提供自修复的依据,而协调模式则描述了中间件服务自修复的运行机理。据此,本文设计了一个中间件服务自修复框架,定义了自修复所需的构件以及它们之间的关系。该框架由故障检测器、可修复服务、协调器、修复策略和评估工具五个构件组成。其中,故障检测器根据原理中的故障模型实现;可修复服务分别实现了原理中定义的不同级别的修复能力;修复策略中定义了可检测的中间件服务故障、可用的修复操作以及两者之间的关系;协调器在运行时根据修复策略管理故障检测器和可修复服务;评估工具集成了模型分析和实验模拟相关的支持机制。该框架的特点为故障检测与服务修复相分离以及协调机制与策略相分离,基于该框架,本文给出了一个中间件服务自修复的迭代过程,包括配置服务修复策略、替换服务实现、替换中间件产品、修改上层应用这四个步骤,每个步骤的开始和结束均需执行可靠性分析与评估,开始阶段的分析评估用以确定本步骤的具体方案,结束阶段的分析评估用以确定本步骤是否有效(无效则进入下一步骤)。
中间件服务之间的依赖关系使得故障有可能在服务之间传播,产生了一种特殊的服务故障一关联故障。关联故障的检测和修复都涉及到多个服务,是中间件服务自修复的难点。而中间件服务的繁荣导致中间件服务之间的依赖关系非常复杂,这样便增加了这个问题的难度。为解决此问题,本文提出了一种中间件依赖服务自修复方法。方法中使用AOP技术和软件实现的故障注入技术,自动化地发现服务之间的依赖关系,并为关联故障定义提供基本信息。通过分析服务实现之间的依赖关系的类型和特点,有针对性地给出相应的修复实现方式,使修复具有更好的效果和更高的效率。由于本方法在中间件服务自修复框架下实施,所以很容易地解决了在多个服务中的故障检测以及相应修复的协调问题。通过在三个不同J2EE中间件PKUAS、JOnAS和JBoss上分别实现中间件服务自修复框架原型并应用依赖服务自修复方法,发现了数据服务与事务服务、消息服务与事务服务、名字服务与JAAS服务之间的依赖关系并实现了这些依赖服务的自修复。原型系统的实现证明了中间件服务自修复框架的可行性和普适性;依赖服务自修复实验中的数据则说明了本方法可以有效(对可靠性提高)和高效(修复操作所需的时间少)地修复依赖服务。
中间件服务可靠性影响分析与修复效果评估是进行修复机制选择和运行时刻修复协调的重要依据。本文给出了一个结合实验模拟和模型预测两种方式的方案。实验模拟方式通过在实验中模拟中间件服务故障,直接测量系统可靠性,并评估服务修复的效果;模型预测方式通过在软件可靠性模型中显式建模中间件服务来分析中间件服务可靠性对系统可靠性的影响;对比使用服务修复机制前后的服务可靠性预测结果,可以知道该修复机制的修复效果。另外,在实验模拟过程中构造系统的体系结构、记录运行信息,可以直接在模型预测中使用,使模型预测更加准确。依照此方案,以Eclipse插件形式实现了支持工具。以J2EE应用ECperf进行的实例研究展示了使用工具进行服务可靠性影响分析和修复效果评估的过程。