李文靜++徐銘貝++李樂峰++于永強
摘 要:隨著我國計算機技術(shù)的迅猛發(fā)展,遠程實時采集查詢數(shù)據(jù)已經(jīng)在工業(yè)和農(nóng)業(yè)生產(chǎn)中迅速得到應(yīng)用。數(shù)據(jù)采集與查詢是信息技術(shù)的重要分支,它研究實時信息數(shù)據(jù)的采集、存儲、查詢等功能,對數(shù)據(jù)的獲取并顯示可以讓用戶更好地掌握生產(chǎn)狀況,傳統(tǒng)的人工現(xiàn)場監(jiān)控浪費人力、物力,效率低下,所以,有必要開發(fā)一款低成本、高可靠性、高并發(fā)性、適用范圍廣的實時數(shù)據(jù)查詢系統(tǒng),對農(nóng)業(yè)生產(chǎn)進行有效的監(jiān)控,提高生產(chǎn)效率,使農(nóng)業(yè)生產(chǎn)實現(xiàn)現(xiàn)代化。該文采用了Spring、Spring MVC、Mybatis、shiro安全框架。為了提高系統(tǒng)的容量,該文采用nginx實現(xiàn)負載均衡、動靜分離,No-sql中的redis實現(xiàn)緩存,隊列Rabbitmq實現(xiàn)郵箱發(fā)送處理,數(shù)據(jù)庫代理ameoba實現(xiàn)讀寫分離,數(shù)據(jù)庫mysql主從復(fù)制等配置來提升系統(tǒng)的并發(fā)量。
關(guān)鍵詞:大數(shù)據(jù)技術(shù) Web后臺框架 查詢系統(tǒng)
中圖分類號:TP393 文獻標識碼:A 文章編號:1672-3791(2017)06(c)-0037-03
隨著電子信息技術(shù)不斷進步,人們利用Web技術(shù)開發(fā)出一系列相關(guān)產(chǎn)品,促使人們對產(chǎn)品的需求逐漸增加,這樣極大地推動了互聯(lián)網(wǎng)技術(shù)的發(fā)展。如今的物聯(lián)網(wǎng)、云計算、智能家居、實時監(jiān)控等新技術(shù)已逐步進入工業(yè)、農(nóng)業(yè)的生產(chǎn)生活,使得Web的應(yīng)用研發(fā)成為當代未來發(fā)展的熱點和重點。未來互聯(lián)網(wǎng)的主要發(fā)展趨勢就是通過互聯(lián)網(wǎng)。因而該文提出的是基于Web和App的數(shù)據(jù)采集及其操作系統(tǒng)的設(shè)計,采用了SSM+shiro框架作為服務(wù)器端,配合nginx+rabbitmq等開源軟件形成一個較完整的數(shù)據(jù)采集操作系統(tǒng),利用這些技術(shù)使得本系統(tǒng)具有穩(wěn)定、高效、占用內(nèi)存少、并發(fā)性強、性能高等特點,再結(jié)合通過瀏覽器對現(xiàn)場數(shù)據(jù)進行實時查看和對歷史記錄進行查詢,這將會給用戶提供更加高效和豐富的應(yīng)用。
1 系統(tǒng)整體說明
為了構(gòu)建對設(shè)備采集數(shù)據(jù)進行查看,對設(shè)備進行開關(guān)操作以及視頻傳輸?shù)墓δ?,在硬件上使用了樹莓派作為采集?shù)據(jù)終端,而單片機作為操控結(jié)果終端,樹莓派讀取串口數(shù)據(jù),發(fā)送請求到服務(wù)器進行數(shù)據(jù)采集及操作。在軟件上使用Web和App作為操作平臺,服務(wù)器采用tomcat,使用開發(fā)工具為eclipse、myeclipse、maven插件來完成的。
2 系統(tǒng)客戶端設(shè)計
用戶具有登錄、注銷、通過瀏覽器實時查看現(xiàn)場數(shù)據(jù)信息、查看歷史數(shù)據(jù)、實現(xiàn)將視頻由android端傳輸?shù)絎eb頁面。如圖2所示。
具體是實現(xiàn)方法如下。
(1)使用shiro框架的安全登錄實現(xiàn)登錄與注銷。
使用LogoutFilter進行登出操作subject.logout()操作。
AuthorizingRealm中的方法doGetAuthenticationInfo進行登陸認證,SimpleCredentialsMatcher進行加密操作使用的是shiro的shiro.crypto.hash.Md5Hash加密操作進行密碼加密。
(2)采用了EL表達式來進行數(shù)據(jù)顯示等操作。
(3)使用echarts進行圖表顯示操作。
百度的圖表js,可以很好地展示各個頁面的操作使用,傳遞json數(shù)據(jù)進行解析獲得圖表界面。
(4)shiro框架實現(xiàn)粗粒度的權(quán)限管理操作。
AuthorizingRealm中方法doGetAuthorizationInfo對不同的用戶添加權(quán)限,以及在頁面中添加權(quán)限列表,確定不同權(quán)限的用戶顯示不同的頁面。
(5)使用jquery的ajax獲取視頻流來顯示視頻。
3 系統(tǒng)服務(wù)器端設(shè)計
服務(wù)器端是整個系統(tǒng)的核心部分,通過服務(wù)器響應(yīng)客戶端的服務(wù)請求,從而發(fā)布系統(tǒng)消息,Web服務(wù)器主要根據(jù)不同用戶發(fā)出的請求,做出相應(yīng)的數(shù)據(jù)處理,并返回給用戶。
該文是Web服務(wù)器端,通過各種組件使得整個系統(tǒng)具有穩(wěn)定、占用內(nèi)存小、高并發(fā)、高可用性的特點。
Web服務(wù)器端的實現(xiàn)如下。
該服務(wù)器端主要使用MVC框架、shiro安全框架、rabbitmq隊列、ameoba數(shù)據(jù)庫代理、Nginx技術(shù),通過使用ameoba+Nginx,使得Web服務(wù)器具有穩(wěn)定、并發(fā)能力強、性能高的特點。具體的實現(xiàn)方法如下。
第一,框架結(jié)構(gòu)使用的是MVC,pojo層,controller層,service層,mapper層。
配置文件大致內(nèi)容如下。
(1)web.xml文件。
①里面配置了讀取spring配置的目錄。
②Spring監(jiān)聽。
③編碼過濾器CharacterEncodingFilter。
④配置springmvc配置目錄。
⑤Shiro過濾器。
(2)Spring配置文件整合shiro+mybatis。
①配置導(dǎo)入的外部文件(數(shù)據(jù)庫信息)。
②配置掃描的service層目錄。
③配置數(shù)據(jù)源。
④定義方法級事物控制并應(yīng)用于service層操作。
⑤配置shiro的權(quán)限管理器,加密管理器。
⑥配置shiro的登錄地址,登出方法,對那些網(wǎng)址進行放行,攔截等操作。
⑦配置Mybaits的Mapper接口管理器,SqlSessionFactory進行sql.xml配置。
(3)SpringMVC配置。
①配置掃描器。
②試圖解析器。
第二,郵件重置密碼:使用的是javax.mail.jar包,使用方法是JavaMailWithAttachment.class.getResourceAsStream來獲取郵箱賬戶數(shù)據(jù),并進行配置設(shè)置字符集,使用Multipart進行郵箱的發(fā)送,采用的是自動生成一個url,當點擊的時候?qū)崿F(xiàn)密碼重置,實現(xiàn)是用shiro帶鹽MD5HASH加密方法對自動生成的數(shù)據(jù)加密之后拼接成url,當點擊發(fā)送郵件時,將url及其用戶賬戶信息發(fā)送至rabbitmq隊列,消費者讀取數(shù)據(jù)之后做出發(fā)送郵件操作,這樣既可以減少系統(tǒng)壓力又提高服務(wù)器性能。
第三,使用amoeba代理,mysql主從復(fù)制(如圖2)。
編輯主master服務(wù)器配置文件/etc/my.cnf
server-id=1
log-bin=mysql-bin #啟用二進制日志;
重新啟動服務(wù)即可
編輯從slave修改/etc/my.cnf增加一行
server-id=2
重啟服務(wù)即可
這樣就實現(xiàn)了mysql的主從復(fù)制操作。
Amoeba是一個以MySQL為底層數(shù)據(jù)存儲,并對應(yīng)用提供MySQL協(xié)議接口的proxy。它集中地響應(yīng)應(yīng)用的請求,依據(jù)用戶事先設(shè)置的規(guī)則,將SQL請求發(fā)送到特定的數(shù)據(jù)庫上執(zhí)行。
配置文件dbServers.xml定義好數(shù)據(jù)庫的所有信息,設(shè)定主master或者從slave配置文件amoeba.xml配置監(jiān)聽端口號,并且設(shè)定誰可讀,可寫,這樣就會增加系統(tǒng)的并發(fā)量。
第四,nginx負載均衡,動靜分離。
Nginx是一個高性能的HTTP和方向代理服務(wù)器。
采用C語言編寫,其安全性高,外界只能訪問nginx所在服務(wù)器,nginx將請求轉(zhuǎn)發(fā)內(nèi)部服務(wù)器,調(diào)用后,返回調(diào)用的結(jié)果,使用nginx進行網(wǎng)頁托管,可以對其實現(xiàn)訪問多個服務(wù)器(根據(jù)權(quán)重或者輪詢)。
設(shè)置多臺服務(wù)器根據(jù)權(quán)重訪問服務(wù)器,實現(xiàn)負載均衡。
server {
listen 8888;
server_name xmbllf.school.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:8090;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
在這里進行動靜分離,對照片等靜態(tài)資源直接轉(zhuǎn)發(fā)至物理地址。
第五,視頻接收:通過android發(fā)送照片流,進行顯示,在服務(wù)器端接收數(shù)據(jù)之后,對其進行base64解碼,生成圖片,放置在目錄下,之后不同用戶登錄之后通過ajax,每一秒請求7次,獲取其指定的照片流得到,并不斷循環(huán),接受byte數(shù)據(jù)來進行數(shù)據(jù)顯示,在這里由于android手機傳輸?shù)恼掌窍蛴倚D(zhuǎn)90°的,之前想過在android發(fā)送階段,強行將照片左轉(zhuǎn),但是效率太低,最后采用直接讓網(wǎng)頁上照片旋轉(zhuǎn)回來即可。通過設(shè)置照片的五個屬性MozTransform、webkitTransform、msTransform、OTransform、transform。對于傳輸速度問題,為了達到很快的發(fā)送數(shù)據(jù)的目的,所以使用了壓縮方法,使壓縮率為50%,這個結(jié)果可以達到延時1秒的效果。
第六,利用log4j顯示程序報錯詳細信息。
4 結(jié)語
該文對一個較完整的信息采集系統(tǒng)的實現(xiàn)進行了討論,總體來說,該系統(tǒng)基本實現(xiàn)了預(yù)期效果,并經(jīng)過老師與同學(xué)的檢查,確定本系統(tǒng)穩(wěn)定性較好,可以較好地實現(xiàn)蔬菜大棚的管理系統(tǒng)的使用,這樣一來,就可以讓它服務(wù)于農(nóng)業(yè)生產(chǎn),能夠較效率地減少使用者的時間,從而有更多的擴展功能,普及農(nóng)業(yè)生產(chǎn)生活,使其發(fā)展成為全自動化的農(nóng)業(yè)生產(chǎn)模式,從而釋放更多的勞動力,為社會為國家創(chuàng)造更多的活力。由于能力有限,經(jīng)驗不足,設(shè)計中還有許多問題和不足之處,請各位讀者給予批評指正。
參考文獻
[1] 張紫謙,衷衛(wèi)聲,梁凱,等.基于物聯(lián)網(wǎng)技術(shù)的溫室集群環(huán)境監(jiān)控系統(tǒng)設(shè)計[J].2016,39(14):49-52.
[2] Simon.H A.Artifieial intelligence:an empirical science[J]. Artificial Intelligenee,1995,77(1):95-127.
[3] 吳燦培,胡順豪,王海航.基于Ajax和SVG的Web遠程實時監(jiān)控系統(tǒng)[J].計算機工程與設(shè)計,2011,32(9):3004-3007.
[4] Jianlin Xu,Yifan Yu,Zhen Chen,et al.Cloud Computing Based Forensic Analysis for Massive Mobile Applications Using Data Mining[J].Tsinghua science and technology,2013,18(4).
[5] R.Kirubashankar,K.Krishnamurthy.A Real-time Web-enabled Platform for Informatlon Monitoring and Fault Diagnosis in a Distributed Control System[J].Instrumentation science & technology:Designs and applications for chemistry,biotechnology,and environmental science,2013,41(3):236-250.