夏勝楠
(金陵科技學(xué)院,江蘇南京, 210023)
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,該技術(shù)運用于倉儲中的技術(shù)也愈發(fā)成熟,使用RFID將用戶與管理員權(quán)限區(qū)分開,從而使倉庫的入庫、管理、到出庫等環(huán)節(jié)變得尤為簡單且更加安全。
在此其基礎(chǔ)上加入后端微服務(wù)框架,使其各個功能分開,減少冗余度以及軟件的性能壓力,以至于保證倉儲管理系統(tǒng)的穩(wěn)定性和有效性。本系統(tǒng)將計算機(jī)現(xiàn)代技術(shù)、傳感器以及通信原理結(jié)合,使所有問題進(jìn)行統(tǒng)一,解決了傳統(tǒng)倉儲管理人員不足等問題,通過本文研究,希望能夠加強(qiáng)物聯(lián)網(wǎng)與微服務(wù)框架的使用,為百姓以及企業(yè)帶來真正的便捷。
本文將系統(tǒng)功能劃分為詳細(xì)用戶、管理員,再者就是其他的交互細(xì)節(jié)。目的是綜合性實現(xiàn)對倉儲的管理,在整個研究過程中將依照圖1的系統(tǒng)功能圖進(jìn)行解決問題方案的依據(jù)。
圖1 系統(tǒng)功能模塊劃分圖
系統(tǒng)在開發(fā)和設(shè)計之前對主要的方法和設(shè)計原則進(jìn)行分析,只有確定了設(shè)計的原則以后才可以進(jìn)行后續(xù)的設(shè)計工作。包括簡單實用的設(shè)計原則和可靠穩(wěn)定的原則本系統(tǒng)也是根據(jù)以上設(shè)計的原則進(jìn)行確定設(shè)計總體框架的。
系統(tǒng)實現(xiàn)過程中需要對系統(tǒng)內(nèi)部進(jìn)行松耦合的設(shè)計,合理安排接口使用及性能調(diào)度,同時還需要對系統(tǒng)硬件部分的穩(wěn)定性提出更高要求,這樣就能實現(xiàn)對系統(tǒng)整體使用及軟硬件維護(hù)進(jìn)行動態(tài)把控。
設(shè)備箱收集到的現(xiàn)場環(huán)境進(jìn)行數(shù)據(jù)傳輸上傳至云平臺,顯然云平臺也可反方向下發(fā)指令給設(shè)備箱。在客戶端可以發(fā)送請求,云平臺會接收指令返回相應(yīng)數(shù)據(jù)。圖2為系統(tǒng)設(shè)計框架圖。其中設(shè)備箱由LCD顯示器、攝像頭、傳感器、感應(yīng)器組成,其中傳感器主要以RFID、ESP32-CAM、ESP8266組成。云平臺包括MQTT協(xié)議、OKHTTP協(xié)議以及接口加密技術(shù)。
圖2 系統(tǒng)框架圖
如圖3所示,用戶通過輸入對應(yīng)的Web端網(wǎng)址進(jìn)入操作界面,注冊登錄后即可根據(jù)所需時間的不同對設(shè)備進(jìn)行選擇或預(yù)約設(shè)備,用戶在后臺可以查看到自己所選擇的設(shè)備。本系統(tǒng)特設(shè)用戶使用反饋模塊,用戶根據(jù)使用感受及時提出建議反饋。
圖3 設(shè)計流程圖
管理員在管理端可以查看設(shè)備信息、實時監(jiān)控、客戶反饋、設(shè)備流轉(zhuǎn)情況、設(shè)備定位、設(shè)備預(yù)警情況。因用戶反饋模塊的設(shè)立,從而推動開發(fā)人員進(jìn)行系統(tǒng)的升級與更新。系統(tǒng)采用B/S架構(gòu),故不必安裝,操作界面簡潔靈活,無須過多學(xué)習(xí),即可上手使用。
在系統(tǒng)設(shè)計中,單體應(yīng)用在以往發(fā)展中常被廣泛應(yīng)用,但是此技術(shù)的開發(fā)結(jié)構(gòu)是極其復(fù)雜且相當(dāng)具有冗余性的。同時若想在單體應(yīng)用中更新已開發(fā)完成的軟件或者添加新的功能,必須結(jié)束所有軟件從而部署整個應(yīng)用,這種應(yīng)用由于沒有管理分割,沒有重疊交叉的管理方式從而會導(dǎo)致整個系統(tǒng)接二連三地重復(fù)建設(shè),而微服務(wù)的出現(xiàn)直接解決了這一問題。
2014 Martin Fowler 正式提出微服務(wù)架構(gòu)的概念[1],而微服務(wù)架構(gòu)本質(zhì)上是傳統(tǒng)單體架構(gòu)的演進(jìn)[2],言外之意就是把單體應(yīng)用結(jié)構(gòu)總體劃分成若干微小部分,并且每個微小的部分都會單獨對應(yīng)的數(shù)據(jù)庫,然后利用一系列的API網(wǎng)關(guān)作為微小部分和客戶端之間的橋梁,而這每段微小的部分就稱為微服務(wù),因此用此等方法可以有效降低服務(wù)端的耦合性,提高系統(tǒng)的整體性能[3]。
本系統(tǒng)微服務(wù)應(yīng)用架構(gòu)實例為圖4所示PC端、移動端等多種應(yīng)用終端進(jìn)行請求發(fā)起。正如上所說網(wǎng)關(guān)是微服務(wù)部分和客戶端聯(lián)系的一個橋梁通道。即所有客戶端發(fā)送請求后,路經(jīng)網(wǎng)關(guān),從而訪問倉儲管理系統(tǒng)的微服務(wù)后臺。如果由若干個請求同時需要系統(tǒng)進(jìn)行并發(fā)處理,則這些請求會部署成集群形式。最后API接收到這些發(fā)出的請求后,意味著它們到達(dá)微服務(wù)應(yīng)用。
圖4 微服務(wù)架構(gòu)設(shè)計圖
由此將這些從單體中拆分出來后,這些微應(yīng)用根據(jù)自身的負(fù)載均衡進(jìn)行部署。在微服務(wù)架構(gòu)內(nèi),若其中的任意子微應(yīng)用需要進(jìn)行體系形成時,后端服務(wù)器會依照前后順序進(jìn)行排列依次接受請求。而這形成體系會同樣對待后端中的每一臺服務(wù)器??偨Y(jié)以上,服務(wù)器實際的連接數(shù)量無論如何都不會受當(dāng)前系統(tǒng)負(fù)載數(shù)量的影響,所以對本系統(tǒng)體系也不會造成任何影響。也就產(chǎn)生了負(fù)載均衡的效果。
心跳機(jī)制是通信協(xié)議中的一種,心跳機(jī)制的用途主要有兩種,一種是用于監(jiān)測通信鏈路的實時狀況,一種是用于保持發(fā)端與收端的長連接[4]。前者亦可稱短連接,后者為長連接。
第一種實時狀況用一種操作頻繁的通訊作解釋,并且此通訊次數(shù)不能過多。在計算機(jī)網(wǎng)絡(luò)下,每個TCP在傳輸層都會經(jīng)歷三次握手四次揮手。因此它適用于每個用戶在不頻繁操作且并發(fā)數(shù)比較大的情況下。若用戶需重復(fù)操作,性能時延會受短連接的重復(fù)操作而造成層疊,由此可得短連接是受頻繁操作限制的。
而長鏈接是客戶端和服務(wù)端首先建立連接同時互不斷開,之后進(jìn)行報文的發(fā)與收,而此等操作一直連續(xù),直至兩者中的任意一方關(guān)閉連接為止。在本系統(tǒng)中,采用的就是第二種長鏈接方式的心跳機(jī)制。本系統(tǒng)采用應(yīng)用層心跳,即使用網(wǎng)絡(luò)切換和超時的心跳包執(zhí)行重連操作。這里的心跳一般指客戶端或者服務(wù)端隔一定的時間向?qū)γ娑丝诎l(fā)送自定義的指令,以這種方式判斷兩者是否存活,而這間隔發(fā)送類似于心跳跳動間隔,因此也可以稱之為心跳指令。
通過這種機(jī)制可以在服務(wù)端一直沒有等到某個客戶端的心跳回應(yīng)時主動關(guān)閉窗口使其下限,重新獲取新的客戶端。圖5為本系統(tǒng)心跳機(jī)制圖。
圖5 心跳機(jī)制設(shè)計圖
使用者在進(jìn)入倉儲時需要進(jìn)行攝像頭身份認(rèn)證,攝像頭將抓取到的人臉圖片上傳到巴法云平臺,則服務(wù)器通過HTTP協(xié)議與巴法云平臺進(jìn)行互聯(lián)得到圖片,在經(jīng)過下文提到的基于深度學(xué)習(xí)的圖片篩選算法進(jìn)行比對(由圖片接收到多元擬合到訓(xùn)練模型到下發(fā)圖片最后到服務(wù)器),從而開門或報警。圖6為開門過程設(shè)計流程圖。
對圖6的算法處理模塊進(jìn)行詳細(xì)分析。對圖像的分類與篩選是機(jī)器視覺中比較常規(guī)的兩種問題。依照發(fā)展情況在應(yīng)用上計算機(jī)領(lǐng)域中的機(jī)器學(xué)習(xí)領(lǐng)域核心就是上述的兩種情況。而傳統(tǒng)機(jī)器學(xué)習(xí)技術(shù)分析數(shù)據(jù)是利用數(shù)據(jù)最早之前未處理時的形態(tài)進(jìn)行的,其實這也比較依賴于開發(fā)者具備豐富的經(jīng)驗,才能設(shè)計出能把未處理的數(shù)據(jù)轉(zhuǎn)換成有意義的特征向量當(dāng)作架構(gòu)的輸入。這種方法很大程度上還是人工篩選特征值,因此這種學(xué)習(xí)方法耗時耗力,是一種啟發(fā)式的方法,同時它存在著極大的不確定性。引入深度學(xué)習(xí)后,它的方法為特征學(xué)習(xí)法,而這種方法時能把未處理數(shù)據(jù)輸入到模型,然后得以獲取更為抽象的特征值。與前者的傳統(tǒng)機(jī)器學(xué)習(xí)最大不同在于,基于深度學(xué)習(xí)的圖像篩選想要獲取較明顯的特征是可以不經(jīng)過專業(yè)工程師之手的,只需要采用通用的學(xué)習(xí)程序從數(shù)據(jù)中學(xué)習(xí)即可。因此本文通過Python的PIL圖像庫,進(jìn)行圖片的識別與保存,下一步使用開源機(jī)器學(xué)習(xí)庫,最后通過基于深度學(xué)習(xí)的圖片篩選算法識別人體特征從而達(dá)到區(qū)分與篩選人臉是否符合圖片庫的目的,這樣可以保證倉儲的安全性。圖7為圖片篩選算法設(shè)計流程圖。
圖6 系統(tǒng)開門設(shè)計圖
圖7 圖片篩選算法設(shè)計流程圖
在本文研究與實現(xiàn)中,主要通過介紹傳統(tǒng)倉儲管理所存在的問題引出需要建立現(xiàn)代化無人高效的倉儲管理系統(tǒng)。研究了系統(tǒng)的基本組成與設(shè)計流程。本系統(tǒng)使用RFID射頻技術(shù)保證用戶與管理員的權(quán)限,并使之交叉分開,選用以微服務(wù)為后端框架來保證web端的具有高擴(kuò)展性、高容錯率以及低冗余性,保證系統(tǒng)的維護(hù)性。同時引入了心跳機(jī)制以及基于深度學(xué)習(xí)的圖片篩選算法。
綜上設(shè)計并實現(xiàn)一套基于物聯(lián)網(wǎng)的倉儲管理系統(tǒng),結(jié)合眾多技術(shù),具有便于管理、高效等優(yōu)點。