论文部分内容阅读
NIO即非阻塞I/O,目前,基于Reactor模型的NIO框架技术已经成熟,Reactor模型是一个事件触发模型,当I/O操作准备就绪时,读写操作被触发,此时使用线程池对数据进行处理,避免了传统的Java网络应用开发模型的一些弊端,如为每一个客户端开启一个线程来处理连接的所有事件,使得客户端连接增多的时候,性能也跟着下降,并发性能不好。应用Reactor模型的NIO框架能够显著提高Java网络服务器的性能,但其也有缺陷和不足,主要表现为Reactor模型实现的是同步I/O模型,与实现异步I/O操作的Proactor模型相比,Proactor模型可以更好的做到I/O操作和业务操作的分离,具有更高的性能。Proactor模型在C#编写的网络应用程序中用很好的应用,但在Java平台还没有针对这一模型的实现。Java SE7提供的异步I/O接口为这一模型的实现提供了很好的技术基础。论文在该研究背景下,通过对Proactor模型的研究和NIO.2技术的研究,给出了基于Proactor模型的NIO框架的详细设计和实现。该模型结构的参与者由前摄发起器、完成处理器和异步操作处理器组成。前摄发起器是应用中任何发起异步操作的实体,它将需要执行异步操作的通道注册到异步操作处理器中,此处理器在操作完成后回调完成处理器中实现的方法,实现业务逻辑处理。异步操作处理器是模型的核心部分,它负责管理注册到其上面的多个通道,绑定线程池,根据实际应用状况发起下一步操作和下达完成通知。在线程池模型的设计方面,与主流的采用手动配置线程池大小的方式不同,本文应用动态调整策略来构建线程池模型,使NIO框架可以在运行的过程中动态调整线程池的大小,根据当前吞吐量和并发数来优化服务器资源。经过测试对比分析,得出在高并发、高负载的网络环境中基于Proactor模式的NIO框架与当前流行的基于Reactor模式的NIO框架相比,具有一定的并发处理能力,更低的资源占有率和更高的稳定性。