王禹皓 趙爾平
(西藏民族大學(xué)信息工程學(xué)院,陜西 咸陽(yáng) 712082)
在新技術(shù)不斷涌現(xiàn)的今天,人們的生活也越來越便利,高鐵的出現(xiàn)方便了人們的出行,移動(dòng)網(wǎng)絡(luò)的升級(jí)讓我們擁有了更好的上網(wǎng)體驗(yàn),移動(dòng)支付讓我們擺脫了現(xiàn)金的累贅。在經(jīng)歷了計(jì)算機(jī)和物聯(lián)網(wǎng)的快速發(fā)展后,物聯(lián)網(wǎng)成為了當(dāng)前信息產(chǎn)業(yè)的最新發(fā)展方向。物聯(lián)網(wǎng)概念上是指將網(wǎng)絡(luò)虛擬數(shù)據(jù)進(jìn)行實(shí)體化,與實(shí)際物品和生活場(chǎng)景相結(jié)合,將物品與物品之間進(jìn)行關(guān)聯(lián)化管理,通過物品相互之間的信息交換,實(shí)現(xiàn)真正的物物相息[1]。
在物聯(lián)網(wǎng)的系統(tǒng)中,數(shù)據(jù)信息的交互產(chǎn)生的流量數(shù)據(jù)和手機(jī)流量相似。運(yùn)營(yíng)商會(huì)對(duì)流量數(shù)據(jù)傳輸提供相應(yīng)的流量套餐服務(wù)。流量查詢子系統(tǒng)作用是對(duì)物聯(lián)網(wǎng)中各種產(chǎn)品流量進(jìn)行查詢處理。該子系統(tǒng)在實(shí)現(xiàn)基本查詢業(yè)務(wù)的基礎(chǔ)之上又具有較高的處理速度。查詢所覆蓋的產(chǎn)品范圍比較廣其中包括系列類產(chǎn)品、非系列類產(chǎn)品、月流量等。該系統(tǒng)為純后臺(tái)系統(tǒng),以Java 作為開發(fā)語(yǔ)言進(jìn)行開發(fā),框架選取的是SpringBoot與持久層框架MyBatis,因其配置簡(jiǎn)單,方便搭建快速開發(fā),能實(shí)現(xiàn)功能的靈活性[2]。文章將圍繞物聯(lián)網(wǎng)流量查詢子系統(tǒng)展開研究。
流量查詢,是運(yùn)營(yíng)商所必要提供的服務(wù)之一,也是用戶得知可使用剩余流量的方式。系統(tǒng)需要對(duì)用戶所使用的流量數(shù)據(jù)進(jìn)行計(jì)算處理,給用戶反饋剩余流量情況。目前有多種的流量查詢,各自應(yīng)用于不同的場(chǎng)景,不同業(yè)務(wù)所涵蓋的范圍也不相同。比如孫曉燕;高婷;曾悠;陳晴研發(fā)的,采用asp.net 平臺(tái),SQL Server數(shù)據(jù)庫(kù)配置方案,基于B/S架構(gòu)的省市寬帶流量Web 查詢系統(tǒng),實(shí)現(xiàn)某一天或某一時(shí)段的數(shù)據(jù)流量連續(xù)性查詢,滿足科研開發(fā)人員、網(wǎng)絡(luò)設(shè)計(jì)人員的查詢要求[3]。如涵蓋了流量查詢的手機(jī)流量管理專家流量銀行。當(dāng)今生活中,有許多智能化產(chǎn)品能提供良好的服務(wù),這都依賴于數(shù)據(jù)流量的傳輸。物聯(lián)網(wǎng)的各項(xiàng)產(chǎn)品也不例外,為了支持物聯(lián)網(wǎng)用戶的流量查詢,物聯(lián)網(wǎng)業(yè)務(wù)系統(tǒng)的流量查詢子系統(tǒng)應(yīng)運(yùn)而生。
流量查詢子系統(tǒng),主要提供用戶套餐流量查詢的后臺(tái)業(yè)務(wù)支撐。
用戶每日發(fā)起流量查詢請(qǐng)求數(shù)量較大,所以該子系統(tǒng)需要有處理大量請(qǐng)求的能力,同時(shí)也需要有較快的處理速度,要能夠快速解決請(qǐng)求的積壓?jiǎn)栴}。
流量查詢子系統(tǒng),需要按照數(shù)據(jù)流轉(zhuǎn)流程和業(yè)務(wù)流程正確及時(shí)的對(duì)請(qǐng)求做出響應(yīng),保證反饋信息的準(zhǔn)確性。對(duì)于轉(zhuǎn)發(fā)過程中出錯(cuò)的訂單,需要進(jìn)行統(tǒng)一的記錄。為了提高用戶的體驗(yàn),這些因轉(zhuǎn)發(fā)導(dǎo)致出錯(cuò)的訂單需要被重新執(zhí)行。
可能存在數(shù)據(jù)非法或者是數(shù)據(jù)的不規(guī)范的請(qǐng)求,所以該子系統(tǒng)需要具有對(duì)不合法數(shù)據(jù)以及不規(guī)范數(shù)據(jù)正確判斷和處理的能力,以減少不合法請(qǐng)求對(duì)資源造成的浪費(fèi)。
其數(shù)據(jù)來源為:用戶發(fā)起流量查詢請(qǐng)求,經(jīng)過第三方系統(tǒng)的轉(zhuǎn)發(fā),至Nginx 主機(jī),Nginx 進(jìn)行負(fù)載均衡,將請(qǐng)求發(fā)送至物聯(lián)網(wǎng)業(yè)務(wù)支撐系統(tǒng)。
根據(jù)用戶需求描述,大致處理流程如下:業(yè)務(wù)支撐系統(tǒng)需要對(duì)請(qǐng)求報(bào)文進(jìn)行入庫(kù)處理,將請(qǐng)求信息存入訂單表。訂單表需要有對(duì)應(yīng)的狀態(tài)信息,以便于客戶端對(duì)報(bào)文進(jìn)行取出,發(fā)往服務(wù)端進(jìn)行處理。服務(wù)端需要對(duì)客戶端發(fā)來的請(qǐng)求進(jìn)行查重,以避免重復(fù)訂單操作浪費(fèi)資源。若為重單,則應(yīng)該進(jìn)行返回查重表的內(nèi)容信息。如果不是重單,應(yīng)該進(jìn)行相應(yīng)的業(yè)務(wù)判斷操作,校驗(yàn)用戶等一系列信息的合法性。校驗(yàn)不通過的訂單請(qǐng)求應(yīng)該被定義為失敗單加入查重表。校驗(yàn)通過則進(jìn)行后續(xù)步驟,操作完成后也應(yīng)在查重表進(jìn)行相應(yīng)的記錄。
訂單數(shù)據(jù)會(huì)以XML 報(bào)文格式被發(fā)送到物聯(lián)網(wǎng)業(yè)務(wù)系統(tǒng),進(jìn)行解析并映射到對(duì)象中,用于程序處理。處理完畢后的返回?cái)?shù)據(jù)經(jīng)過拼裝組裝成XML 報(bào)文形式進(jìn)行對(duì)外反饋。
流量查詢子系統(tǒng)是用以處理系列類產(chǎn)品流量查詢、非系列類產(chǎn)品流量查詢、月流量查詢?nèi)N查詢請(qǐng)求的系統(tǒng)。
客戶的請(qǐng)求以XML 報(bào)文的形式被外部系統(tǒng)發(fā)送物聯(lián)網(wǎng)業(yè)務(wù)系統(tǒng)(以下簡(jiǎn)稱“系統(tǒng)”)的流量查詢子系統(tǒng)。系統(tǒng)接收到報(bào)文并進(jìn)行解析入庫(kù)處理。訂單表中狀態(tài)為未處理的記錄,將由客戶端取出,交由服務(wù)端進(jìn)行處理。服務(wù)端將進(jìn)行查重處理,其依據(jù)是訂單的唯一標(biāo)識(shí)流水號(hào)。查重成功后會(huì)對(duì)報(bào)文進(jìn)行解析,以獲取報(bào)文中的相應(yīng)信息,如用戶的手機(jī)號(hào)等,用于后續(xù)一系列校驗(yàn),通過則繼續(xù)處理。反之記錄入查重記錄表??蛻舳私邮諄碜苑?wù)端的處理結(jié)果,對(duì)外反饋。如圖1所示。
圖1 基本處理流程圖
流量查詢子系統(tǒng)采用Oracle 作為數(shù)據(jù)庫(kù)。Oracle數(shù)據(jù)庫(kù)有海量數(shù)據(jù)處理的優(yōu)勢(shì)。
錯(cuò)單入庫(kù)工具采用HBase 作為數(shù)據(jù)庫(kù),HBase 是NoSql數(shù)據(jù)庫(kù)[4]。Row Key生成規(guī)則為:文件名后六位+文件首行前四位(文件生成時(shí)間)+數(shù)據(jù)行號(hào)。
部分?jǐn)?shù)據(jù)對(duì)象表:
表1 訂單請(qǐng)求對(duì)象表
表2 組織信息對(duì)象模型
表3 用戶狀態(tài)對(duì)象模型
在訂單轉(zhuǎn)發(fā)過程中,業(yè)務(wù)支撐系統(tǒng)需要對(duì)請(qǐng)求報(bào)文進(jìn)行入庫(kù)之前,會(huì)有一些轉(zhuǎn)發(fā)出錯(cuò)的訂單請(qǐng)求。這些訂單請(qǐng)求將會(huì)被第三方系統(tǒng)收采集,存儲(chǔ)到指定位置,為了保證訂單都能順利被執(zhí)行。同時(shí)也是為了更好的輔助流量查詢子系統(tǒng)完成流量查詢?nèi)蝿?wù)設(shè)計(jì)了錯(cuò)單入庫(kù)工具。如圖2所示:
圖2 錯(cuò)單入HBase庫(kù)工具結(jié)構(gòu)圖
首先錯(cuò)單入庫(kù)工具功能:轉(zhuǎn)發(fā)過程中的失敗單,被錯(cuò)單入庫(kù)工具進(jìn)行解析文件并入HBase 庫(kù)。后被物聯(lián)網(wǎng)業(yè)務(wù)系統(tǒng)掃描。保證了所有請(qǐng)求報(bào)文得到處理。
錯(cuò)單入庫(kù)工具三個(gè)目錄功能:這樣設(shè)計(jì)避免了宕機(jī)對(duì)錯(cuò)單入庫(kù)的影響,避免出現(xiàn)未入庫(kù)完全的文件。
錯(cuò)單入庫(kù)工具的根據(jù)文件信息建立表部分代碼實(shí)現(xiàn):
子系統(tǒng)處理三種類型的流量查詢請(qǐng)求,對(duì)每一種請(qǐng)求都有專門的處理方式,用于支持物聯(lián)網(wǎng)的產(chǎn)品流量查詢業(yè)務(wù)。能夠接收?qǐng)?bào)文,并解析報(bào)文對(duì)報(bào)文的正確性進(jìn)行檢驗(yàn),如果為非法報(bào)文需要進(jìn)行相應(yīng)記錄并給出相應(yīng)反饋。進(jìn)行流量查詢會(huì)記錄開始與結(jié)束時(shí)間,用于后期收集處理時(shí)長(zhǎng),對(duì)系統(tǒng)運(yùn)行情況判斷和對(duì)余量查詢子系統(tǒng)效率進(jìn)行檢驗(yàn)。報(bào)文中解析出來的OprCode(操作代碼)用于確認(rèn)是那種產(chǎn)品。
程序中優(yōu)化業(yè)務(wù)中的系列類產(chǎn)品查詢操作,將OprCode 為3 的(系列類產(chǎn)品)流量查詢下的所有產(chǎn)品,進(jìn)行抽象,通過一條SQL 將原來需多次查詢的內(nèi)容一次查詢出來。從而降低了對(duì)數(shù)據(jù)庫(kù)的訪問次數(shù)。經(jīng)過效率測(cè)試,每條訂單的處理時(shí)間相較之前提升了百分之三十,能更好的實(shí)現(xiàn)快速處理大批量訂單的要求。對(duì)所有產(chǎn)品的相似處理方法,進(jìn)行提取和封裝,做到了代碼簡(jiǎn)潔,提高了代碼的內(nèi)聚性。降低了子系統(tǒng)間的耦合程度,便于后期更新和完善。
流量查詢子系統(tǒng)服務(wù)端處理流程圖如圖3所示流量查詢整體流程如下:
圖3 流量查詢流程圖
4.3.1 運(yùn)行程序,加載配置文件。配置文件中包含部分容易變更的配置參數(shù)。包括及客戶端需要掃描的訂單表信息、查重表信息、連接Oracle 數(shù)據(jù)庫(kù)失敗重試次數(shù)和失敗重試間隔時(shí)間等配置項(xiàng)。
4.3.2 客戶端會(huì)不斷去掃描指定訂單表,會(huì)根據(jù)相應(yīng)的要求對(duì)訂單狀態(tài)進(jìn)行判斷,判斷是否有STATE(訂單狀態(tài))為0的訂單,如果有則進(jìn)行后續(xù)步驟。
4.3.3 掃描到的符合要求的訂單狀態(tài)將會(huì)被變更為1,并有客戶端發(fā)送給服務(wù)端,如果發(fā)送失?。ǔ瑫r(shí)/報(bào)文存在問題)將會(huì)變更狀態(tài)為11。
4.3.4 服務(wù)端流量查詢子系統(tǒng)會(huì)對(duì)該訂單進(jìn)行查重檢測(cè)。若檢查到為重單,則返回查重表的相應(yīng)內(nèi)容信息,反之,則對(duì)報(bào)文進(jìn)行解析。
4.3.5 解析完報(bào)文獲取到相應(yīng)信息,根據(jù)請(qǐng)求類型進(jìn)行不同的校驗(yàn),校驗(yàn)成功則進(jìn)行后續(xù)操作,不成功則加入查重表,反饋錯(cuò)誤信息。
4.3.6 解析完的報(bào)文信息中獲取到OprSeq(操作流水)、UserID(用戶標(biāo)識(shí))、和OprCode(操作類型)等信息。
4.3.7 流量查詢子系統(tǒng)將調(diào)用第三方系統(tǒng)提供的接口獲取當(dāng)前帳期的套餐余量信息。針對(duì)訂購(gòu)非系列產(chǎn)品的用戶的號(hào)碼,返回信息包括:號(hào)碼、套內(nèi)流量總量(MB)、流量余量(KB)等現(xiàn)有返回信息;在訂購(gòu)系列產(chǎn)品的情況下,返回信息包括:號(hào)碼、所在組織訂購(gòu)系列產(chǎn)品ID、系列產(chǎn)品流量總量(MB)等。
4.3.8 流量查詢子系統(tǒng)針對(duì)返回的產(chǎn)品流量進(jìn)行計(jì)算。
4.3.9 處理完成后將產(chǎn)品訂購(gòu)實(shí)例、用戶狀態(tài)等信息、寫入日志組裝報(bào)文,修改訂單狀態(tài)為3,并記入查重表。后將報(bào)文反饋給客戶端。
4.3.10 客戶端將報(bào)文組裝、處理,完成后修改訂單狀態(tài)為6,并將報(bào)文發(fā)送給網(wǎng)狀網(wǎng)。
流量查詢子系統(tǒng)接口定義,如表4 流量查詢子系統(tǒng)接口表4所示:
表4 流量查詢子系統(tǒng)接口定義表
接口描述:
(1)TrafficQueryService 流量查詢數(shù)據(jù)接口
(2)QueryRepetitionService 查詢重復(fù)訂單數(shù)據(jù)接口
(3)UserInfoService 用戶信息數(shù)據(jù)接口
(4)TPBInfoService 第三方系統(tǒng)信息接口
對(duì)報(bào)文頭的解析:
業(yè)務(wù)報(bào)文提?。?/p>