论文部分内容阅读
随着计算机规模的不断扩大,应用软件的失效中止故障的发生几率也随之增长,如何保障软件的生存性,使其在遭遇失效中止故障时能快速恢复,持续地提供服务是一个急需解决的问题和挑战。检查点与故障恢复技术是一种有效保障软件生存性的技术,其中应用级检查点因其较好的移植性和易实现性而得到广泛的应用。但它的实现需要在源代码中添加具有自动完成检查点任务的代码,这种技术一是要修改源代码,造成了对源代码的入侵;二是软件检查点和恢复相关代码与软件应用核心代码的纠缠,降低了代码的可读性和内聚性。如何在保持代码的可读性、内聚性和完整性的情况下实现软件检查点与故障恢复是一个较大的难题。面向方面技术(AOP)能通过预编译和动态代理方式在不修改源代码的情况下实现检查点和故障恢复功能,有效地解决新功能代码与源程序代码相互纠缠的问题。本文在深入研究和分析面向方面技术、检查点和故障恢复技术上提出了基于面向方面编程的软件检查点及恢复技术方案(ASCRTS)。ASCRTS将软件检查点和故障恢复的相关任务作为横切关注点,并将进程状态看作是独立对象状态的集合,然后利用AOP实现所有独立对象的检查点及故障恢复。ASCRTS运用java序列化与反序列化机制极大的简化了进程状态的保存与恢复工作。文中详细描述了ASCRTS的软件检查点设置、检查点文件获取及故障恢复,并对ASCRTS的架构和模块进行了具体的设计与实现。根据分布式软件运行环境的特点,本文在ASCRTS的基础上提出了基于面向方面的分布式应用程序的检查点及恢复技术方案(D-ASCRTS)。D-ASCRTS将各节点进程状态的一致性检测与控制同ASCRTS相结合,实现了基于AOP的分布式软件应用程序的应用级软件保障。文中详细描述了D-ASCRTS的软件检查点设置、故障恢复及故障检测,并对D-ASCRTS的架构和模块进行了具体的设计与实现。最后,本文通过程序实例验证了方案的有效性,表明基于面向方面技术的软件检查点及恢复技术是可行的。