论文部分内容阅读
随着互联网技术的发展和网络环境的改善,Web应用程序获得了飞速的发展,越来越多的传统本地程序纷纷推出Web版。有着广泛应用的高精度浮点运算可以移植成为Web应用程序,开发出基于网络的高精度浮点运算服务器有着重要的意义。本文以高性能网络I/O框架的设计为切入点,实现了跨平台的高性能I/O设计模式;结合高精度浮点运算,完成了分布式的高精度浮点运算服务器,能够通过添加服务器数量来获得服务器端的吞吐量的提升。本文的主要完成的工作如下:1)将仿函数应用在面向对象程序设计中。仿函数可以代替函数指针;利用仿函数可以降低面向对象程序设计的复杂度;仿函数能够简化一些设计模式的实现。2)设计与实现了跨平台的线程库和网络库。使用预编译宏技术,将不同平台下的网络API和线程API统一到相同的类型和接口内;利用仿函数实现了简单易用的线程池模型。3)实现了跨平台的高性能网络I/O模型。epoll是非阻塞同步的网络I/O模型,IOCP是非阻塞异步的网络I/O模型,它们的工作原理、工作流程和工作平台截然不同,本文通过修改它们的工作流程,将它们统一到“模拟”的异步I/O模型内。4)对服务器端进行了分布式的拓扑结构设计。通常来说,影响服务器端性能的原因一般是I/O和CPU运算瓶颈,可以将网络I/O和CPU运算划分到不同的进程内,来突破性能瓶颈。本文通过设计网关服务器进程来承担I/O,通过设计浮点运算服务器进程来承担CPU运算,其中网关服务器运行网关进程,运算服务器则运行浮点运算进程,网关进程和浮点运算进程之间使用socket进行通信,来达到天然的分布式架构。每个网关服务器能够管理和维护多个浮点运算服务器,客户端只需要连接到网关服务器就可以获得服务,运算服务器只能够连接并注册到惟一的网关服务器。此外,本文还设计应用层的通讯协议,确定了客户端和网关之间的通讯流程,确定了服务器组内部服务器之间的通讯流程。最后,本文在整合了软件硬件系统的基础上,对服务器端进行测试,测试结果证明服务器端的设计是正确的、有效的,能够运用在高精度浮点运算的网络服务器端。