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