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