摘要:违章查询是交通管理部门提供的一项便民服务,方便驾驶人对违章信息进行在线查询及处理。移动互联网发展快速、移动设备种类繁多且设备资源有限,为解决移动互联网背景下异构客户端的违章查询服务接入和高并发服务性能问题,提出一种基于Express的违章查询REST Web Service解决方案,为交通管理部门和用户提供便捷高效的违章查询服务。通过Apache JMeter进行压力测试,实验结果表明,该方法实现简单,有效地提高了违章查询服务的扩展性和系统性能。
关键词:违章查询;Node.js;Express;REST;移动互联网DOI:10.11907/rjdk.162652中图分类号:TP319文献标识码: A 文章编号: 16727800(2017)004006703
0引言 随着国家经济的快速发展,汽车已经完全融入普通大众的生活。据相关部门统计,2015年全国机动车保有量达到2.79亿辆[1],随着机动车保有量的大幅增加,机动车违章现象也与日俱增,为让车主随时随地通过各种移动终端快捷查询违章信息,交通管理部门迫切需要开发及部署一种能够满足高并发及高可用性的违章查询服务。传统部署在Tomcat等应用容器上的违章查询应用在处理多用户并发请求时需要不断开启新的线程服务用户请求以及频繁的线程切换开销,大大降低了CPU及内存的利用率,因此在处理高并发及I/O密集型业务时存在先天的性能瓶颈[2]。基于事件驱动和非阻塞I/O的应用容器,如Node.js等为解决高并发应用场景提供了优秀的解决方案。Node.j使用事件驱动及非阻塞I/O模型而得以轻量和高效,非常适合开发及部署高并发I/O密集型的实时应用[45]。本文在分析相关技术和需求的基础上,基于Node.js平台下的Express框架,设计并实现了一种基于Express的违章查询REST Web Service。
1Express简介 Express是一种精简灵活、使用广泛的Node.js Web应用框架,为开发者快速创建简洁、高效的Web应用提供了便利[67]。Express在Node.js基础上对Web应用通用功能进行了模块化封装,Express的核心特性为:通过中间件来响应HTTP请求;定义路由表匹配不同的HTTP请求;通过Jade或Ejs等模板传递参数来动态渲染HTML页面。Express的API非常精简,主要包括Application、Request、Response、Router 4个对象,分别表示应用程序、请求对象、响应对象、路由器ο螅上述4个对象构成了Express应用的基石。Express具备Node.js事件驱动、异步编程及非阻塞IO处理等特点。基于Node.js开发的系统具有高性能和强大的负载能力,非常适合流量高,但后台逻辑并不复杂的服务端应用,目前国内典型的基于Node.js开发的大型应用包括淘宝数据平台、网易开源Pomelo游戏引擎框架及百度云数据存储模块等[89]。 REST(Representational State Transfer)表示“表现状态转换”,又称RESTful,是由Roy Fielding博士[10]在其论文中提出的一种分布式系统架构风格。REST包含3个主要内容,即资源(Resource)、表示(Representation)、状态(State)。Resource指网络上一种体现为比特流的实物或抽象概念,可通过统一资源定位符URI定位;Representation指资源所呈现出的某种形式,为构建可扩展、松耦合的Web应用提供准则;State既可以是服务器端资源状态又可以是终端应用状态,资源的状态保存在服务端,应用状态由应用自身维护,由于REST所有交互都是无状态的,因此终端的每次请求需携带交互所需的全部信息。REST将整个服务端抽象成资源的集合,资源由URI标识,终端通过HTTP标准方法对资源进行请求和响应,其中HTTP主要方法包括POST、DELETE、PUT及GET,分别对应资源的增删改查等操作。基于REST实施的上述架构约束,开发者可轻松解决系统开发中接口可扩展性和终端异构性等问题[11]。 根据违章查询服务需求分析,违章查询系统主要包括3个模块:用户管理模块、车辆管理模块、违章查询模块。用户管理模块主要功能包括:用户登录、用户注册、添加及修改用户基本信息、绑定用户手机号码、绑定用户驾驶证信息。车辆管理模块主要对用户车辆进行管理,如录入车辆基本信息、绑定用户车辆,用户在查询违章信息前需判断车辆与用户是否绑定,如果未绑定将禁止查询,并提醒用户绑定车辆信息,用户也可对车辆信息进行修改删除。违章查询模块主要为用户提供车辆违章信息查询服务,用户通过终端发送违章查询请求,后台根据查询条件返回JSON格式的违章描述信息,包括违章时间、违章地点、违章代码、扣除分数及罚款金额等详细信息。此外,当用户存在待罚款违章信息时,用户可通过在线缴费的方式处理违章记录。结合上述违章查询服务需求分析,遵循REST规范,设计出符合REST风格的违章查询系统接口如表1-表3所示。
3系统实现与性能测试 基于Express及REST规范设计并实现了违章查询服务,将系统后端部署在阿里云ECS服务器,并开发了手机APP方便用户进行违章查询。系统开发环境:Node 4.4.5、Express 4.0、Mongodb 3.2.6;系统开发工具:WebStrom11、Rebomongo 0.9.0;部署环境:阿里云Windows Server 2008 R2企业版,2核CPU,4G内存,4M带宽。当用户是会员时,直接点击“我是会员”进行违章查询,服务响应结果包括违法时间、违法地点、罚款金额、违法记分数等违章信息列表,当用户点击某一违章条目即可查看该条违章对应的详细信息。为测试上述基于Express的违章查询REST Web Service性能,本文与传统J2EE实现进行了性能对比实验。实验硬件环境为:WIN7系统PC机,i54590 3.30GHz CPU,16G内存;实验软件环境为:Mongodb 3.2.6数据库;Rebomongo 0.9.0可视化数据库工具;压力测试工具为Apache JMeter。利用Apache JMeter模拟发送HTTP请求,记录并发请求数分别在100,200...2000时的系统平均响应时间[12],实验结果如图1所示。 D1表明,在并发量小于600时,传统J2EE实现和〖CM)〗〖LL〗〖HJ*5/9〗Express服务的平均响应时间差别不大,基于Express违章查询服务比J2EE服务快5%左右;当并发量在600~1 200时,J2EE服务的平均响应时间随着并发数增加而快速上升,Express服务响应时间仍维持在较为平稳状态,Express服务比J2EE服务快近20%左右;当并发量大于1 200时,J2EE服务响应时间急剧增加,由于Tomcat线程池线程数量爆满可能出现系统崩溃情况,而Express服务平均响应时间增加较为平缓,仍能正常服务客户端请求。
4结语 针对异构客户端的违章查询服务接入问题和高并发服务性能问题,提出一种基于Express的违章查询 REST Web Service方案,结合REST系统架构风格的特点和违章查询的实际需求,基于Express等相关技术原理,设计并实现了基于Express REST违章查询服务,最后实现了基于Express服务与基于J2EE服务性能对比实验。实验结果表明,Express服务在处理高并发问题时系统性能明显优于传统J2EE服务,能有效提高违章查询服务性能。参考文献:[1]沈后功,周凯.2015年全国机动车和驾驶人迅猛增长新增汽车1781多万汽车保有量增长创历史新高[J].汽车与安全,2016(2):4141.
[2]刘尚旺,何东健,闫艳.Tomcat与IIS或Apache服务器集成的应用研究[J].计算机工程与设计,2009,30(10):25412543.
[3]刘家红,吴泉源.一个基于事件驱动的面向服务计算平台[J].计算机学报,2008,31(4):588599.
[4]许会元,何利力.NodeJS的异步非阻塞I/O研究[C].全国工业控制计算机技术年会,2014.
[5][美]ETHAN BROWN.Node与Express开发[M].北京:人民邮电出版社,2015:3144
[6]ARCHER R.ExpressJS:web app development with node.js framework[M].CreateSpace Independent Publishing Platform,2015:1425
[7]TILKOV S,VINOSKI S.Node.js: using javascript to build highperformance network programs[J].IEEE Internet Computing,2010,14(6):8083.
[8]杨争辉,叶桦.基于Node.js的家庭智能地暖远程监控系统[J].Computer Science\\s&\\sapplication,2015,5(6):204211.
[9]陆凌牛.Node.js权威指南[M].北京:机械工业出版社,2014:3145.
[10]程冬梅,王瑞聪,刘燕,等.基于REST架构风格的物联网服务平台研发[J].计算机工程与应用,2012,48(14):7478.[11]左文娟,张秋菊.基于REST物联网监控系统设计[J].计算机工程与设计,2016,37(1):2125.
[12]叶青平,王鹏飞,曹华.Web应用系统的分布式负载测试框架研究[J].计算机工程与科学,2009,31(5):134(责任编辑:孙娟)
Abstract:Traffic peccancy query service is one of convenient service provided by Traffic Management Department,which is convenient for drivers to query and handle peccancy information online.Due to the rapid development of mobile internet,the wide range of mobile devices and the limited of equipment resources,How to allow all kinds of client access traffic peccancy query service and improve the performance of high concurrent service under the background of mobile internet has become a complicated problem,In order to solve this problem.A traffic peccancy query solution based on Express REST Web Service is proposed,it provide convenient and efficient traffic peccancy query services for Traffic Management Departmnet and drivers.Using Apache JMeter for stress test,The experimental results show that this method is simple and easy to implement,and effectively improve the scalability and performance of the traffic peccancy query service.
Key Words:Traffic Peccancy Query;Node.js;Express;Rest;High Concurrency