戴鵬程+聶云峰+王興+徐飛飛+李杰
摘要:違章查詢是交通管理部門提供的一項便民服務,方便駕駛人對違章信息進行在線查詢及處理。移動互聯(lián)網(wǎng)發(fā)展快速、移動設備種類繁多且設備資源有限,為解決移動互聯(lián)網(wǎng)背景下異構客戶端的違章查詢服務接入和高并發(fā)服務性能問題,提出一種基于Express的違章查詢REST Web Service解決方案,為交通管理部門和用戶提供便捷高效的違章查詢服務。通過Apache JMeter進行壓力測試,實驗結果表明,該方法實現(xiàn)簡單,有效地提高了違章查詢服務的擴展性和系統(tǒng)性能。
關鍵詞:違章查詢;Node.js;Express;REST;移動互聯(lián)網(wǎng)DOI:10.11907/rjdk.162652中圖分類號:TP319文獻標識碼: A 文章編號: 16727800(2017)004006703
0引言 隨著國家經(jīng)濟的快速發(fā)展,汽車已經(jīng)完全融入普通大眾的生活。據(jù)相關部門統(tǒng)計,2015年全國機動車保有量達到2.79億輛[1],隨著機動車保有量的大幅增加,機動車違章現(xiàn)象也與日俱增,為讓車主隨時隨地通過各種移動終端快捷查詢違章信息,交通管理部門迫切需要開發(fā)及部署一種能夠滿足高并發(fā)及高可用性的違章查詢服務。傳統(tǒng)部署在Tomcat等應用容器上的違章查詢應用在處理多用戶并發(fā)請求時需要不斷開啟新的線程服務用戶請求以及頻繁的線程切換開銷,大大降低了CPU及內存的利用率,因此在處理高并發(fā)及I/O密集型業(yè)務時存在先天的性能瓶頸[2]。基于事件驅動和非阻塞I/O的應用容器,如Node.js等為解決高并發(fā)應用場景提供了優(yōu)秀的解決方案。Node.j使用事件驅動及非阻塞I/O模型而得以輕量和高效,非常適合開發(fā)及部署高并發(fā)I/O密集型的實時應用[45]。本文在分析相關技術和需求的基礎上,基于Node.js平臺下的Express框架,設計并實現(xiàn)了一種基于Express的違章查詢REST Web Service。
1Express簡介 Express是一種精簡靈活、使用廣泛的Node.js Web應用框架,為開發(fā)者快速創(chuàng)建簡潔、高效的Web應用提供了便利[67]。Express在Node.js基礎上對Web應用通用功能進行了模塊化封裝,Express的核心特性為:通過中間件來響應HTTP請求;定義路由表匹配不同的HTTP請求;通過Jade或Ejs等模板傳遞參數(shù)來動態(tài)渲染HTML頁面。Express的API非常精簡,主要包括Application、Request、Response、Router 4個對象,分別表示應用程序、請求對象、響應對象、路由器對象,上述4個對象構成了Express應用的基石。Express具備Node.js事件驅動、異步編程及非阻塞IO處理等特點?;贜ode.js開發(fā)的系統(tǒng)具有高性能和強大的負載能力,非常適合流量高,但后臺邏輯并不復雜的服務端應用,目前國內典型的基于Node.js開發(fā)的大型應用包括淘寶數(shù)據(jù)平臺、網(wǎng)易開源Pomelo游戲引擎框架及百度云數(shù)據(jù)存儲模塊等[89]。 REST(Representational State Transfer)表示“表現(xiàn)狀態(tài)轉換”,又稱RESTful,是由Roy Fielding博士[10]在其論文中提出的一種分布式系統(tǒng)架構風格。REST包含3個主要內容,即資源(Resource)、表示(Representation)、狀態(tài)(State)。Resource指網(wǎng)絡上一種體現(xiàn)為比特流的實物或抽象概念,可通過統(tǒng)一資源定位符URI定位;Representation指資源所呈現(xiàn)出的某種形式,為構建可擴展、松耦合的Web應用提供準則;State既可以是服務器端資源狀態(tài)又可以是終端應用狀態(tài),資源的狀態(tài)保存在服務端,應用狀態(tài)由應用自身維護,由于REST所有交互都是無狀態(tài)的,因此終端的每次請求需攜帶交互所需的全部信息。REST將整個服務端抽象成資源的集合,資源由URI標識,終端通過HTTP標準方法對資源進行請求和響應,其中HTTP主要方法包括POST、DELETE、PUT及GET,分別對應資源的增刪改查等操作。基于REST實施的上述架構約束,開發(fā)者可輕松解決系統(tǒng)開發(fā)中接口可擴展性和終端異構性等問題[11]。 根據(jù)違章查詢服務需求分析,違章查詢系統(tǒng)主要包括3個模塊:用戶管理模塊、車輛管理模塊、違章查詢模塊。用戶管理模塊主要功能包括:用戶登錄、用戶注冊、添加及修改用戶基本信息、綁定用戶手機號碼、綁定用戶駕駛證信息。車輛管理模塊主要對用戶車輛進行管理,如錄入車輛基本信息、綁定用戶車輛,用戶在查詢違章信息前需判斷車輛與用戶是否綁定,如果未綁定將禁止查詢,并提醒用戶綁定車輛信息,用戶也可對車輛信息進行修改刪除。違章查詢模塊主要為用戶提供車輛違章信息查詢服務,用戶通過終端發(fā)送違章查詢請求,后臺根據(jù)查詢條件返回JSON格式的違章描述信息,包括違章時間、違章地點、違章代碼、扣除分數(shù)及罰款金額等詳細信息。此外,當用戶存在待罰款違章信息時,用戶可通過在線繳費的方式處理違章記錄。結合上述違章查詢服務需求分析,遵循REST規(guī)范,設計出符合REST風格的違章查詢系統(tǒng)接口如表1-表3所示。
3系統(tǒng)實現(xiàn)與性能測試 基于Express及REST規(guī)范設計并實現(xiàn)了違章查詢服務,將系統(tǒng)后端部署在阿里云ECS服務器,并開發(fā)了手機APP方便用戶進行違章查詢。系統(tǒng)開發(fā)環(huán)境:Node 4.4.5、Express 4.0、Mongodb 3.2.6;系統(tǒng)開發(fā)工具:WebStrom11、Rebomongo 0.9.0;部署環(huán)境:阿里云Windows Server 2008 R2企業(yè)版,2核CPU,4G內存,4M帶寬。當用戶是會員時,直接點擊“我是會員”進行違章查詢,服務響應結果包括違法時間、違法地點、罰款金額、違法記分數(shù)等違章信息列表,當用戶點擊某一違章條目即可查看該條違章對應的詳細信息。為測試上述基于Express的違章查詢REST Web Service性能,本文與傳統(tǒng)J2EE實現(xiàn)進行了性能對比實驗。實驗硬件環(huán)境為:WIN7系統(tǒng)PC機,i54590 3.30GHz CPU,16G內存;實驗軟件環(huán)境為:Mongodb 3.2.6數(shù)據(jù)庫;Rebomongo 0.9.0可視化數(shù)據(jù)庫工具;壓力測試工具為Apache JMeter。利用Apache JMeter模擬發(fā)送HTTP請求,記錄并發(fā)請求數(shù)分別在100,200...2000時的系統(tǒng)平均響應時間[12],實驗結果如圖1所示。
圖1表明,在并發(fā)量小于600時,傳統(tǒng)J2EE實現(xiàn)和〖CM)〗〖LL〗〖HJ*5/9〗Express服務的平均響應時間差別不大,基于Express違章查詢服務比J2EE服務快5%左右;當并發(fā)量在600~1 200時,J2EE服務的平均響應時間隨著并發(fā)數(shù)增加而快速上升,Express服務響應時間仍維持在較為平穩(wěn)狀態(tài),Express服務比J2EE服務快近20%左右;當并發(fā)量大于1 200時,J2EE服務響應時間急劇增加,由于Tomcat線程池線程數(shù)量爆滿可能出現(xiàn)系統(tǒng)崩潰情況,而Express服務平均響應時間增加較為平緩,仍能正常服務客戶端請求。
4結語 針對異構客戶端的違章查詢服務接入問題和高并發(fā)服務性能問題,提出一種基于Express的違章查詢 REST Web Service方案,結合REST系統(tǒng)架構風格的特點和違章查詢的實際需求,基于Express等相關技術原理,設計并實現(xiàn)了基于Express REST違章查詢服務,最后實現(xiàn)了基于Express服務與基于J2EE服務性能對比實驗。實驗結果表明,Express服務在處理高并發(fā)問題時系統(tǒng)性能明顯優(yōu)于傳統(tǒng)J2EE服務,能有效提高違章查詢服務性能。參考文獻:[1]沈后功,周凱.2015年全國機動車和駕駛人迅猛增長新增汽車1781多萬汽車保有量增長創(chuàng)歷史新高[J].汽車與安全,2016(2):4141.
[2]劉尚旺,何東健,閆艷.Tomcat與IIS或Apache服務器集成的應用研究[J].計算機工程與設計,2009,30(10):25412543.
[3]劉家紅,吳泉源.一個基于事件驅動的面向服務計算平臺[J].計算機學報,2008,31(4):588599.
[4]許會元,何利力.NodeJS的異步非阻塞I/O研究[C].全國工業(yè)控制計算機技術年會,2014.
[5][美]ETHAN BROWN.Node與Express開發(fā)[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的家庭智能地暖遠程監(jiān)控系統(tǒng)[J].Computer Science\\s&\\sapplication,2015,5(6):204211.
[9]陸凌牛.Node.js權威指南[M].北京:機械工業(yè)出版社,2014:3145.
[10]程冬梅,王瑞聰,劉燕,等.基于REST架構風格的物聯(lián)網(wǎng)服務平臺研發(fā)[J].計算機工程與應用,2012,48(14):7478.[11]左文娟,張秋菊.基于REST物聯(lián)網(wǎng)監(jiān)控系統(tǒng)設計[J].計算機工程與設計,2016,37(1):2125.
[12]葉青平,王鵬飛,曹華.Web應用系統(tǒng)的分布式負載測試框架研究[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