论文部分内容阅读
在过去十年里,机群系统得到了巨大的发展。机群系统之所以能得到人们的青睐,是因为它的诸多优良特性,包括使用简单、高可用、可扩展和高性价比。由于这些本质特性,使机群系统能满足计算机网和电信网中信息系统所必须的高可用、高性能和可扩展要求,所以可以看到有越来越多的信息系统在使用机群系统作为它们的硬件平台,机群系统与信息系统俨然结合在一起了。而有状态的信息系统,又是所有信息系统中使用机群系统较典型的一个,这些有状态的信息系统的共有特点是,系统要维护大量的数据,数据以一定的单元组织,每个单元相对独立;系统的典型操作是针对一个数据单元,要支持大量的这种并发操作。但是设计者在用机群系统为有状态的应用进行设计时,会碰到许多问题。为所有这些问题提出解决方案,每个解决方案又能满足指标要求,各解决方案之间不抵触,需要很高的技巧。论文的主要目的就是为了缓解设计者在这方面的困难。论文首先讨论了负载均衡问题。轮循策略是并行系统中常见的负载均衡策略,而其在有状态的应用中的使用和相应的性能表现,还没有较详细的研究和讨论,作者对此进行了研究。通过综合排队论和概率论理论,提出并建立了分析该问题的数学模型,通过分析和仿真实验得到:系统的性能,即每个节点的吞吐量的利用率和平均响应时间伸长率,都主要取决于请求到达速率与请求服务速率之比,而受节点数和并发请求源数的影响很小;系统在处理快速请求源时,系统的每个节点的平均吞吐量会有较大的下降,而平均响应时间上升较少;单节点平均吞吐量只能达到最大值的70%左右,而平均响应时间上升不超过原请求服务时间的2倍;系统在处理慢速请求源时,系统的每个节点平均吞吐量下降不明显,而平均响应时间上升剧烈;单节点平均吞吐量能达到最大值的90%以上,而平均响应时间上升超过原请求服务时间的9倍以上。该研究的重要意义在于,所提出的数学模型和分析方法具有一定的通用性,也适用于分析其他负载均衡策略在有状态应用中的性能;研究的结果还表明,采用轮循策略对有状态的应用进行负载均衡,需考虑不同的应用场合和相应应用的服务要求,因为在不同的应用场合下系统的性能有显著的区别。针对分布式均衡策略有扩展性好,可用性好的优点,论文对分布式均衡策略进行了比较研究。考虑到分布式均衡策略的主要问题是各节点的决策一致性问题,着重比较了三个常见策略最小法、权重法和随机法的性能。通过建立相应的仿真模型,得到如下结论:权重法可以较好地协调各节点的决策,其性能优于最小法;当前台节点所拥有的后台节点的负载情况严重失真时,随机法表现出的性能优于其它两个。该研究的意义在于,指出了在分布式均衡策略中,通常被认为最优的最小法并不一定能给出最理想的性能,而通常不被认为最优的随机法却能在一定条件下给出优秀的性能,其性能甚至可优于权重法。为了提高海量存储机群系统中系统的平均故障前时间,作者在传统的动态数据备份策略的基础上,提出了动态并行数据备份策略。该策略的基本思想是利用海量存储机群系统中节点数目巨大的特点和每个备份可以随机存储于任何一个节点的特性,通过为失效节点上的每个数据块选择互不相同的源节点和目标节点,来降低数据转移时间,进而提高系统的平均故障前时间。为了证明该策略的有效性,作者根据随机过程理论,提出并建立了马尔可夫模型,由该模型对系统进行瞬态分析,进而通过仿真实验验证了理论分析的正确性,得到的结论是:利用动态并行数据备份策略,当备份数为2时,系统的平均故障前时间仅为1小时左右;而当备份数为3时,可达十几天,甚至几十天;在出现节点失效后,数据块在节点间的转移速率对系统的平均故障前时间有显著的影响,速率越快,系统的平均故障前时间越长;数据块在节点上的随机分布特性对系统的平均故障前时间有很重要的影响,随机分布特性差的分布策略,系统的平均故障前时间会显著缩短。该研究的重要意义在于,所提出的并行数据备份策略能显著地提高系统的平均故障前时间;并且指出通常的观点,即为每个数据单元设置2个备份,对于一个有较高数据可靠性要求的海量数据系统来说是不能满足要求的,而使用3个备份却能满足一般的要求。论文还研究了其他因素对系统平均故障前时间的影响。研究的目的是通过对这些因素的分析,找到一些策略来保证一定的系统平均故障前时间,同时又最大程度地节省资源,特别是人力资源,因为对于海量存储机群系统来说,节点数目巨大,管理和维护系统的开销很大。通过大量的仿真实验发现,对于一个通常配置的海量存储机群系统,当节点的平均维修时间为2天时,系统平均故障前时间可维持在10天以上;当节点的平均维修时间为4天时,仍可维持在4天以上。这表明对完整性要求不高的数据,系统可放宽节点的平均维修时间要求,以降低对人力资源的要求。在恢复策略对系统平均故障前时间的影响方面,研究表明若用户对系统的平均故障前时间为4天的性能可以接受,则系统维护者可采用每2到3天维护一次的方案,将所有失效节点恢复,加入系统,以提高劳动效率。另外,通过比较拷贝式与重启式对系统平均故障前时间的影响,发现重启式不能在节点数较大的时候提供很好的性能,远低于拷贝式。针对有状态的应用中通常有高并发的要求,论文对并发编程模式进行了详细的研究。首先比较了三种并发编程模式,即基于多线程的编程模式、基于事件处理的编程模式和基于阶段的编程模式,分别指出了它们的优缺点,特别指出了基于阶段的编程模式优于其它两种编程模式的主要原因在于其良性考验的特性,该特性使服务器系统在处于过载的情况下,仍能维持一定的吞吐量,保证一定的服务质量。紧接着,探讨了基于阶段的编程模式的实现结构,线程跨阶段结构和线程在阶段内结构,比较了两种结构的优缺点,并指出由于线程在阶段内结构有线程数有限,能处理阻塞操作,能自动完成调度,消息队列透明等优点,所以该结构被广泛采用。同时,作者还给出了该结构下的Java语言的实现方法。接着,考虑到相关文献对基于阶段的编程模式在实际应用中的使用方法没有详细的讨论,从三方面对该模式的设计进行了讨论,这些方面包括阶段的数目、阶段中线程的数目和阶段的分配。通过大量的仿真实验,发现用基于阶段的编程模式进行设计时,若系统结构设计不合理,参数设置不当,则系统的性能将会有显著的下降,甚至达到无法正常工作的境地,并由此提出了一套新的设计原则供设计者使用,这些原则是:在每一个处理器上,阶段数目不能过多,一般不超过10个;对于包含阻塞调用的阶段,它的并发线程数可设为请求到达速率和平均阻塞时间的乘积;为了将暂时响应及时发送,这部分任务必须放于一个不含阻塞调用的阶段。最后,将它们应用到实际的会话发起协议服务器的实现中,通过比较不同的系统设计的性能,证明了这些原则的正确性。另外,论文所提出的系统设计结构对类似的应用也有指导意义。由于机群系统中不断会有节点失效和恢复,所以容错设计是系统能正确运行的关键技术。鉴于这方面的工作,往往是设计者根据自身的经验完成,而没有一套通用的分析和设计方法,本文对此做了研究。为使设计者能进行有层次有条理的容错设计,提出了一套新的容错设计分层概念,这些分层概念包括基本级设计、系统级设计、基本级容错设计和系统级容错设计。通过将这些概念应用于4个实际系统的容错设计分析,证实了这些概念能很好地将容错设计从系统设计中分离出来,同时,这样的分析所得出的容错设计方案也可供设计者进行重用。另外,还从许多系统的容错设计中,总结出4条常见的设计技术,供设计者参考,这些技术包括节点失效检测技术、失效消息处理技术、簿记技术与缓存技术和重试技术。论文还对状态分配的方法进行了分类和归纳,总结了每种方法的特点。对分布式状态分配策略中的数据分配表的重建问题,进行了详细的讨论,提出了简单平均法,该法可使新建后系统中各节点维护基本相同数目的元数据,以均衡新建后系统中各节点元数据访问的负载,还可使各正常工作节点的元数据表的变化尽可能小,以减小重建元数据表所需开销。组成员协议设计方面,论文比较了常见的检测协议和决定协议的特点,指出常用的“我活着”协议有扩展性差的问题,而参与者列表协议可解决这方面的问题;决定协议中的独立估计协议有“裂脑”问题,而三次往返协议能解决“裂脑”问题,并能较快地稳定。最后,为了辅助设计者在进行系统设计时选择合适的方案,分类和归纳了有状态应用在机群系统下的常见问题,总结了每个常见问题的常见解决方法,描述了各种解决方案的特点,并将归纳和总结的结果以表格的形式集中在一起,供读者查询。