论文部分内容阅读
随着Internet的迅速发展,网络已成为人们生活工作中不可缺少的一部分。越来越多的个人、企业、单位和组织通过Internet获取信息、知识和进行各种贸易。Internet的高并发性和内容多样的动态内容向构建健壮的网络服务器提出了挑战。为构建高性能的网络服务器,计算机科学和工程的技术研究人员在服务器并发编程及其I/O处理等方面不断的做出努力。Matthew D. Welsh提出了基于阶段的事件驱动并发编程体系结构——SEDA,将应用服务处理逻辑分解成一系列的阶段,阶段间由事件队列相连接,并采用动态资源控制来调节负载和资源使用。SEDA综合了线程池模型和事件驱动模型的优点,具备良好的并发和负载应对能力。本文在研究基于阶段的事件驱动并发编程模型及常见的I/O模型的基础上,为基于阶段的事件驱动服务器设计和实现了公共I/O服务来处理服务器网络I/O和文件I/O,最后并对使用公共I/O服务的基于阶段的事件驱动服务器进行了对比测试,测试结果显示,公共I/O服务较目前基于SEDA的I/O处理阶段更能提升服务器的性能,表明公共I/O服务及其资源控制和负载调节策略的设计和实现是有效的。具体来说,本文主要完成以下几个方面的工作:(1)研究服务器并发编程模型及其对I/O处理的影响;(2)研究常见的I/O模型和操作系统I/O编程接口;(3)按照阶段事件驱动模型的概念对网络I/O和文件I/O的处理逻辑进行划分和实现,并封装成事件驱动阶段,实现异步和非阻塞的I/O操作;(4)加入批处理控制器、准入控制器和反馈控制器等资源控制和负载调节策略以提高I/O处理阶段的性能。在公共I/O服务全局线程资源控制和配置机制的共同作用下,为应用提供高效的网络I/O和文件I/O处理服务;(5)对实现的公共I/O服务进行性能测试和评估,在相同的测试环境下,通过对测试结果的比较和分析得出:公共I/O服务的性能较现有的基于SEDA的I/O处理阶段更具优势,表明了公共I/O服务设计和实现的有效性。