论文部分内容阅读
随着分布式应用在社会各个方面的不断深入,尤其是在诸如军事、金融、航天以及医疗等关键领域中的应用,使得分布式系统的高可用性变得越来越重要。失效检测器是维护分布式系统高可用性的基础组件之一。但是,在失效检测器中,检测准确性、检测速度以及检测负载三者之间存在着固有的矛盾。检测准确性需求的提高会引起检测速度的下降以及检测负载的增加,而检测速度的提高则需要更多的检测负载,并引起检测准确性的下降。分布式系统不断增长的规模与不断增加的复杂性加剧了这种矛盾,而自适应失效检测和检测结果共享机制是解决这一矛盾的重要方法。本文以这两种方法作为研究重点,着力解决目前分布式系统中失效检测所面临的几个重要问题,为高可用的分布式系统设计提供有力的理论支持。在大规模分布式系统中,越来越多的分布式应用部署其上。这些不同类型的应用对失效检测器所提供的服务质量(Quality of Service,QoS)有着不同的需求。这就需要失效检测器不仅能够适应网络环境的变化,还要能够同时满足多种应用不同的QoS需求。Accrual失效检测器作为一种重要的自适应失效检测方法,能够很好地满足上述需求。它准确的失效检测不仅影响分布式系统的高可用性和工作效率,也是上层应用顺利执行的保障,因此,本文针对不同分布式环境下Accrual失效检测器的准确性展开了研究。首先,随着大规模分布式系统的发展,诸如云计算、物联网这些新的计算模式的出现,网络环境呈现出新的特点,以往的概率分布模型不能很好地适应这种网络环境。通过对不同网络环境下心跳消息行为的分析,发现Weibull分布是一种更加合理的概率分布模型,能够更好地适应当前大规模分布式系统中的网络环境。在此基础上,提出了一种基于Weibull分布的Accrual失效检测器WD-FD,能够以相同的检测负载获得更短的检测时间以及更高的检测准确性。以实验方式对WD-FD检测器的性能进行了验证与分析,同时证明其在部分同步模型下满足增长性与有界性,可以实现一个◇Pac类Accrual失效检测器。其次,在拥有大量的移动节点的分布式系统中,节点的移动特性造成系统拓扑变化频繁,网络环境会呈现出动态性,容易发生突然的变化。Accrual失效检测器单滑动窗口的设计不能很好地适应这种网络环境的突然变化,过大或者过小的滑动窗口设置都会影响失效检测的准确性。因此,提出了一种采用双滑动窗口架构设计的Accrual失效检测器2WA-FD,通过较大的滑动窗口应对稳定的网络环境,较小的滑动窗口应对网络环境的突然变化,能够明显地改善动态性网络环境下的失效检测准确性。实验结果也证明了2WA-FD检测器相较于其他针对网络环境动态性的失效检测器,能够更加准确、及时的发现节点失效。同时,在部分同步模型下,2WA-FD检测器能够满足◇Pac类Accrual失效检测器的相关属性,具备相应的解决一致性问题的能力。上述自适应失效检测方法可以有效地改进不同分布式环境下检测准确性的问题。然而,在一些存在节点能源受限的分布式系统中,自适应失效检测还面临着节点能源消耗的问题。因为在这些系统中能源耗尽是节点发生失效的主要原因之一,失效检测器作为维护系统高可用性的基础组件,需要维持大量的检测关系,所以其所需的存储开销与计算开销影响着节点的能源消耗。基于以上分析,本文提出一种基于最近心跳消息预测的低能耗失效检测器2E-FD,不需要维护滑动窗口,使用简单的计算就可以提供较高准确性和低能耗的失效检测服务。通过实验分析,2E-FD检测器相较于其他失效检测器能够在满足一定检测准确性的前提下,消耗最少的节点能源。同时,2E-FD检测器在部分同步模型下满足强完整性以及最终强准确性,能够实现一个◇P类失效检测器。虽然自适应失效检测是节点级别解决检测准确性、检测速度以及检测负载之间矛盾的重要方法,但是面对分布式系统中大量的实时性应用更高的检测速度需求时,自适应失效检测由于三个属性之间的矛盾限制了其解决问题的上限。当对检测速度有较高的需求时,自适应失效检测可以通过调整检测消息发送周期实现快速检测,然而,过于密集的检测消息不仅带来更高的检测负载,也会引起过多的错误检测,造成检测准确性降低。为此,本文对检测结果共享机制展开了研究,提出了一种基于层次式结果共享的失效检测器HS-FD,利用系统架构所具有的层次特点,使节点之间共享检测结果,在保证检测准确性的同时有效地改进了失效检测速度,并且建立了检测参数与QoS指标之间的计算模型,实现了基于检测结果共享机制定量的QoS描述。在保证检测准确性的前提下,HS-FD能够以更低的检测负载实现更快的失效检测。