论文部分内容阅读
随着互联网的飞速发展,Web应用的种类越来越多,非CPU密集型系统也扮演着越来越重要的角色,如广泛使用的社交媒体,各种直播平台等。这些应用的特点都是强调用户交互的高实时性和高并发量,它们通常有大量的并发用户和大量的图片上传、下载等IO操作,对Web服务器的性能要求非常苛刻。而传统的Web开发技术通常使用基于Ajax的轮询机制定时获取数据实现实时交互,用多线程编程、使用多核服务器、增加服务器数量来提高系统的并发量,这无疑会增加成本投入,并且没有从源头解决问题。Nodejs摒弃了传统的Web技术多线程编程思想,采用单线程异步非阻塞IO,为非CPU密集型的高实时任务提供了良好的解决方案,它在Google V8引擎的基础上封装一些通用接口,使得JavaScript能在服务器端高效运行。论文首先分析在Web应用中的CPU密集型和非CPU密集型操作的区别,然后介绍Node.js及其扩展的常用组件,以及Node.js在CPU密集型和非CPU密集型系统中的应用,并在此基础上基于Node.js技术设计实现了一个社交系统。为了提高该系统中在线用户列表的快速查找等操作的执行效率,论文采用拓普利兹矩阵实现全域散列算法来得到均匀性良好的Hash表来实现。为了方便比较Node.js与传统Web技术在非CPU密集型系统中的差异,选择Java Web技术设计实现社交系统的在线聊天和图片管理模块作为比较对象,最后对这两种技术下系统的性能进行测试分析。测试结果表明,基于Node.js的Socket.IO实现的在线聊天模块系统,其响应实时性远远优于Ajax轮询方式的实现,并且随着并发用户量的增加,Nodejs下的服务器内存占用增加率缓慢,而基于Java Web技术下的服务器内存占用率急剧增加直至宕机。因此,在非CPU密集型系统中,Node.js比传统的Web技术能够更好地发挥服务器性能。