田程元
摘要:該文是以我國物流路由為背景,通過基于web的開發(fā)程序,對我國物流路由進(jìn)行實(shí)時(shí)數(shù)據(jù)的交互,并對數(shù)據(jù)進(jìn)行分析,預(yù)警,處理,然后反饋給前端,讓前端對物流的流程進(jìn)行操作。該文的研究重點(diǎn)是esper技術(shù)。在物流交通的背景下,對物流交通的系統(tǒng)進(jìn)行技術(shù)優(yōu)化,通過運(yùn)用esper技術(shù),極大的提高物流訂單處理的效率,在極短的時(shí)間內(nèi)處理訂單,完成操作,反饋正確的信息給系統(tǒng)。
關(guān)鍵詞:物流;路由;esper;cep;esp
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)08-0274-05
1 背景與現(xiàn)狀
隨著電子商務(wù)的澎湃發(fā)展,網(wǎng)購已經(jīng)成為生活中必不可缺的一部分。尤其是節(jié)假日,如11月11日達(dá)到日均過億物流訂單的情況下,各類商家,各類每家在網(wǎng)絡(luò)營銷和網(wǎng)購中大大地滿足了各自的需求。
Esper通過對數(shù)據(jù)流接收后的實(shí)時(shí)處理等機(jī)制,在遇到大數(shù)據(jù)時(shí),逐步替代了之前查詢較慢,需要不斷訪問數(shù)據(jù)庫的關(guān)系型數(shù)據(jù)庫。Esper技術(shù)在物流中的應(yīng)用,對訂單的實(shí)時(shí)分析,車輛的實(shí)時(shí)分析,能夠在極短的事件內(nèi)處理大量的訂單,車輛數(shù)據(jù),從而能夠及時(shí)地對出錯(cuò)的信息進(jìn)行正確的反饋,以避免不必要的損失和采取及時(shí)的補(bǔ)救措施。
大數(shù)據(jù)是繼互聯(lián)網(wǎng),云計(jì)算,移動(dòng)的迅猛發(fā)展后的又一個(gè)新鮮概念。CEP復(fù)雜事件處理引擎,和低延遲消息傳遞中間件是大數(shù)據(jù)處理中應(yīng)用軟件設(shè)施的基礎(chǔ)。在物流行業(yè)中,SOA/CEP的提出與實(shí)施,有效地提高了物流產(chǎn)業(yè)對市場的及時(shí)響應(yīng)變化,在看似無關(guān)的事件中,辨識及預(yù)測出機(jī)會(huì)與陷進(jìn)?,F(xiàn)在的復(fù)雜事件處理越來越趨向于一個(gè)追求:更快,不貴,不復(fù)雜。如今,CEP已經(jīng)很好的融合了物流市場,行業(yè)中的需求很大。
1.2 本文所做的工作
本文的主要工作即:展示物流系統(tǒng)的Esper技術(shù)的應(yīng)用。
2 Esper技術(shù)簡介
2.1 概述
Esper是一個(gè)Java開發(fā)的事件流處理(ESP:Event Stream Processing)和復(fù)雜事件處理(CEP:Complex Event Processing)引擎。CEP:是一種實(shí)時(shí)事件處理并從大量事件數(shù)據(jù)流中挖掘復(fù)雜模式的技術(shù)。ESP:是一種從大量事件數(shù)據(jù)流中過濾,分析有意義的事件,并能夠?qū)崟r(shí)取得這些有意義的信息的技術(shù)。當(dāng)數(shù)百萬數(shù)量級的事件同時(shí)發(fā)生時(shí),我們不可能用關(guān)系數(shù)據(jù)庫來存儲和查詢,esper正是轉(zhuǎn)為這樣的大批量關(guān)聯(lián)事件而設(shè)計(jì)的,它使應(yīng)用程序的過程中收到的事件大量快速發(fā)張。Esper在雙2GHz CPU的Intel系統(tǒng)測試環(huán)境下,處理超過500 000個(gè)事件/秒;在VWAP基準(zhǔn)測試中在有1000語句的情況下,引擎延時(shí)平均小于3微妙(在10us時(shí)超過99%的預(yù)測準(zhǔn)確率)——最高時(shí)有70 Mbit/s流量并占用85%的CPU資源。該引擎可應(yīng)用于網(wǎng)絡(luò)入侵探測,SLA監(jiān)測,RFID讀取,航空運(yùn)輸調(diào)控,金融方面(風(fēng)險(xiǎn)管理,欺詐探測)等領(lǐng)域。
2.2 Esper中epl規(guī)則庫簡介
Esper提供一個(gè)定制的事件處理語言(epl),是esper應(yīng)用中的核心,事件流根據(jù)epl規(guī)則庫進(jìn)行分析,在大數(shù)據(jù)的傳輸中,這種分析是非常迅速而且有效的。該語言類似于SQL,條件表達(dá)更加豐富。其更為突出的是可以設(shè)置時(shí)間窗,從而減少開發(fā)工作,可以對復(fù)雜的事件進(jìn)行反映,減少了對數(shù)據(jù)庫中的表的操作,從而大大地提高了效率。
2.3 Esper架構(gòu)
1)創(chuàng)建java object的事件
2)創(chuàng)建一個(gè)聲明(statement)
3 物流監(jiān)控預(yù)警系統(tǒng)中Esper應(yīng)用具體實(shí)現(xiàn)
3.1 基本設(shè)計(jì)概念和流程
在基本設(shè)計(jì)概念和流程中最重要的邏輯處理是物流的監(jiān)控預(yù)警。在物流的監(jiān)控預(yù)警中,主要有以下幾種判定機(jī)制運(yùn)用到了esper技術(shù):
車輛錯(cuò)誤:
1)車輛所在gps坐標(biāo)是否在設(shè)定路線上,如果沒有,返回車輛物流運(yùn)輸出錯(cuò);
2)車輛半小時(shí)是否有信息傳回,如果沒有,返回車輛信號丟失;
3)車輛的半小時(shí)內(nèi)所行距離(無中轉(zhuǎn)站的情況下),如果太快則返回車輛速度過快信息,太慢則返回車輛速度過慢信息。
在這幾種判定機(jī)制下,就需要在系統(tǒng)開始運(yùn)行時(shí),傳入數(shù)據(jù)庫中的路線流進(jìn)入esper引擎中,然后隨著訂單流和車輛流的傳入,做出判定,然后將信息反饋給前端,顯示出詳細(xì)信息,并對錯(cuò)誤信息進(jìn)行預(yù)警,還有一步異步操作是把數(shù)據(jù)同時(shí)更新到數(shù)據(jù)庫中。
3.2 車輛管理模塊設(shè)計(jì)說明
1)程序描述:該模塊設(shè)計(jì)可以分為兩部分。第一部分:車輛信息從webservice傳入,然后直接放到esper監(jiān)聽引擎中,esper引擎通過epl規(guī)則庫做復(fù)雜事件流處理,然后如果有錯(cuò)誤生成錯(cuò)誤消息存入系統(tǒng),以便管理員查看。同時(shí)無論有無錯(cuò)誤消息,esper引擎在新車輛進(jìn)入后都會(huì)更新當(dāng)前在引擎中的事件流信息存入到內(nèi)存中,以便頁面調(diào)用是調(diào)用或者在20秒一次的推送中用到,同時(shí)還會(huì)把車輛信息存入到數(shù)據(jù)庫中。第二部分:管理員通過該模塊對程序進(jìn)行車輛相應(yīng)的操作,管理員通過查看車輛管理頁面列表將當(dāng)前esper引擎中正在處理的車輛信息顯示出來,而且頁面每過一分鐘都會(huì)刷新,或者手動(dòng)刷新。管理員通過搜索或者查看車輛信息將數(shù)據(jù)庫中的車輛信息調(diào)用出來,顯示車輛詳情。
2)特點(diǎn):此程序模塊有幾個(gè)難點(diǎn),一個(gè)是epl規(guī)則庫的書寫,一個(gè)是對webservice接口的書寫。
3)功能:系統(tǒng)接收每隔幾分鐘或者十幾分鐘從車載終端傳輸一次的車輛信息,然后從esper引擎中做大部分能判斷處理,而要在數(shù)據(jù)庫中判定當(dāng)前車輛位置是否在規(guī)定路線上的處理,然后將處理信息寫到內(nèi)存中,更新到數(shù)據(jù)庫中以供前端調(diào)用。
4)性能:能夠在最小反應(yīng)時(shí)間盡量處理最多的數(shù)據(jù)
5)輸入項(xiàng):查詢時(shí)需要輸入車輛號
6)輸出項(xiàng):顯示當(dāng)前車輛信息列表;顯示個(gè)別車輛信息列表
7)算法:無
8)限制條件:無
9)程序流程圖:
10)后端邏輯處理具體實(shí)現(xiàn):通過后端的doget方法的車輛的ID,然后調(diào)入esper引擎中處理信息,隨后調(diào)入storeitem存入數(shù)據(jù)庫的同時(shí)異步傳輸esper中處理車輛信息中的最新車輛信息給前端顯示。
1)當(dāng)前所有車輛信息中長達(dá)10分鐘沒有信號傳輸?shù)能囕v
說明:和訂單消息類似,當(dāng)10分鐘內(nèi)沒有傳輸信號時(shí),說明車輛出現(xiàn)危險(xiǎn)緊急狀況或者硬件出現(xiàn)問題的可能。在epl處理中,notime放的是每次車輛傳入的時(shí)間。首先,獲得車輛事件流中所有的唯一的id最近消息以及時(shí)間Select notime,id from com.project.controller.event.TruckEvent.std:unique(id).win:time然后在監(jiān)聽mylistener那里的繼承函數(shù)中,將notime與獲取當(dāng)前時(shí)間相減然后將數(shù)值超過10分鐘的id信息傳遞給控制層。
2)當(dāng)前ID車輛是否運(yùn)送過快或者運(yùn)送過慢
說明:當(dāng)車輛信息的路線在10分鐘內(nèi)保持不變時(shí),則默認(rèn)車輛沒有到過中轉(zhuǎn)站,也沒有停下來則開始判定ID訂單,如果按notime時(shí)間排序車輛中每次傳入兩點(diǎn)的直線坐標(biāo)的距離過大或者過小都不符合條件,會(huì)返回錯(cuò)誤信息給系統(tǒng)。首先,得到10分鐘內(nèi)車輛車輛的路線保持不變的訂單id以及他們的坐標(biāo)。Select TruckID,pr,pl,routine from com.project.controller.event.TruckEvent.win(time:10 min)group by TruckID.ext.sort(notime dsc);然后,在監(jiān)聽mylistener那里的繼承函數(shù)中,運(yùn)用for循環(huán)將routine保持不變的找出來,然后將所有的兩點(diǎn)的距離按經(jīng)緯度坐標(biāo)求直線,然后全部想加,得出的結(jié)果除以10min得出結(jié)果。將速度過快者,反饋給前端。當(dāng)然,這么計(jì)算有些誤差,但是確實(shí)估算到了訂單的大致車輛行駛速度
3)當(dāng)前車輛是否在預(yù)定路線中
說明:當(dāng)車輛傳入時(shí),關(guān)于路線的點(diǎn)集在路線流中,通過路線號能夠得出路線在路線流中的所有點(diǎn)的點(diǎn)集。然后找出最近點(diǎn)判斷即可,假定兩點(diǎn)之間的密集程度為5公里,則當(dāng)前點(diǎn)與最近一點(diǎn)的距離不能大于2.5公里,如果所有點(diǎn)于當(dāng)前點(diǎn)的距離大于2.5公里,則說明訂單不在預(yù)定路線中,需要返回錯(cuò)誤信息。由于這個(gè)只需要判定當(dāng)前剛進(jìn)入的車輛,所以要過濾其他在event中的id。首先,找出select a.TruckID,a.npr,a.npl,b.apr,b.apl from com.project.controller.event.ItemEvent as a(TruckID=”A100001”), com.project.controller.event.GPSEvent as b(a.routine=b.routine);然后,在監(jiān)聽mylistener那里的繼承函數(shù)中,運(yùn)用for循環(huán)將距離最近的點(diǎn)和期間的距離找出來,判斷如果其大于2.5公里,則返回錯(cuò)誤信息給系統(tǒng)管理員。
4 結(jié)束語
本文首先對當(dāng)前的信息化時(shí)代有了一個(gè)簡單的介紹和了解,分析了當(dāng)前信息化大數(shù)據(jù)時(shí)代的到來,各種信息化產(chǎn)品更新的迫在眉睫。尤其是隨著硬件設(shè)施的飛速發(fā)展,軟件技術(shù)的進(jìn)一步更新,物流系統(tǒng)存在了一部分的不足。由于這些不足之處,對本軟件的開發(fā)提供了一個(gè)明確的目標(biāo),之后的設(shè)計(jì)和開發(fā)都是圍繞著盡最大可能通過軟件的方式解決物流過程中的不足之處。接下來提出的研究目標(biāo)與所做工作,都是為了說明這項(xiàng)研究的簡略研究內(nèi)容及其在社會(huì)中的價(jià)值所在。
在第二部分中,本文對在物流監(jiān)控預(yù)警系統(tǒng)中所運(yùn)用到的技術(shù)進(jìn)行了詳簡有序的介紹,著重介紹了esper技術(shù),以及esper中的事件匹配處理機(jī)制epl。這是此物流監(jiān)控系統(tǒng)中的核心,也是物流監(jiān)控系統(tǒng)提高效率完成大數(shù)據(jù)處理的關(guān)鍵所在。然后介紹的技術(shù),如基于rest的webservice,goolge api的調(diào)用,敏捷開發(fā)都是開發(fā)物流監(jiān)控系統(tǒng)中必不可少的一部分,證明了這些技術(shù)的可行性。
在第三部分鐘,詳細(xì)介紹了物流監(jiān)控系統(tǒng)的需求分析,概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)以及具體實(shí)現(xiàn),也對實(shí)現(xiàn)部分給出了必要的講解和說明。
綜上所述,本文成功的構(gòu)建了一個(gè)物流實(shí)時(shí)監(jiān)控預(yù)警系統(tǒng)。
參考文獻(xiàn):
[1] 溫德成. 制造業(yè)企業(yè)如何挖掘第三利潤源泉[J]. 物流技術(shù), 2002(4).
[2] 孫穎, 陳通, 毛維. 物流信息服務(wù)企業(yè)服務(wù)創(chuàng)新過程的關(guān)鍵影響要素研究[J]. 科學(xué)學(xué)與科學(xué)技術(shù)管理, 2009(8).
[3] 劉萌, 藍(lán)必華, 高本河, 等. 第三方物流與制造業(yè)結(jié)合發(fā)展的途徑[J]. 中國物流與采購, 2006(9).
[4] 孫穎,陳通, 毛維,等. 物流信息服務(wù)概念的深入解析[J]. 現(xiàn)代管理科學(xué), 2009(7).
[5] 徐凡, 李之棠, 任杰麟. 網(wǎng)絡(luò)安全事件的關(guān)聯(lián)分析方法的比較研究[J]. 信息安全與通信保密, 2006(2).
[6] 沈星星, 程學(xué)旗. 基于數(shù)據(jù)流管理平臺的網(wǎng)絡(luò)安全事件監(jiān)控系統(tǒng)[J]. 小型微型計(jì)算機(jī)系統(tǒng), 2006(2).
[7] 張佩云, 孫亞民. 動(dòng)態(tài)web服務(wù)組合研究[J]. 計(jì)算機(jī)科學(xué), 2007(5).
[8] 吳恒, 吳泉源, 劉家紅, 梅彪. 一種改進(jìn)的動(dòng)態(tài)路由服務(wù)模型[J]. 計(jì)算機(jī)工程, 2008, 34 (9).
[9] 于寶琴, 楊寶強(qiáng). 企業(yè)物流信息系統(tǒng)整合與應(yīng)用[M]. 北京: 中國物質(zhì)出版社, 2007.
[10] 何為超, 李宏, 張雯. 網(wǎng)絡(luò)安全管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 信息安全與通信保密, 2006(9).