● 摘要
随着计算机和网络技术的飞速发展,分布式应用逐渐融入到人们日常的工作、学习和生活中。自从ACM/ICPC、NOI等编程竞赛创办以来,参赛选手的规模越来越大,原有的评测系统难以满足这些大规模竞赛的快速评测需求。原有评测系统是集中式单节点结构,采用串行评测方式,评测过程中会由于选手程序的异常行为而影响整个系统运行,另外,在对大规模参赛选手的赛题进行评测时,无法提高评测效率。为了提供可靠和高效的评测服务,本文着力研究基于分布式服务的评测技术并设计和实现了一个基于分布式服务的评测服务系统。本文主要研究基于分布式服务的程序评测技术的服务节点的扩展策略、系统的可靠性机制和任务的分解和调度策略。分布式评测服务系统采用分布式多评测节点的结构代替单点评测的结构,采用多评测过程并行代替单评测过程串行的评测方式,通过这两层服务扩展,提高了处理能力。本文描述了分布式评测服务系统基于服务的工作模式,在此基础上设计了系统的扩展策略,便于分布式的评测服务节点加入系统,增强系统的评测能力;对任务数据进行分解和部署,为进一步对任务分解以提供分布式多评测过程的并行评测提供了基础;设计了基于反馈的任务调度策略以及单个服务节点的多评测过程的并行策略,使各评测节点的计算资源得到充分的利用,进一步提高了系统的性能;引入了超时任务检测和重评机制,系统能适应单点失效的情景,保证了大规模程序评测过程的可靠性;单个服务节点上的多评测过程并行降低了节点因待评测程序的异常行为而失效的可能性,通过限制待评测程序使用系统资源,保证了评测过程的健壮性,完善了评测功能。本文通过实验测试出单个评测服务节点上评测过程并行参数;通过实验测试了分布式评测服务系统的可靠性和性能。实验证明系统具有高可靠性,对节点故障和网络故障具有鲁棒性;通过扩展评测节点可线性地提高系统的性能。本文最后介绍了系统的应用情况并讨论了下一步的研究计划。