尹延寧,劉太君,葉 焱,江明玉
(寧波大學(xué)信息科學(xué)與工程學(xué)院,浙江 寧波 315211)
基于Node.js,Sencha Touch和iBeacon信息推送系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)*
尹延寧,劉太君,葉焱,江明玉
(寧波大學(xué)信息科學(xué)與工程學(xué)院,浙江寧波315211)
為了解決利用二維碼技術(shù)實(shí)現(xiàn)的傳統(tǒng)信息推送系統(tǒng)操作流程復(fù)雜,用戶體驗(yàn)不佳,智能化不足的問題,提出了一種基于iBeacon定位技術(shù)和云架構(gòu)的整體設(shè)計(jì)方案。依托于云架構(gòu),利用web服務(wù)器Node.js和NoSQL數(shù)據(jù)庫MongoDB進(jìn)行相關(guān)數(shù)據(jù)的處理、存儲(chǔ),利用基于iBeacon的定位技術(shù)實(shí)現(xiàn)位置檢測,前端采用HTML5框架Sencha Touch并結(jié)合Objective-C以hybrid app的形式實(shí)現(xiàn)信息展示。詳細(xì)闡述了系統(tǒng)的架構(gòu)、功能和設(shè)計(jì)方案,為建設(shè)新型細(xì)信息推送系統(tǒng)提供了新的思路與方向。
iBeacon,Node.js,Sencha Touch,Objective-C,信息推送
隨著社會(huì)的發(fā)展,生產(chǎn)力的提高,人們的消費(fèi)能力顯著增長,琳瑯滿目的商品令人應(yīng)接不暇。如何讓消費(fèi)者快速獲取有效信息,提高選擇效率,從而提高銷售額是各大銷售商的工作重點(diǎn)。依托于二維碼技術(shù)的傳統(tǒng)信息推送系統(tǒng)的出現(xiàn),一定程度上解決了此問題,對移動(dòng)電子商務(wù)的發(fā)展具有重要意義[1]。利用二維碼技術(shù),消費(fèi)者只需要利用智能手機(jī)等智能終端掃一掃即可獲得相關(guān)信息,幫助消費(fèi)者進(jìn)一步作出選擇。
然而二維碼技術(shù)需要首先下載識讀軟件到手機(jī)[2],之后消費(fèi)者才能主動(dòng)掃描二維碼,由于消費(fèi)品數(shù)量眾多,這無疑增加了用戶負(fù)擔(dān),且二維碼掃描操作過程繁瑣,降低了用戶體驗(yàn)。二維碼技術(shù)無法跟蹤用戶位置變化,進(jìn)而有針對性地實(shí)現(xiàn)對用戶的信息主動(dòng)推送,降低了銷售商的信息推送效率。
基于iBeacon定位技術(shù)的信息推送系統(tǒng)利用iBeacon的定位技術(shù)[3],在前端實(shí)時(shí)獲取用戶位置信息,根據(jù)用戶位置向服務(wù)器主動(dòng)獲取相關(guān)信息,以向用戶展示。用戶只需手持支持藍(lán)牙4.0的移動(dòng)設(shè)備即可隨時(shí)接收信息,不再需要主動(dòng)掃描二維碼等過程,操作流程簡化,用戶體驗(yàn)獲得極大提升。
基于iBeacon定位技術(shù)的信息推送系統(tǒng)由iBeacon藍(lán)牙、前端表現(xiàn)層、Node.js后臺服務(wù)層、MongoDB數(shù)據(jù)存儲(chǔ)層4部分組成,下面分別進(jìn)行闡述。
iBeacon是Apple公司智能移動(dòng)設(shè)備OS(iOS7)上配備的新功能,本質(zhì)上是一個(gè)低功耗藍(lán)牙(BLE)設(shè)備[4]。iBeacon應(yīng)用于近距離的通信,持續(xù)向周圍空間發(fā)射信號,信號中包含自己特有的唯一識別ID:UUID,當(dāng)有用戶手持移動(dòng)設(shè)備靠近時(shí),可以檢測到iBeacon發(fā)射的信號并提取其UUID,根據(jù)其UUID可以進(jìn)行相關(guān)操作。如在商場安放iBeacon藍(lán)牙,即可使iPhone或iPad上顯示由服務(wù)器向顧客發(fā)送的優(yōu)惠信息。
iBeacon遵從藍(lán)牙4.0技術(shù)標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)由SIG制定。藍(lán)牙4.0專門面向?qū)Τ杀竞湍芎囊蠖急容^高的無線方案。具有超低峰值、平均和待機(jī)模式功耗,一枚普通的紐扣電池可維持一年甚至數(shù)年運(yùn)行[5]。通過對附近多個(gè)iBeacon所發(fā)射信號的強(qiáng)度進(jìn)行比較,可以確定最近距離的iBeacon的UUID。本系統(tǒng)利用此原理實(shí)現(xiàn)基于位置的信息推送服務(wù)。
系統(tǒng)為每個(gè)商品配備一個(gè)iBeacon藍(lán)牙設(shè)備,商品信息與iBeacon識別號UUID進(jìn)行一對一綁定。iBeacon藍(lán)牙芯片采用cc2541芯片。
前端表現(xiàn)層采用Objective-C和Sencha Touch框架相結(jié)合的方式進(jìn)行hybrid app開發(fā)。
Objective-C是擴(kuò)充C的面向?qū)ο蟮木幊陶Z言,主要用于采用OpenStep標(biāo)準(zhǔn)的系統(tǒng)如Mac OSX、GNUstep。其基本用途是為IOS操作系統(tǒng)編寫應(yīng)用程序,可運(yùn)行于iPhone和iPad移動(dòng)設(shè)備。針對IOS移動(dòng)設(shè)備開發(fā)native app和hybrid app,Objective-C語言是必須選擇。
Sencha Touch框架是第一個(gè)支持HTML5的JavaScript移動(dòng)端框架[6]。支持世界上主流的移動(dòng)設(shè)備。Sencha Touch的整個(gè)庫文件很小,經(jīng)過壓縮和gzip后只有80 KB左右,同時(shí)還具有強(qiáng)大的數(shù)據(jù)集成功能??梢酝ㄟ^Ajax、JSONp、YQL等方式將數(shù)據(jù)綁定到List等組件或者寫入本地離線存儲(chǔ)[7]??梢詫?shí)現(xiàn)一次開發(fā)部署,多處運(yùn)行[8]。
圖1 MVC結(jié)構(gòu)圖
Sencha Touch框架采用MVC三層結(jié)構(gòu)模式進(jìn)行開發(fā)。通過將業(yè)務(wù)邏輯、數(shù)據(jù)和界面顯示分離的方法進(jìn)行代碼組織,降低了各個(gè)模塊間的耦合程度,方便了程序維護(hù)和管理,使代碼閱讀起來更加流暢。典型的MVC框架圖如圖1所示。
前端表現(xiàn)層作為交互和展示界面,考慮到使用人群的不同,分別針對管理人員和普通用戶進(jìn)行開發(fā)。針對管理人員的前端功能框圖如圖2所示。
圖2 管理人員前端功能框圖
考慮到管理人員的應(yīng)用需求,針對管理人員實(shí)現(xiàn)位置檢測、用戶管理、信息展示、數(shù)據(jù)管理4大功能。以用戶權(quán)限對系統(tǒng)數(shù)據(jù)進(jìn)行管理如數(shù)據(jù)上傳,修改,更新,查詢等。針對普通用戶即消費(fèi)者,其主要應(yīng)用需求為根據(jù)位置獲取商品信息,故僅為其保留兩大功能:位置檢測和信息展示。
Node.js是致力于實(shí)時(shí)Web應(yīng)用的平臺,用于快速搭建并發(fā)性能高、響應(yīng)速度快的網(wǎng)絡(luò)應(yīng)用。Google Chrome V8引擎的優(yōu)化,使JavaScript語言的速度獲得極大提升,實(shí)現(xiàn)了后臺和前端編程語言上的統(tǒng)一[9]。與C語言相比,在性能上相差無幾。但使用JavaScript腳本語言的開發(fā)成本卻比C語言低得多。
Node.js具有以下優(yōu)點(diǎn):①在單線程的情況下,仍能進(jìn)行任務(wù)的并行處理;②使用Mudule模塊對不同的功能進(jìn)行劃分,簡化開發(fā)過程;③采用事件驅(qū)動(dòng)機(jī)制和異步編程風(fēng)格實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)。其組織架構(gòu)如圖3所示。最頂層的是Node.js標(biāo)準(zhǔn)庫,其中封裝了Node.js提供的核心模塊,比如:http、https、fs等,實(shí)現(xiàn)了Node.js的應(yīng)用層接口。在Libeio和Libev的基礎(chǔ)上抽象出了Libuv層。針對不同的操作系統(tǒng)分別采用不同的機(jī)制來保證高性能的實(shí)現(xiàn)[10]。
圖3 Node.js組織架構(gòu)圖
為實(shí)現(xiàn)高并發(fā)性能,Node.js設(shè)計(jì)為單線程,異步I/O模式。極大地提高了系統(tǒng)的健壯性,并且不會(huì)有多線程開銷[11]。
作為開源平臺,Node.js得到了大量支持,有許多開源框架以供使用。系統(tǒng)使用Node.js的express框架搭建服務(wù)器,為各功能模塊提供運(yùn)行環(huán)境。系統(tǒng)架構(gòu)圖如圖4所示。
圖4 系統(tǒng)架構(gòu)圖
MongoDB數(shù)據(jù)庫具有面向集合存儲(chǔ),模式自由,支持云級別的伸縮性等特點(diǎn)。文件存儲(chǔ)格式為BSON,作為一種JSON的擴(kuò)展,同JavaScript有良好的兼容性,原生支持Node.js[12]。
MongoDB提供了復(fù)制機(jī)制以保證多個(gè)數(shù)據(jù)庫之間的數(shù)據(jù)同步,用以實(shí)現(xiàn)數(shù)據(jù)庫的容災(zāi)、備份、回復(fù)、負(fù)載均衡等功能。MongoDB的復(fù)制機(jī)制有兩種:Master-Slave和Replica Sets。Replica Sets較Master-Slave架構(gòu)功能更為強(qiáng)大,有故障自動(dòng)切換和自動(dòng)修復(fù)節(jié)點(diǎn)的能力,大大降低了單點(diǎn)故障發(fā)生的概率[13]。
本系統(tǒng)在一臺服務(wù)器上部署了3節(jié)點(diǎn)的Replica Sets。其中1個(gè)節(jié)點(diǎn)作為主庫,其他2個(gè)節(jié)點(diǎn)作為從庫。正常情況下,只有主庫能進(jìn)行寫操作。當(dāng)主庫出現(xiàn)故障時(shí),通過MongoDB的選舉機(jī)制在從庫中選取一個(gè)實(shí)例作為主庫繼續(xù)運(yùn)行,并進(jìn)行故障節(jié)點(diǎn)的修復(fù),從而實(shí)現(xiàn)容災(zāi)能力。
5.1普通用戶功能設(shè)計(jì)與實(shí)現(xiàn)
針對普通用戶,實(shí)現(xiàn)位置檢測和信息展示功能。
(1)位置檢測。位置檢測的關(guān)鍵設(shè)備是iBeacon藍(lán)牙和IOS移動(dòng)設(shè)備。利用IOS應(yīng)用程序開發(fā)語言O(shè)bjective-C進(jìn)行開發(fā)。通過調(diào)用beacon、beacon-Manager、beaconRegion和positionDot屬性實(shí)現(xiàn)。positionDot可以自動(dòng)確定iBeacon與移動(dòng)終端相距的具體米數(shù),beaconRegion屬性負(fù)責(zé)檢測移動(dòng)終端周圍30m左右的iBeacon的UUID。提取距移動(dòng)終端距離最近的iBeacon的UUID作為信息請求參數(shù),向服務(wù)器發(fā)送請求。
(2)信息展示。信息展示界面由Sencha Touch框架實(shí)現(xiàn),與native app打包在一起。Node.js服務(wù)器在接收前端請求后,根據(jù)請求參數(shù)將響應(yīng)數(shù)據(jù)返回給前端。前端接收數(shù)據(jù)后,利用store數(shù)據(jù)存儲(chǔ)模塊實(shí)現(xiàn)數(shù)據(jù)的排序、篩選,利用List、dataview等數(shù)據(jù)展示組件以良好的方式展示給用戶。展示界面如圖5所示。
圖5 展示界面
5.2管理人員功能設(shè)計(jì)與實(shí)現(xiàn)
針對管理人員,除普通用戶所具備的位置檢測和信息展示功能外,還應(yīng)具備用戶管理、數(shù)據(jù)管理等功能。操作環(huán)境不再局限于移動(dòng)設(shè)備。
(1)用戶管理。包括登錄和注冊功能。首先進(jìn)入登錄界面,登錄成功后跳轉(zhuǎn)主界面,方可進(jìn)行其他操作。若用戶未注冊,則轉(zhuǎn)到注冊界面注冊后登錄。注冊界面如圖6(a)所示。
(2)數(shù)據(jù)管理。包括文件上傳和數(shù)據(jù)查詢。用戶按照指定格式上傳文件后,服務(wù)器經(jīng)過數(shù)據(jù)驗(yàn)證,將數(shù)據(jù)寫入數(shù)據(jù)庫,然后刪除文件以節(jié)省服務(wù)器硬盤空間。數(shù)據(jù)查詢界面單擊查看詳細(xì)信息,雙擊可進(jìn)入編輯界面進(jìn)行修改,確定修改后,上傳服務(wù)器存入數(shù)據(jù)庫。上傳界面和查詢界面分別如圖6(b)和圖6(c)所示。
圖6 功能界面
對于Web系統(tǒng),系統(tǒng)的吞吐量和平均響應(yīng)時(shí)間是用戶比較關(guān)心的性能指標(biāo)。Web系統(tǒng)的并發(fā)性能需要進(jìn)行壓力測試,測試不同并發(fā)數(shù)下系統(tǒng)的吞吐量和平均響應(yīng)時(shí)間來衡量。吞吐量一般通過服務(wù)器每秒能夠處理的請求數(shù)(RPS)來衡量[14]。受實(shí)驗(yàn)室環(huán)境所限,以下是系統(tǒng)測試的硬件環(huán)境:
CPU:Intel(R)Core(TM)i3-3220 CPU@ 3.30GHz雙核四線程;
操作系統(tǒng):32位Win7操作系統(tǒng);
內(nèi)存:4.00GB;
硬盤:5 400轉(zhuǎn)/min。
利用Apache Bench進(jìn)行測試。測試方法:使用Apache Bench測試程序,以某一并發(fā)數(shù)持續(xù)向服務(wù)器發(fā)送10萬個(gè)請求,測試在各個(gè)并發(fā)數(shù)下的服務(wù)器的平均吞吐量。實(shí)驗(yàn)數(shù)據(jù)如圖7所示。
圖7 系統(tǒng)平均吞吐量
由圖7可知,隨著并發(fā)數(shù)的增大,系統(tǒng)吞吐量由800下降到600,當(dāng)并發(fā)數(shù)高于400后,吞吐量穩(wěn)定在600左右。由此可見,服務(wù)器在高并發(fā)的情況下依然保持高水準(zhǔn)運(yùn)行,性能穩(wěn)定。鑒于系統(tǒng)應(yīng)用范圍和受眾人群,并發(fā)數(shù)遠(yuǎn)小于1 000,系統(tǒng)性能完全滿足要求。
通過iBeacon藍(lán)牙、前端表現(xiàn)層、Node.js后臺服務(wù)層、MongoDB數(shù)據(jù)存儲(chǔ)層4個(gè)層次闡述了一個(gè)利用iBeacon定位技術(shù)的基于位置的信息推送系統(tǒng)的新方案。和傳統(tǒng)的依賴于二維碼識別技術(shù)的推送系統(tǒng)相比,其用戶體驗(yàn)得到很大改善,信息推送更加智能化,提高了銷售和選購的效率,是一次很有意義的嘗試。信息推送系統(tǒng)的發(fā)展和完善是一個(gè)不斷前進(jìn)的過程,需要不斷努力地探索、研究。信息推送系統(tǒng)的不斷發(fā)展將會(huì)更好為人們服務(wù)。
[1]梁鵬.手機(jī)二維碼業(yè)務(wù)研究[J].電信科學(xué),2006,61(12):36-39.
[2]周娣.淺談二維碼的應(yīng)用[J].山東輕工業(yè)學(xué)院學(xué)報(bào):自然科學(xué)版,2011(2):62-64.
[3]張立斌,余彥培.手機(jī)室內(nèi)定位的應(yīng)用與服務(wù)[J].導(dǎo)航定位學(xué)報(bào),2014,2(4):27-30.
[4]吳棟淦.基于iBeacon的智能導(dǎo)覽系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].貴陽學(xué)院學(xué)報(bào):自然科學(xué)版,2014,9(4):9-13.
[5]沈雷,方東根.基于iBeacon技術(shù)的安全性服裝設(shè)計(jì)[J].毛紡科技,2015,43(2):48-52.
[6]龔健.基于Sencha Touch的移動(dòng)書店設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī):專業(yè)版,2013,40(32):54-56.
[7]邵長遠(yuǎn),高春玲,李睿.基于Sencha Touch的移動(dòng)閱讀器設(shè)計(jì)與實(shí)現(xiàn)[J].圖書館理論與實(shí)踐,2013,45(3):85-88.
[8]梁雪青.基于Sencha Touch的企業(yè)移動(dòng)門戶系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī):專業(yè)版,2014,41(13):77-80.
[9]張煜.一種使用Node.js構(gòu)建的分布式數(shù)據(jù)流日志服務(wù)系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(2):68-71.
[10]陳瑤.基于Node.js高并發(fā)web系統(tǒng)的研究與應(yīng)用[D].成都:電子科技大學(xué),2014.
[11]鄒向陽,鄒和輝,劉戎.基于物聯(lián)網(wǎng)與三維可視化的彈藥庫實(shí)時(shí)監(jiān)測系統(tǒng)[J].火力與指揮控制,2015,40(1):30-33.
[12]鄭靜靜,葉焱,劉太君,等.基于Flex、Red5和MongoDB的視頻直播、錄制及存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2014,34(2):589-592.
[13]紅丸.MongoDB管理與開發(fā)精要[M].北京;機(jī)械工業(yè)出版社,2011.
[14]朱建兵.基于Node.JS高并發(fā)網(wǎng)絡(luò)應(yīng)用架構(gòu)的研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2014.
Design and Implementation of Information Push System Based on Node.js,Sencha Touch and IBeacon
YIN Yan-ning,LIU Tai-jun,YEYan,JIANGMing-yu
(School of Information Science and Engineering,Ningbo University,Ningbo 315211,China)
To address the complex operational processes,poor user experience and the shortage of intelligence of the traditional information push system used two-dimensional code technology,this paper presents an overall design scheme based on iBeacon positioning technology and cloud architecture. Relying on cloud architecture,web server Node.js and NoSQL database MongoDB are utilized to achieve the processing and storage of related data,the position detection is realized by iBeacon positioning technology,the combination of Sencha Touch framework and Objective-C is used for information display through the form of hybrid app.This paper elaborates the structure,function and the design project of the system,and provides new ideas and directions for the construction of new information push system.
iBeacon,Node.js,Sencha Touch,Objective-C,information push system
TP311.1;TP399
A
1002-0640(2016)08-0151-04
2015-06-13
2015-07-26
國家自然科學(xué)基金(61171040);浙江省自然科學(xué)基金(LQ 13F010007);浙江省科技廳基金資助項(xiàng)目(2014C31061)
尹延寧(1990-),男,山東萊蕪人,碩士研究生。研究方向:W eb前端移動(dòng)框架,W eb服務(wù)器。