论文部分内容阅读
设计和实施具有容错功能的分布式应用是一项复杂的任务。分布式应用对一致性的普遍要求使共识问题和原子广播问题成为研究的关键所在,因为它们可以用来解决许多在实践中出现的问题,例如选举领导者或者需要对复制的数据达成一致时都涉及到共识问题,原子广播可以保证进程传递消息的一致性和次序性。比较不同的系统模型,尽管异步系统比同步系统具有更强的实用性,但FLP理论证明在异步系统中,如果允许出现崩溃进程,那么上述两种问题不具有确定解,这使共识问题成为具体设计中的一道障碍。针对共识问题人们做了大量的研究,归纳起来异步系统下共识问题的解决途径大致有两种,一种是基于随机数字指示器的方法,另外一种是基于失效检测器的方法。本文的研究内容就是基于失效检测器的共识协议。本文首先详细描述了失效检测器的定义和分类,然后对失效检测器的设计方法和性能检测标准做了介绍。分析了几种典型的基于失效检测器的共识协议,包括四阶段的CT协议、Paxos协议和两阶段的MR协议、PR协议。在NEKO实验平台上完成了对失效检测器和协议的具体设计。原子广播可以利用共识协议来实现,本文测试了在几种不同的故障负载下利用各种协议设计的原子广播在相同吞吐量下的延时数据,结合实验结果对协议进行了评估。本文对基于失效检测器的共识协议进行了改进,根据局域网内消息传递的自发性原则,提出了把参与共识的进程分为提议进程和参与进程两组,并在协议的第一阶段提议进程消息广播的方法。经实验证明,改进后的共识协议能够在提议进程提出值相同的条件下,进程只经过一次通信就完成共识,提高了共识的效率。本文描述了失效检测器和共识协议的自适应性研究方向,提出了由领导进程动态组织组内进程成员的方法,根据系统进程之间的消息往返延时,让当前运行速度较快的进程在共识协议的执行过程中处于主导位置,这种方法可以在系统部分进程运行缓慢或者发生崩溃的情况发生时不影响到系统效率。