论文部分内容阅读
粮食安全问题一直是与人们息息相关的问题。随着4G网络的普及、云计算技术兴起,粮情测控的有网页客户端、电脑客户端和安卓客户端。随着用户数量的不断增加,在面对大量用户访问、高并发请求时,系统容易出现用户等待时间长、请求失败、页面跳转失败、和数据出错等情况,给用户带来了极大的不便,因此需要提高系统并发性能。为了提高系统的并发性能,在硬件方面,大型网站通过对服务器进行性能提高和扩大服务器集群规模来达到稳定运行系统的目的。在系统的内部性能来应对高并发。在HTTP服务器方面,使用静态服务器分离、负载均衡等技术方法。在数据库性能方面,有数据库集群、库表散列等方法。在缓存方面通过缓存和数据库结合的方式来减轻对数据库的读写请求压力。现有的粮情测控系统对数据库进行操作时,使用多线程连接池模式和C++自带deque来处理并发请求,不仅CPU利用率不高、占用大量服务器资源,而且队列等待时间长。针对项目现状和只使用现有硬件资源的情况下,本文对提高系统Web服务端的并发性能,开展了以下研究工作:(1)通过对Node技术的深入研究,分析其单线程、非阻塞I/O和事件驱动机制的技术特点。单线程节省服务器内存,实现宏观并发,且操作系统没有线程创建和销毁的时间开销。非阻塞I/O的核心利用率非常高。Node的底层代码近半数都用于事件队列、回调函数(有优先级)队列的构建。用事件驱动机制可以完成服务器的任务调度。(2)利用Node对CPU充分利用的优势,将单核单线程Node引申到多核CPU环境下。通过对以往实现Node多核技术的研究,分析其负载不均衡和实现冗余等劣势,结合反向代理服务器成熟的均衡算法的优势和通信劣势,设计了一种新的多核解决方案:使用Node服务器作为反向代理来减小工作中通信负担的问题、保障负载均衡。该方案不仅可以充分利用Node在高并发时的性能优势,提高程序执行效率,最重要的是,可以在保障负载均衡的前提下提高对多核CPU资源的利用率。(3)为了提高粮情测控系统的并发性能,本文采用Node技术设计了一个适合粮情测控系统的高并发Web服务端总体架构,针对功能需求设计了一个包含HTTP服务器、MongoDB数据库、Redis缓存和RabbitMQ消息队列这四个模块的总体架构,并对各模块进行设计与实现。为了实现HTTP多核服务器的负载均衡、对子进程状态信息监控和防止子进程退出时丢失请求,本文对基于Node的HTTP多核服务器的分发者进程和工作者进程进行了详细设计。利用MongoDB性能优势和扩展性,以及其shell客户端、数据格式与JavaScript匹配优势,设计并实现MongoDB接口层和更新服务。利用Redis在后端数据存储上,可以实现一个高效的分层缓存机制,提高缓存的命中率,减少对数据库的I/O操作的优势,对缓存层设计时使用Redis。另外,利用RabbitMQ有高性能、支持消息持久化和缓解系统中各个层次之间速率不一致的问题的优势,对缓存更新服务和数据库更新服务设计了 RabbitMQ消息队列。(4)对改进后的Node多核服务器和本文设计的Web服务端进行压力测试,对比IIS、Node单核服务器和原系统的Web服务端,得出基于Node的粮情测控系统Web服务端可以提高系统吞吐量和减少平均响应时间。综上所述,本文设计的基于Node的粮情测控系统Web服务端,与传统的系统Web服务端相比,具有高并发的性能优势,经过实际测试,具有推广和实际应用价值。