程大衛
摘要:文章基于Spring Cloud微服務的軟件架構模式進行研究,場景適用于安防場所中人體安檢的應用,實現安防場所信息集中管理和人體安檢流程實時監控等目的。首先,采用微服務的軟件架構,以Spring Cloud為基礎組件進行開發,微服務訪問權限管理采用OAuth 2.0協議,通過Eureka模塊對系統中加入的服務進行注冊管理,注冊的服務均采用WebAPI接口對外提供接口;其次,采用Redis作為數據緩存,實現系統的高并發;此外,系統引入人臉識別的邊緣計算盒子提供生物信息驗證,為人體安檢方案在智慧化安防方面提供相關理論支撐、技術驗證。
關鍵詞:人體安檢;微服務;分布式;Spring Cloud
中圖分類號:TP311.52? ?文獻標識碼:A? ?文章編號:1674-0688(2023)04-0046-04
0 引言
隨著人體安檢儀在安防場所的應用場景逐漸復雜化,市場對人體安檢儀進行系統集成的需求也越來越高。為保證安防場所訪客身份信息的合法性,用戶對指紋認證、掌靜脈認證、虹膜認證及人臉認證等生物信息識別驗證的需求也與日俱增。從市場調研及安檢相關項目招標投標的技術需求可知,單個安防場所中需要多臺人體安檢設備及多個安防場所協同安檢的情況經常存在,因此對安檢信息進行集中管理顯得尤為必要,而安檢信息的集中管理對安防場所人體安檢系統的應用靈活性和數據業務的處理與計算能力提出更高的要求,因此需要開發一套能滿足客戶定制化需求、基于生物信息驗證的高效、穩定的人體安檢信息管理系統。
國內外生物識別技術已經相當成熟,特別是人臉識別技術在安防場所進出記錄管理上的集成應用;國內一些安防廠商雖然在視頻分析技術中加入出入口人臉識別技術,但是缺少對安防場所系統業務的集成和安檢設備的集成。鑒于客戶對安檢數據集成管理及提升工作效率有很大需求,本研究采用微服務架構模式作為解決方案進行人體安檢信息管理系統的設計,該模式的靈活架構可應對復雜多變的用戶需求,將復雜系統根據應用需求拆分成多個小服務,采用分布式的方式,實現各個分系統的協同運行,為系統提供彈性框架以應對用戶方的業務需求、性能需求和安全需求。
1 系統支撐理論與技術
1.1 相關理論
1.1.1 負載均衡
負載均衡的意義是有效地將傳入的網絡流量分布到一組后端服務器上,也稱為服務器池。為節約成本并在有效的規模下滿足這些高容量的需求,最佳的實現途徑通常是添加更多的服務器[1]。目前,負載均衡需要通過應用軟件實現,一般采用Nginx作為網站的負載均衡器,用以實現http網站的數據分流任務。本系統采用Nginx作為前端網頁的負載均衡器,采用Ribbon作為分布式服務調用的負載均衡。
1.1.2 分布式緩存
高并發的應用環境中,大量的數據庫讀寫工作會給數據庫的存取造成一定的壓力。由于單一機器的承受能力和內存有一定的限度,因此提升系統性能一般采用分布式緩存實現[1]。考慮本系統的應用場景,設計擬采用Redis緩存系統解決Session(會話控制)共享在分布式環境中的應用。
1.1.3 分布式服務治理
目前,分布式服務框架的使用是分布式服務治理的一個重要選擇。分布式服務框架在有效管理服務的同時,也監控服務質量[1]。本系統模式采用Spring Cloud;服務發現框架采用Eureka;系統熔斷和降級采用Hystrix延遲和容錯庫,以提高整個系統的彈性。分布式框架的優勢表現為能大幅提高并發訪問量、大幅度節省設備成本(僅從架構方面進行優化,因此不需要配置大量的服務器)、將服務層與表現層的耦合性降到最低[1],從而實現解耦目的。
本研究采用的這些理論所形成的技術在最大限度地節約硬件的基礎上,提高了系統的穩定性。
1.2 關鍵技術
1.2.1 Spring Cloud微服務框架
微服務架構是一種由多個小服務組成的應用開發模式,每個服務可以獨立運行,同時采用輕量級交互[2]。微服務架構的目的是實現業務系統徹底組件化和服務化,從而達到一個組件就是一個產品的目標,并且每個組件均可獨立對外提供服務,組件對外發布的方式采用HTTP Rest API(應用程序編程接口)方式。
Spring Cloud是基于Spring Boot的微服務框架。Spring Cloud為開發者提供微服務開發所需要的配置管理、服務發現、智能路由、微代理、全局鎖、分布式會話和集群狀態管理等組件[3]。Spring Cloud Gateway是Spring Cloud的核心組件,作為Spring Cloud生態系統中的網關,它提供統一的路由方式,并且基于Filter鏈的方式提供網關的基本功能,例如安全、監控/埋點、限流等。微服務的核心由Spring Cloud Netflix與各種Netflix OSS組件集成。 Spring Cloud架構模式下的服務注冊中心采用Netflix Eureka云端服務發現組件,用于發現服務,達到云端中間層服務發現和故障轉移的目的。Spring Cloud架構模式下的熔斷器采用Netflix Hystrix,以提高延遲能力和對故障的容錯能力。
1.2.2 Nginx
Nginx是一個HTTP服務器和反向代理服務器,它是一個開源框架,能夠很好地解決高連接并發問題,能支持高達5萬個并發連接數的響應,并且內存占用和CPU資源消耗也很低。當服務器和帶寬受到限制時,能極大地提高Web系統的運行效率,增加服務器的吞吐量,加強網絡數據的處理能力,進而降低因數據擁堵而造成的連接延遲或等待現象[4]。
1.2.3 Redis
Redis 作為一個開源的內存數據庫項目,以其持久性和高性能的優勢,實現一種分布式內存鍵值存儲模式[5]。本系統使用Redis緩存系統,實現存儲訪客流程狀態、實時記錄狀態轉換、異常流程報警、緩存被檢人安檢流程信息等功能,達到快速獲取被檢人信息、優化安檢流程的目的。
2 系統設計
2.1 應用場景
本系統主要應用于安防場所人體安檢流程、安檢信息的管理。系統采用微服務和分布式架構,融入人臉識別技術,對安防場所出入人員的人臉信息及基本信息進行集中管理。預約注冊登記、進入安防場所的入口驗證、安檢設備檢查前,都需要進行人臉識別、身份信息認證,系統的安檢流程如下:出入安防場所的被檢人員需要提前預約訪問時間并提供對應的人臉等個人數據信息;系統記錄被檢人員進入安防區域的起始時間,設置最長停留時間;如果發生身份認證失敗、被檢人在安檢場所內出現安檢異常或超出限定停留時間等情況,安防場所管理平臺將實時顯示該報警信息直至人工進行干預解決。系統應具備如下功能:協同完成安防區域內到訪人員、工作人員的檢查和管理工作;實現安防場所內所有人員的全程跟蹤,并且綁定被檢人員的人體安檢結果信息(包括是否攜帶、夾藏違禁品的安檢圖像和手檢結論等);將所有單個通道、單個安防場所的安檢結果數據匯總、存儲到中心服務器,并提供歷史數據查詢、異常安檢結果數據統計等服務,為整個安防場所或整個業務系統提供更多的決策支持。具體安檢場景和流程如圖1和圖2所示。
2.2 軟件系統架構
2.2.1 安防場所管理系統
對權限、用戶、安防場所出入口、攝像機、歷史記錄、流程報警、圖像進行管理、提供統計分析功能,并提供基于RESTful的WebAPI、WebSocket接口供相關網頁端調用。
2.2.2 底層人臉識別接口
對接邊緣計算盒子人臉識別模塊,對相關接口進行封裝,對外提供人臉比對相關接口。
2.2.3 攝像機控制服務
提供攝像機控制接口,如啟動視頻流、開啟視頻流抓拍、停止視頻流抓拍。
2.2.4 數據傳輸服務
實現訪客預約數據的流轉,收集訪客探訪流程產生的業務數據。
2.2.5 人臉驗證服務
通過調用邊緣計算盒子的人臉比對服務和攝像機控制服務,向入口驗證客戶端和安檢設備端軟件提供人臉驗證的接口。
2.2.6 安防場所綜合管理平臺
收集各個安防場所的訪客來訪數據,匯總顯示總體來訪情況和統計分析。管理系統架構如圖3所示。
3 系統實現
3.1 安防場所管理系統功能
3.1.1 權限控制
系統使用OAuth 2.0協議進行微服務訪問權限管理,同時采用客戶端憑證和令牌認證2種認證方式,保證權限認證的安全性。用戶管理功能可以為不同用戶角色分配不同的用戶權限,通過角色的區別在后端控制請求訪問權限和在前端控制功能頁面的跳轉權限。
3.1.2 用戶管理
對系統用戶的登錄、登出、查詢提供支持,并提供用戶新增、修改及修改密碼的功能。
3.1.3 安防場所管理
在數據庫設計中增設安防場所ID字段,在安防場所的服務器中以配置文件的形式配置當前安防場所ID,實現安防場所數據的互聯共享。
3.1.4 出入口管理
出入口管理為安防場所的出口和入口節點的管理,包括新增出入口信息,修改出入口信息,以及刪除出入口信息等管理功能。
3.1.5 攝像機管理
作為訪客通道內的節點,攝像機需要納入系統的管理,攝像機管理包括對攝像機進行新增、修改及刪除,用戶可以靈活綁定攝像機與出入口和設備之間的連接關系。
3.1.6 安檢設備管理
作為訪客通道內的節點,安檢設備需要納入系統的管理,主要包括對設備信息的新增、修改及刪除。該功能可以實現按鍵區域內設備數量及連接關系的靈活配置。
3.1.7 進出記錄
以時間為檢索條件,提供查詢訪客、員工出入安防場所的歷史記錄信息,其中包含進入安防場所的認證信息、安檢圖像信息、離開安防場所的認證信息,并提供訪客預約信息查詢的功能。
3.1.8 統計分析
該功能主要是對報警信息、預約信息、員工出勤率、逗留時間、訪問次數進行統計分析,可以對報警信息較多的訪客進行統計、預警。
3.1.9 實時信息統計
可視化實時展示當天訪客預約總數、進入安防場所內的訪客數量、離開安防場所的訪客數量,使安防場所管理人員隨時掌握實時訪客客流情況。
3.1.10 報警管理
當進入安防場所的人員流程出現異常時,系統發出報警信息至實時信息界面,并記錄入系統,然后將報警信息以郵件等形式發送通知安防場所管理員。
3.1.11 數據上傳服務
用于將多個安防場所數據互聯共享,主要將單個安防場所的預約記錄、訪客進出歷史記錄、安防場所工作人員進出歷史記錄、訪客安檢信息、員工安檢信息等數據上傳至中心服務器。
3.2 人臉識別接口服務
用于將預約照片存入人臉庫,能根據不同的攝像機類型切換人臉庫,定時從人臉庫解綁當天訪客的人臉圖片;還能將視頻流中實時抓拍到的照片與系統人臉庫圖片進行比對驗證,將比對結果推送至人臉驗證服務端。
3.3 攝像機控制服務啟動抓拍
該服務提供攝像機的抓拍、停拍功能(包括出入口和人體安檢儀端的攝像機)。
3.4 數據傳輸服務
用于系統內部的數據傳輸,包括安防場所預約記錄數據的上傳和人體安檢數據上傳中心服務器。
3.5 人臉驗證服務
該服務通過對邊緣計算盒子的接口封裝,為出入口客戶端和人體安檢設備客戶端提供人臉驗證的應用功能接口,包括對攝像機的抓拍、停拍的控制;提供證件類型查詢、人臉比對等功能,并將查詢和比對的結果提交至服務器,同時提供配置人臉比對超時提醒功能,當出現人臉比對超時等異常情況時,可以通過系統提醒工作人員進行人工核驗身份。
4 結語
本系統設計的創新之處在于:運用分布式架構和負載均衡技術,在控制成本的同時提升系統的高可用和高并發,有效避免因流量激增引起的數據壓力;使用Spring Cloud 微服務架構設計模式,通過小而可靠的功能模塊構建整體方案,每個服務都可以獨立于其他服務進行部署;在OAuth 2.0授權模式下,采用客戶端憑證和令牌認證方式,保證權限認證的安全性;使用Redis緩存系統,快速獲取實時訪客流程狀態轉換、異常流程報警等數據信息。本系統可以實現安防場所的互聯互通,共享多個安防場所管理平臺的數據,促進智慧化安防場所的發展。
5 參考文獻
[1]周雪萍,烏嶸,王俊麗,等.基于分布式數據平臺的數據采集系統—以新疆油田公司采氣一廠為例[J].信息系統工程,2020(9):26-27.
[2]程芳.基于三層框架的經濟責任審計管理系統研究[J].自動化技術與應用,2020,39(11):147-150.
[3]牟林鋼.一種微服務架構下的負載均衡策略優化方法[J].電子設計工程,2020,28(7):87-90,94.
[4]田純青.利用Nginx實現基于URI的Web負載分配[J].現代計算機(專業版),2009(7):187-191.
[5]詹利群,程海林,任曉煒.Redis緩存技術在自動氣象站資料調用中的優化應用[J].計算機系統應用,2019,28(5):77-83.