李盈 馬國鋒 王杰 張宇航 田新志
關鍵詞:微服務;智慧泊車;樹莓派;微信小程序
0 引言
隨著社會的發(fā)展,越來越多的家庭有了小轎車,開車方便了人們的出行,但是隨著城市車輛的增多,城市擁堵、馬路停車位雜亂、車位資源緊缺等現(xiàn)狀日益嚴峻, 每次找停車位停車不但麻煩而且費時間,“停車難”問題日益凸顯。傳統(tǒng)的停車管理模式已經(jīng)無法滿足目前人們對生活品質的追求及汽車行業(yè)的發(fā)展。為緩解城市交通停車問題,科學合理地使用車位資源可以在一定程度上緩解人們出行對停車的焦慮。
因此,本文提出一款基于微服務架構的智慧泊車系統(tǒng),利用網(wǎng)絡通信技術、軟件開發(fā)技術及微服務技術構建高效的預約停車系統(tǒng),提升開車出行的便利性[1]。
1 智慧泊車系統(tǒng)建設需求
近年來,不少學者提出了智慧泊車的架構設計研究。桑博提出了“互聯(lián)網(wǎng)+”模式下城市智慧停車誘導系統(tǒng)設計研究[2],設計了一套適用于城市智慧停車誘導信息系統(tǒng)。崔景超提出了基于移動物聯(lián)網(wǎng)的智慧泊車系統(tǒng)設計[3],將系統(tǒng)分為用戶界面層、功能層及支撐層。然而他們只提出了思路,沒有做具體的架構設計。
智慧泊車系統(tǒng)在功能性方面應提供基本的停車場信息查詢、停車場推薦、停車費繳納、導航、停車位預約等功能。在其管理方面也應拋棄傳統(tǒng)停車管理模式方式,走向更加智能化管理與服務的新停車時代[4]。
考慮到項目的開發(fā)效率及項目能以較長的服務周期來服務廣大用戶,開發(fā)出來的系統(tǒng)應具有可拓展,擴展的新功能不會對現(xiàn)有的系統(tǒng)產(chǎn)生沖擊,同進系統(tǒng)應具備很好的技術兼容性。因此本文采用MSA 來設計智慧泊車系統(tǒng)[5]。
MSA是一種面向微服務架構的框架系統(tǒng)。目前, 較為熱門的軟件架構是面向服務框架(SOA) 和面向微服務架構(MSA) 。面向服務的架構(SOA) 是一個巨大的服務集合,其中服務之間相互溝通。這種框架設計一個軟件系統(tǒng),使用一個將所有組件視為服務的軟件架構,SOA提供的通信通常用于數(shù)據(jù)傳遞,它可以與兩個或多個服務進行通信,并完成一些活動。面向微服務架構(MSA) 將大量的服務分解成小的服務,也被稱為單片機。其中所有的功能都被放置在一個單一的進程中,這種方法用于應用程序,一個應用程序中的不同服務可以互相交互,其每個服務都是一個獨立的個體?;贛SA技術開發(fā)的智能泊車管理系統(tǒng),不但能夠適應行業(yè)需要,同時也能夠簡化開發(fā)周期,提高系統(tǒng)的設計質量和速度,從而減少了管理系統(tǒng)維修復雜性,大大降低了擴展或升級的成本,使智能泊車系統(tǒng)更加便捷、高效、實用[6]。
2 智慧泊車系統(tǒng)設計
2.1 基于微服務的架構設計
在此分析了智能泊車需求,并根據(jù)其微服務架構的特性,給出了智能泊車體系的三層架構設計:展現(xiàn)層、服務層和數(shù)據(jù)層,詳細解說如下。
系統(tǒng)按照微服務架構梳理業(yè)務邏輯,抽象出公用的部分形成業(yè)務服務,包含郵件服務、定位服務、短信服務、車輛管理服務、數(shù)據(jù)導入導出服務、預約服務、支付服務、導航服務、用戶管理服務、停車場管理服務、文件上傳下載服務、訂單管理服務。微服務,即在功能不變的情況下,將項目分解為多個可管理的微服務,使系統(tǒng)的業(yè)務邏輯更清晰,劃分更明確。此系統(tǒng)的業(yè)務架構可分為三層:數(shù)據(jù)庫、服務層、展現(xiàn)層。在展現(xiàn)層提供了前臺功能,客戶可以通過終端設備,或者進入微信通過小軟件或后端系統(tǒng)發(fā)出請求給后臺客服,在后臺服務接收到請求之后,進行業(yè)務的處理并從數(shù)據(jù)庫獲取相關數(shù)據(jù),最終將數(shù)據(jù)通過API網(wǎng)關返回給前臺服務[7]。基于微服務的總體框架如圖1所示。
基礎設施層:數(shù)據(jù)層包括MySQL和本地緩存,主要目的是存儲數(shù)據(jù)。其中MySQL為一種開源的數(shù)據(jù)庫技術,存儲的是持久化數(shù)據(jù),其次本地緩沖存儲的緩沖數(shù)據(jù),可以加快數(shù)據(jù)的存儲與取出。
服務層:服務層根據(jù)微服務架構思想,將整個服務分為各個微服務,緩解了某個服務因訪問量過大而崩潰的壓力,技術方面主要使用Spring Boot 和Vue。服務層又可細分為持久層、業(yè)務邏輯層、微服務層及控制層等。1) 持久層:系統(tǒng)使用MyBatis持久化框架訪問數(shù)據(jù)庫,提升了數(shù)據(jù)訪問的性能和穩(wěn)定性;2) 業(yè)務邏輯層:將核心業(yè)務需求拆分為簡單具體的業(yè)務邏輯服務,如郵件服務、短信服務、車輛管理服務等。同時,這些服務可以使用Dubbo框架形成微服務層,并把這些服務注入微服務層的服務注冊中心;3) 服務層: 已注冊部署微服務,并使用Dubbo微業(yè)務框架,將系統(tǒng)各個服務注冊到ZooKeeper注冊中心,并在dubbo管理控制臺管理各個微服務;4) 制層:負責讀取展現(xiàn)層的數(shù)據(jù),控制用戶的輸入,并調(diào)用業(yè)務邏輯層的方法。
展現(xiàn)層:系統(tǒng)的前端主要分為微信小程序和后臺管理系統(tǒng),主要基于Vue和Element UI等先進技術開發(fā)。Vue是一套構建用戶界面的漸進式框架,采用自底向上的設計,簡便易上手。Element UI是一個Vue2.0的桌面端軟件庫,了解產(chǎn)品設計指導,并協(xié)助設計師打造邏輯簡潔清晰、架構科學合理且有效易用的產(chǎn)品。
2.2 基于樹莓派的嵌入式系統(tǒng)設計
嵌入式系統(tǒng)的用途主要是為了實現(xiàn)線下停車功能,用戶根據(jù)小程序導航到停車目的地之后,系統(tǒng)通過識別用戶的停車二維碼獲取到用戶的停車信息并將信息發(fā)送給后臺,后臺進行校驗并返回結果,從而實現(xiàn)用戶線下停車。當用戶在小程序完成訂單獲取到停車二維碼并通過導航到達指定停車位后,將二維碼展示出來,樹莓派進行識別二維碼,獲取到二維碼中的信息后,再將二維碼中的信息發(fā)送給后臺API接口,由后臺進行解析返回結果,達到對車位檔桿的控制,最終用戶可在微信小程序端查看停車信息(包含具體停車時刻、停車時長、收費情況等)。
1) 環(huán)境搭建
利用樹莓派3B+opencv+pyzbar進行二維碼識別,樹莓派3B搭載Debain 10(Buster) 系統(tǒng),首先需在樹莓派上安裝OpenCV計算機視覺領域視頻和圖像處理庫,并安裝Python3的pyzbar,然后通過USB接口,將樹莓派3B與攝像頭連接好,最后利用Python編寫腳本(Camera.py) 實現(xiàn)實時顯示視頻。
2) 二維碼識別
采用視頻采集模塊對二維碼進行捕捉,然后將捕捉到的圖像,傳輸樹莓派3B中,通過算法與pyzbar的結合對采集到二維碼圖像信息進行解碼與轉換。即使用pyzbar對攝像頭捕獲到的二維碼進行解析,并將解析的數(shù)據(jù)結果通過HTTP協(xié)議返回給后臺服務,后臺系統(tǒng)進行校驗并返回結果,以達到對車位檔桿的控制。線下用戶可使用二維碼進行停車位的驗證與使用。
2.3 智慧泊車系統(tǒng)功能設計
基于微服務架構的智慧泊車系統(tǒng),線上采用微信小程序作為服務入口,以移動端和PC端瀏覽器作為服務的后臺管理系統(tǒng),線下采用百度AI的二維碼解析以及車牌識別技術,通過小程序預約將數(shù)據(jù)上傳至數(shù)據(jù)庫,嵌入式系統(tǒng)通過接口獲取信息進行檢驗,以達到對車位檔桿的控制。其次為避免某個服務因訪問量過大而崩潰的情況,此系統(tǒng)采用微服務架構思想,將項目拆分為各個服務,服務之間通過HTTP協(xié)議通信,整個系統(tǒng)對用戶數(shù)據(jù)進行加密存儲和傳輸,安全可靠。具體功能設計如圖2所示。
3 智慧泊車系統(tǒng)的實現(xiàn)
3.1 基于移動終端的微信小程序系統(tǒng)
用戶是此系統(tǒng)的最終使用者,程序操作是否便捷與用戶的體驗緊密相關。按照相關設計,為用戶設計一款易操作的智慧泊車微信小程序,其優(yōu)點為:內(nèi)存小、運行快、操作便利快捷?;竟δ転椋河脩粼谛〕绦蜉斎胄柰\嚨哪康牡睾?,后臺系統(tǒng)會實時推送目的地附近的停車場及車位信息并展示在小程序頁面,其次根據(jù)實時停車位情況,用戶可以預約空閑的停車位并填寫預約信息,預約結束后,可通過導航前往目的地停車場,掃碼或對車牌校驗后進入停車,最后用戶可在小程序支付停車費用。
移動終端系統(tǒng)采用微信開發(fā)者工具進行小程序的開發(fā),運用WXML、WXSS、JavaScript實現(xiàn)對小程序基本頁面的開發(fā),其次微信小程序通過調(diào)用API來獲取后臺提供的數(shù)據(jù),數(shù)據(jù)格式為Json,后臺采用高級語言Java 并由Spring Boot 整合Spring Framework、Spring MVC、MyBatis、Redis搭建。
根據(jù)用戶、業(yè)務及功能需求對微信小程序客戶端的主要功能模塊做了詳細設計并制作頁面設計,包括主界面、訂單頁面、個人中心頁面、導航訂單頁面。
1) 主界面(首頁),圖3所示為客戶端的首頁面,包含微信小程序基本的功能模塊。用戶打開智慧泊車小程序進入首頁,在首頁用戶可以進行車輛信息的查看、停車場車位的預約、停車繳費、目的地的導航等。
2) 訂單,圖4展示的為訂單頁面,用戶提交的訂單均可在此查看。
3) 個人中心(我的)頁面,圖5為個人中心界面,包含用戶的基本信息預約歷史和賬單。
4) 導航界面,如圖6,用戶在首頁點擊導航并通過輸入目的地,獲取目的地附件停車場信息,根據(jù)導航開往停車位置。
3.2 停車場PC 管理客戶端
停車場管理員為此后臺管理客戶端的最終使用者,在此后臺管理系統(tǒng)中主要包含停車場管理、訂單管理、系統(tǒng)管理以及統(tǒng)計分析。
1) 停車場管理,包含車位管理與信息管理。在此管理員可以查看各個停車場的信息,以及車位狀態(tài)信息。車位狀態(tài)(是否空閑),即對硬件返回的數(shù)據(jù)及時處理,并實時更新車位狀態(tài)。
2) 訂單管理,包含預約訂單管理和預約訂單審批。即實現(xiàn)各車位的預訂單的查詢、刪除、駁回等功能和實現(xiàn)預約訂單的自動審批功能(可更改為手動審批)。
3) 系統(tǒng)管理,包括菜單管理、日志管理、用戶管理、公告管理、數(shù)據(jù)流監(jiān)控。即在此管理員可以查看停車用戶的信息、日志及公告。
4) 統(tǒng)計分析,系統(tǒng)使用算法對數(shù)據(jù)庫中存儲的停車信息進行分析,并制作出直觀的分析結果。管理員可根據(jù)系統(tǒng)所分析的結果,判斷當前停車場在哪些方面是否需要改進。
后臺管理系統(tǒng)的開發(fā)后臺由Spring Boot 整合Spring Framework、Spring MVC、MyBatis、Redis 搭建,前臺由ElementUI和Vue.js搭建,數(shù)據(jù)庫使用MySQL,二維碼解析使用百度AI二維碼解析技術。
從后臺用戶、服務器以及數(shù)據(jù)庫方面對后臺管理系統(tǒng)架構做了分析設計,根據(jù)用戶需求及業(yè)務邏輯對后臺管理系統(tǒng)中的主要功能做了詳細設計及頁面設計,PC端主要頁面包括后臺管理系統(tǒng)登錄頁面和后臺管理系統(tǒng)主界面,主要功能在頁面中顯示出來如圖7所示的主界面。
4 結束語
該系統(tǒng)設計的宗旨是如何使現(xiàn)有的停車場優(yōu)化使用,以此達到減輕城市負擔的目的,緩解居民因找不到停車場,而隨處停車等現(xiàn)象。設計的基于微服務架構的智慧泊車系統(tǒng),線上采用微信小程序作為服務入口,以移動端和PC端瀏覽器作為服務的后臺管理系統(tǒng),線下采用百度AI的二維碼解析以及車牌識別技術。針對此系統(tǒng),本文首先介紹了智能泊車系統(tǒng)建設背景、需求特征,并剖析了SOA(面向服務架構)和MSA (面向微服務架構)的設計差異與優(yōu)點,同時闡述了微服務架構的設計理念以及引用到智能泊車系統(tǒng)中可能產(chǎn)生的優(yōu)勢,然后又詳盡闡述了基于微服務架構的智能泊車系統(tǒng)詳細設計過程與實現(xiàn)。