论文部分内容阅读
分布式系统具有用户投资风险小、结构可扩展性好、用户可继承原有的软硬件资源、构造简单等特点,其应用领域越来越广泛。包括大规模科学计算系统、天气预报系统、分时电话系统、飞机订票系统、银行系统、股票系统、购物系统等。随着系统规模的不断扩大,其在计算过程中发生故障的几率也在指数增长,系统一旦失效,可能带来灾难性的后果,因此迫切需要为分布式计算系统提供容错机制。检查点与回卷恢复(Checkpoint and Rollback-Recovery)技术是一类重要的软件容错技术,具有实现和使用简单,对资源要求低等特点,适合在分布式计算环境中应用。分布式计算环境中,不确定的通信带宽、存储空间限制、节点的动态性、频繁的断开连接等特点决定了为单机系统开发的回卷恢复技术不能直接地应用到分布式计算系统中。在保证系统一致性的前提下,减少检查点和消息日志的存储开销、减少回卷恢复机制引入的通信开销、提高节点的自治性(autonomy)、减少由于进程间依赖关系造成的节点间藕合、实现回卷恢复机制对节点的透明,是分布式环境下回卷恢复技术研究的核心问题。本文围绕以上内容展开研究,主要创新点如下。(1)提出了一种分布式环境下非阻塞协调检查点及回卷恢复算法。在分布式计算环境的实际应用中,节点的自治性很强,希望的容错机制是一种透明的服务。提出的检查点算法基于发送进程来确保不会产生孤儿消息,不需要接收进程的任何信息,算法每次获得的检查点均是全局一致检查点,直接获得永久检查点,跳过临时检查点阶段,加快了检查点的形成时间,一个进程是否获得检查点与其他进程无关,算法是否获得检查点只与发送标志有关,确保了算法的高并行性。某节点失效后,只需要通过进程广播一条同步消息,其他进程收到同步消息后,根据算法做独立处理,不需要其他进程的额外消息,从而实现了节点间透明、并行地执行回卷恢复算法。通过算法性能分析和仿真实验,验证了算法无故障运行和回卷恢复阶段的低开销性。(2)提出了一种基于动态分组的两级检查点及回卷恢复容错算法。就包含多个结点的应用而言,结点间交换信息的频率是不一样的,甚至相差很大,因此需要一种机制来适应分布式系统中进程动态协作的特点。提出的算法根据结点间通信的频率、通信时延、通信带宽及分组中结点数等指标来实现动态分组,实现分组的高内聚低耦合。组内通信时延小、结点数不多,适合协调检查点算法,因此在组级采用协调检查点算法。组间通常是由高时延、低带宽的网络相互连接,并且组间的通信频率较低,提出的系统级检查点算法充分考虑了这些特点,每个分组是否获得检查点,与其他分组无关,各个分组可以独立地,以并行方式获得系统级检查点;通过发送分组来确保分组间不会产生孤儿消息,每次获得的系统级检查点均是全局一致检查点,避免了多米诺效应的发生。算法一方面动态适应了应用自身的要求,提高了资源的整体效能,另一方面通过发送分组来确保分组间不会产生孤儿消息,实现了由传统的两阶段提交算法到单阶段算法的转变。实验结果表明,算法执行时间较低,相对于传统的两阶段提交算法,时间复杂度由通常的O(n2)降低到O(n)。(3)基于XMPP协议构建一个通用的消息传递机制。已有检查点及回卷恢复算法,都是自定义算法,消息传递方式各不相同,没有通用性可言。我们根据分布式系统的特点及检查点算法传递的消息特点,构建一个通用的消息传递机制,该机制基于XMPP协议,实现了消息的跨平台、准实时传输。对XMPP协议中XML标签进行扩展,实现了多种检查点消息传输格式的统一,提高了程序的重用性。(4)原型系统的设计与实现。在理论研究基础上,进行系统原型设计及实现,验证理论的可实现性,是从理论研究到实际工程应用过程中非常重要的工作。结合前面的理论研究成果,研究了原型系统的系统构建、客户端软件需求分析、客户端软件总体框架、功能模块及处理流程,并编程实现一个原型系统,证明了理论成果的可实现性。