馬歡
(新疆財(cái)經(jīng)大學(xué)信息管理學(xué)院 新疆維吾爾自治區(qū)烏魯木齊市 830012)
校園作為當(dāng)前重要的人群聚集地,防疫壓力更是巨大,各個(gè)學(xué)校除了要求配搭口罩及各種衛(wèi)生宣傳外,定期測(cè)溫更是必備及有效的防控手段,但目前測(cè)溫多還采用人工檢測(cè)、手工記錄方式,方式的陳舊導(dǎo)致的數(shù)據(jù)疏漏、人為漏檢、溫度不準(zhǔn)問題時(shí)有發(fā)生,且檢測(cè)效率低下,體驗(yàn)較差,因此亟需信息化手段輔助。
本文為有效做好新形勢(shì)下的學(xué)校疫情防控工作,提出一種適用于校園人群聚集的疫情防控系統(tǒng)建設(shè)方案,在學(xué)校食堂、圖書館、教學(xué)樓入口部署智能感知終端,實(shí)時(shí)采集人員信息及體溫?cái)?shù)據(jù),通過有線/無線網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)據(jù)及時(shí)匯聚至中心端,然后采用分布式計(jì)算架構(gòu)處理、分析數(shù)據(jù),對(duì)體溫異常給出提醒和預(yù)警,同時(shí)提供完備的通行人員記錄,有效避免防控疏漏,降低疫情傳播風(fēng)險(xiǎn)。
智能感知終端是一種集人臉識(shí)別、讀卡器及遠(yuǎn)紅外測(cè)溫模塊于一體的智能設(shè)備,能夠快速準(zhǔn)確的完成人員信息及體溫?cái)?shù)據(jù)的采集。
RESTful 是一種軟件架構(gòu)風(fēng)格、設(shè)計(jì)風(fēng)格,提供了一組設(shè)計(jì)原則和約束條件。它主要用于客戶端和服務(wù)器交互類的軟件,可使設(shè)計(jì)更簡潔、更有層次,更易于實(shí)現(xiàn)緩存等機(jī)制[1]。
Angular 框架,它是一款具備MVC、模塊化、自動(dòng)化雙向數(shù)據(jù)綁定、依賴注入的前端框架,其提供一種無DOM 操作的編程方式,在前端頁面中引入了傳統(tǒng)在后臺(tái)開發(fā)中使用的一些思想,增強(qiáng)代碼的結(jié)構(gòu)和可維護(hù)性[2]。
Springboot 框架,它是 Spring 框架的擴(kuò)展,該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置,是現(xiàn)行Java 后端開發(fā)的主流框架[3]。
Kafka 是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費(fèi)者規(guī)模的所有動(dòng)作流數(shù)據(jù),主要用于處理活躍的流式數(shù)據(jù),特別適合高速海量的物聯(lián)網(wǎng)應(yīng)用場景[4]。
Mongodb 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫,使用集合和文檔來描述和存儲(chǔ)數(shù)據(jù),因?yàn)橄吮斫Y(jié)構(gòu)概念,不需要事前對(duì)表進(jìn)行任何初始化操作。在架構(gòu)的層面上帶來了可擴(kuò)展的能力,并且具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下[5]。
綜上,系統(tǒng)基于傳統(tǒng)J2EE 體系架構(gòu),采用Springboot 和Angular 的前后端分離模式、RESTful 風(fēng)格的接口定義、Kafka 的分布式消息隊(duì)列及Mongodb 的分布式存儲(chǔ)技術(shù)融合構(gòu)建,在場景適用性及可擴(kuò)展性方面極具優(yōu)勢(shì)。
校園安全防疫系統(tǒng)依托校園網(wǎng)絡(luò)及軟硬件資源,采用分布式方式部署,系統(tǒng)遵循物聯(lián)網(wǎng)三層體系架構(gòu)構(gòu)建,分為數(shù)據(jù)感知層、數(shù)據(jù)傳輸層和用戶應(yīng)用層,總體架構(gòu)如圖1所示。
圖1:系統(tǒng)總體架構(gòu)圖
數(shù)據(jù)感知層以具備人臉識(shí)別、身份證號(hào)讀取及紅外測(cè)溫能力于一體的智能終端為感知對(duì)象,實(shí)時(shí)采集通過閘口學(xué)生的人臉信息和溫度數(shù)據(jù)。
數(shù)據(jù)傳輸層應(yīng)用有線、Wi-Fi、3G/4G 等多種通信技術(shù),通過信息加密、身份驗(yàn)證、數(shù)據(jù)校驗(yàn)等方式實(shí)現(xiàn)感知數(shù)據(jù)的實(shí)時(shí)可靠傳輸。
應(yīng)用層,采用J2EE 多層架構(gòu)及前后端動(dòng)靜分離技術(shù)實(shí)現(xiàn),實(shí)時(shí)匯聚智能終端采集到的人員信息、人臉照片和溫度數(shù)據(jù)等,通過嚴(yán)格的清洗、脫敏及格式化處理后,進(jìn)行多維度的統(tǒng)計(jì)、分析,為校園提供全面、動(dòng)態(tài)、及時(shí)的防疫技術(shù)支撐。同時(shí)為滿足實(shí)時(shí)到來的大量結(jié)構(gòu)與非結(jié)構(gòu)數(shù)據(jù),采用基于Kafka 的分布式消息隊(duì)列和基于Mongodb 的分布式文檔數(shù)據(jù)庫集群方式部署,可滿足應(yīng)用需求的快速讀寫要求和橫向擴(kuò)展需要。
系統(tǒng)軟件體系結(jié)構(gòu)基于J2EE 多層體系設(shè)計(jì),采用前后端分離的開發(fā)模式,系統(tǒng)業(yè)務(wù)功能主要分為以下7 個(gè)子系統(tǒng),系統(tǒng)功能結(jié)構(gòu)如圖2所示。
圖2:系統(tǒng)功能結(jié)構(gòu)圖
設(shè)備管理模塊:該模塊主要完成智能終端的管理,包括終端的注冊(cè)、信息維護(hù)及實(shí)時(shí)監(jiān)測(cè)。
數(shù)據(jù)采集上傳:該模塊采集教職工、學(xué)生信息及人臉信息,主要借助身份證號(hào)讀卡器完成,采集后做脫敏處理,為后續(xù)刷臉功能提供數(shù)據(jù)支撐。
數(shù)據(jù)處理模塊:該模塊依托消息總線,完成前端身份信息、人臉信息以及測(cè)溫?cái)?shù)據(jù)的接收、處理和存儲(chǔ),并且對(duì)非正常范圍內(nèi)的體溫給出預(yù)警。
設(shè)備參數(shù)維護(hù):為方便快速的運(yùn)維設(shè)備,系統(tǒng)統(tǒng)一將眾多終端設(shè)備的參數(shù)存儲(chǔ)在平臺(tái)端,提供設(shè)備參數(shù)的查詢、維護(hù)等功能,在必要時(shí)可推送至終端,完成前端設(shè)備的參數(shù)調(diào)整。
通行數(shù)據(jù)下發(fā):為提高通行效率,該模塊可將教職工、學(xué)生脫敏信息及人臉特征信息下發(fā)至智能終端,實(shí)現(xiàn)不依賴任何卡片的刷臉通行。
部門用戶管理:該模塊主要完成部門維護(hù)、各級(jí)管理員及用戶的維護(hù)。
信息展示模塊:該模塊對(duì)系統(tǒng)中的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)、分類,最后以圖表、列表、圖片、文字的形式進(jìn)行展示。
系統(tǒng)采用前后端分離開發(fā)模式,前端采用Angular 框架,后端采用Springboot 框架,接口采用RESTful 風(fēng)格定義,簡明清晰,有助于提高用戶界面的跨平臺(tái)的可移植性,也有助于服務(wù)器模塊的可擴(kuò)展性,主要接口設(shè)計(jì)如表1所示。
表1:系統(tǒng)接口設(shè)計(jì)列表
在springboot 中開發(fā)RESTful 十分快捷,依賴注解實(shí)現(xiàn),主要包括@PathVariable、@PostMapping、@DeleteMapping、@PutMapping 和@GetMapping 五類。
系統(tǒng)主要業(yè)務(wù)包括數(shù)據(jù)采集上傳、數(shù)據(jù)下載、參數(shù)推送等,結(jié)合數(shù)據(jù)傳輸協(xié)議,下面對(duì)數(shù)據(jù)采集上傳業(yè)務(wù)展開全流程詳述,其他業(yè)務(wù)限于篇幅,不再敘述。
數(shù)據(jù)采集上傳是系統(tǒng)的最主要業(yè)務(wù)流程,通過智能終端實(shí)時(shí)感知通行人的身份信息、人臉信息及體溫?cái)?shù)據(jù),利用有線/無線網(wǎng)絡(luò),按照數(shù)據(jù)通信協(xié)議,匯聚所有終端數(shù)據(jù)到中心系統(tǒng)。系統(tǒng)的數(shù)據(jù)采集上傳流程如圖3所示,主要分為以下幾個(gè)步驟:
圖3:數(shù)據(jù)采集上傳示意圖
(1)通行人員在設(shè)備前刷臉,準(zhǔn)備通行;
(2)智能設(shè)備首先進(jìn)行抓拍人臉,與設(shè)備中的人臉庫進(jìn)行比對(duì)分析,比中則確定人員信息,然后通過測(cè)溫模塊取得人員體溫?cái)?shù)據(jù);
(3)智能設(shè)備向中心端發(fā)出數(shù)據(jù)上傳請(qǐng)求,中心經(jīng)過身份驗(yàn)證及格式校驗(yàn)后返回應(yīng)答信息;
(4)智能設(shè)備收到應(yīng)答后,按照協(xié)議要求組織數(shù)據(jù),然后上傳;
(5)中心收到數(shù)據(jù)后,進(jìn)行處理、判定體溫是否異常,并返回信息;
(6)智能設(shè)備收到數(shù)據(jù)后,無異常則提示人員通行,有異常則要求人員再次測(cè)試;
(7)中心端格式化數(shù)據(jù)后進(jìn)行持久化存儲(chǔ),并按照規(guī)則進(jìn)行統(tǒng)計(jì)分析,供展示使用。
系統(tǒng)采用大平臺(tái)思路構(gòu)建,隨著業(yè)務(wù)量和終端的不斷增加,需要面對(duì)大量實(shí)時(shí)產(chǎn)生的數(shù)據(jù),而且在校園中數(shù)據(jù)峰值較為集中,給系統(tǒng)的架構(gòu)設(shè)計(jì)帶來壓力。為解決此問題,本文采用以分布式消息隊(duì)列為核心的分布式計(jì)算框架予以解決。
根據(jù)系統(tǒng)的數(shù)據(jù)特征,本文采用分布式消息隊(duì)列作為高速數(shù)據(jù)總線,解決應(yīng)用耦合、異步消息、流量削峰等問題,極大提高系統(tǒng)性能和高可用性。利用Kafka 這種分布式發(fā)布/訂閱消息系統(tǒng)搭建數(shù)據(jù)總線,具體方案如下:
消息生產(chǎn)者方面:按照應(yīng)用規(guī)模、終端數(shù)量以及數(shù)據(jù)量等應(yīng)用場景,部署多個(gè)獨(dú)立的數(shù)據(jù)采集應(yīng)用,負(fù)責(zé)接收前端不斷到來的數(shù)據(jù),同時(shí)集成消息生產(chǎn)者功能,接到終端數(shù)據(jù)后,使用推送模式將消息發(fā)布到消息隊(duì)列代理。
消息消費(fèi)者方面:依據(jù)數(shù)據(jù)規(guī)模,部署多個(gè)獨(dú)立的數(shù)據(jù)消費(fèi)應(yīng)用,使用拉取模式從消息隊(duì)列代理訂閱并消費(fèi)信息,同時(shí)對(duì)消息進(jìn)行解析、處理、統(tǒng)計(jì)、分析。
由此,構(gòu)成一個(gè)高吞吐、可持久化、可水平擴(kuò)展、支持流數(shù)據(jù)處理等多種特性的分布式計(jì)算系統(tǒng)。在本文中,針對(duì)不斷到來的大量前端采集數(shù)據(jù),使用消息隊(duì)列作為中間緩存,達(dá)到高效的處理實(shí)時(shí)消息,降低編程復(fù)雜度的目的。同時(shí),生產(chǎn)者發(fā)送消息到代理時(shí),會(huì)根據(jù)區(qū)塊機(jī)制分區(qū)存儲(chǔ),通過規(guī)模合理設(shè)置后,所有消息可以均勻分布到不同的分區(qū)中,實(shí)現(xiàn)動(dòng)態(tài)的負(fù)載均衡,極大的提高了吞吐率。
應(yīng)用場景中,系統(tǒng)需要實(shí)時(shí)從大量智能終端接收數(shù)據(jù),充分考慮數(shù)據(jù)采集的完整性以及通行效率,同時(shí)兼顧設(shè)備的活動(dòng)監(jiān)測(cè),本文設(shè)計(jì)了一套基于HTTP 的數(shù)據(jù)通訊協(xié)議,主要由消息頭、消息內(nèi)容和校驗(yàn)碼三部分組成,協(xié)議目前分為心跳、數(shù)據(jù)上傳、數(shù)據(jù)下載三類,還可根據(jù)應(yīng)用需求不斷擴(kuò)展。
協(xié)議交互流程如圖4所示,以數(shù)據(jù)上傳為例。
圖4:協(xié)議交互流程示意圖
數(shù)據(jù)內(nèi)容格式如表2所示。
表2:協(xié)議數(shù)據(jù)格式
通訊協(xié)議的交互流程采用請(qǐng)求、應(yīng)答的會(huì)話模式,首先由客戶端發(fā)起會(huì)話請(qǐng)求,服務(wù)端經(jīng)過終端身份驗(yàn)證、格式校驗(yàn)后,回復(fù)客戶端,然后,再由客戶端發(fā)起傳輸數(shù)據(jù)的業(yè)務(wù)請(qǐng)求,在整個(gè)交互中均采用校驗(yàn)機(jī)制確保數(shù)據(jù)完整性,對(duì)于安全級(jí)別較高的場景,還可對(duì)內(nèi)容進(jìn)行加密處理。
上傳數(shù)據(jù)交互步驟如下:
(1)客戶端發(fā)起數(shù)據(jù)交互請(qǐng)求,服務(wù)端返回的消息應(yīng)答;
(2)客戶端收到成功應(yīng)答后,發(fā)送數(shù)據(jù)內(nèi)容;
(3)服務(wù)端接收到內(nèi)容后,返回消息應(yīng)答;
(4)重復(fù)2,3 步驟直到傳輸完畢;
(5)轉(zhuǎn)步驟1,重復(fù)以上流程,直到所有數(shù)據(jù)傳輸完畢后關(guān)閉連接。
通過此數(shù)據(jù)傳輸協(xié)議,系統(tǒng)可完成智能終端與中心端的可靠數(shù)據(jù)傳輸。
本文提出的校園安全防疫系統(tǒng),是物聯(lián)網(wǎng)的典型應(yīng)用,系統(tǒng)采用J2EE 多層體系架構(gòu),以智能終端為感知設(shè)備、無線/有線通信技術(shù)為橋梁、實(shí)時(shí)采集人員的身份信息及體溫?cái)?shù)據(jù),系統(tǒng)采用分布式計(jì)算框架,從分布式消息隊(duì)列和分布式文檔存儲(chǔ)等多個(gè)層面應(yīng)對(duì)大量數(shù)據(jù)的快速讀取和處理需求,系統(tǒng)有機(jī)融合了多項(xiàng)技術(shù),具備高吞吐、高可用及易擴(kuò)展特性,能夠滿足校園等人員密集場所的快速信息采集和自動(dòng)測(cè)溫需求,可為疫情防控提供了有效的技術(shù)支撐。