李文靜++徐銘貝++李樂峰++于永強


摘 要:隨著我國計算機技術的迅猛發展,遠程實時采集查詢數據已經在工業和農業生產中迅速得到應用。數據采集與查詢是信息技術的重要分支,它研究實時信息數據的采集、存儲、查詢等功能,對數據的獲取并顯示可以讓用戶更好地掌握生產狀況,傳統的人工現場監控浪費人力、物力,效率低下,所以,有必要開發一款低成本、高可靠性、高并發性、適用范圍廣的實時數據查詢系統,對農業生產進行有效的監控,提高生產效率,使農業生產實現現代化。該文采用了Spring、Spring MVC、Mybatis、shiro安全框架。為了提高系統的容量,該文采用nginx實現負載均衡、動靜分離,No-sql中的redis實現緩存,隊列Rabbitmq實現郵箱發送處理,數據庫代理ameoba實現讀寫分離,數據庫mysql主從復制等配置來提升系統的并發量。
關鍵詞:大數據技術 Web后臺框架 查詢系統
中圖分類號:TP393 文獻標識碼:A 文章編號:1672-3791(2017)06(c)-0037-03
隨著電子信息技術不斷進步,人們利用Web技術開發出一系列相關產品,促使人們對產品的需求逐漸增加,這樣極大地推動了互聯網技術的發展。如今的物聯網、云計算、智能家居、實時監控等新技術已逐步進入工業、農業的生產生活,使得Web的應用研發成為當代未來發展的熱點和重點。未來互聯網的主要發展趨勢就是通過互聯網。因而該文提出的是基于Web和App的數據采集及其操作系統的設計,采用了SSM+shiro框架作為服務器端,配合nginx+rabbitmq等開源軟件形成一個較完整的數據采集操作系統,利用這些技術使得本系統具有穩定、高效、占用內存少、并發性強、性能高等特點,再結合通過瀏覽器對現場數據進行實時查看和對歷史記錄進行查詢,這將會給用戶提供更加高效和豐富的應用。
1 系統整體說明
為了構建對設備采集數據進行查看,對設備進行開關操作以及視頻傳輸的功能,在硬件上使用了樹莓派作為采集數據終端,而單片機作為操控結果終端,樹莓派讀取串口數據,發送請求到服務器進行數據采集及操作。在軟件上使用Web和App作為操作平臺,服務器采用tomcat,使用開發工具為eclipse、myeclipse、maven插件來完成的。
2 系統客戶端設計
用戶具有登錄、注銷、通過瀏覽器實時查看現場數據信息、查看歷史數據、實現將視頻由android端傳輸到Web頁面。如圖2所示。
具體是實現方法如下。
(1)使用shiro框架的安全登錄實現登錄與注銷。
使用LogoutFilter進行登出操作subject.logout()操作。
AuthorizingRealm中的方法doGetAuthenticationInfo進行登陸認證,SimpleCredentialsMatcher進行加密操作使用的是shiro的shiro.crypto.hash.Md5Hash加密操作進行密碼加密。
(2)采用了EL表達式來進行數據顯示等操作。
(3)使用echarts進行圖表顯示操作。
百度的圖表js,可以很好地展示各個頁面的操作使用,傳遞json數據進行解析獲得圖表界面。
(4)shiro框架實現粗粒度的權限管理操作。
AuthorizingRealm中方法doGetAuthorizationInfo對不同的用戶添加權限,以及在頁面中添加權限列表,確定不同權限的用戶顯示不同的頁面。
(5)使用jquery的ajax獲取視頻流來顯示視頻。
3 系統服務器端設計
服務器端是整個系統的核心部分,通過服務器響應客戶端的服務請求,從而發布系統消息,Web服務器主要根據不同用戶發出的請求,做出相應的數據處理,并返回給用戶。
該文是Web服務器端,通過各種組件使得整個系統具有穩定、占用內存小、高并發、高可用性的特點。
Web服務器端的實現如下。
該服務器端主要使用MVC框架、shiro安全框架、rabbitmq隊列、ameoba數據庫代理、Nginx技術,通過使用ameoba+Nginx,使得Web服務器具有穩定、并發能力強、性能高的特點。具體的實現方法如下。
第一,框架結構使用的是MVC,pojo層,controller層,service層,mapper層。
配置文件大致內容如下。
(1)web.xml文件。
①里面配置了讀取spring配置的目錄。
②Spring監聽。
③編碼過濾器CharacterEncodingFilter。
④配置springmvc配置目錄。
⑤Shiro過濾器。
(2)Spring配置文件整合shiro+mybatis。
①配置導入的外部文件(數據庫信息)。
②配置掃描的service層目錄。
③配置數據源。
④定義方法級事物控制并應用于service層操作。
⑤配置shiro的權限管理器,加密管理器。
⑥配置shiro的登錄地址,登出方法,對那些網址進行放行,攔截等操作。
⑦配置Mybaits的Mapper接口管理器,SqlSessionFactory進行sql.xml配置。
(3)SpringMVC配置。
①配置掃描器。
②試圖解析器。
第二,郵件重置密碼:使用的是javax.mail.jar包,使用方法是JavaMailWithAttachment.class.getResourceAsStream來獲取郵箱賬戶數據,并進行配置設置字符集,使用Multipart進行郵箱的發送,采用的是自動生成一個url,當點擊的時候實現密碼重置,實現是用shiro帶鹽MD5HASH加密方法對自動生成的數據加密之后拼接成url,當點擊發送郵件時,將url及其用戶賬戶信息發送至rabbitmq隊列,消費者讀取數據之后做出發送郵件操作,這樣既可以減少系統壓力又提高服務器性能。
第三,使用amoeba代理,mysql主從復制(如圖2)。
編輯主master服務器配置文件/etc/my.cnf
server-id=1
log-bin=mysql-bin #啟用二進制日志;
重新啟動服務即可
編輯從slave修改/etc/my.cnf增加一行
server-id=2
重啟服務即可
這樣就實現了mysql的主從復制操作。
Amoeba是一個以MySQL為底層數據存儲,并對應用提供MySQL協議接口的proxy。它集中地響應應用的請求,依據用戶事先設置的規則,將SQL請求發送到特定的數據庫上執行。
配置文件dbServers.xml定義好數據庫的所有信息,設定主master或者從slave配置文件amoeba.xml配置監聽端口號,并且設定誰可讀,可寫,這樣就會增加系統的并發量。
第四,nginx負載均衡,動靜分離。
Nginx是一個高性能的HTTP和方向代理服務器。
采用C語言編寫,其安全性高,外界只能訪問nginx所在服務器,nginx將請求轉發內部服務器,調用后,返回調用的結果,使用nginx進行網頁托管,可以對其實現訪問多個服務器(根據權重或者輪詢)。
設置多臺服務器根據權重訪問服務器,實現負載均衡。
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;
}
}
在這里進行動靜分離,對照片等靜態資源直接轉發至物理地址。
第五,視頻接收:通過android發送照片流,進行顯示,在服務器端接收數據之后,對其進行base64解碼,生成圖片,放置在目錄下,之后不同用戶登錄之后通過ajax,每一秒請求7次,獲取其指定的照片流得到,并不斷循環,接受byte數據來進行數據顯示,在這里由于android手機傳輸的照片是向右旋轉90°的,之前想過在android發送階段,強行將照片左轉,但是效率太低,最后采用直接讓網頁上照片旋轉回來即可。通過設置照片的五個屬性MozTransform、webkitTransform、msTransform、OTransform、transform。對于傳輸速度問題,為了達到很快的發送數據的目的,所以使用了壓縮方法,使壓縮率為50%,這個結果可以達到延時1秒的效果。
第六,利用log4j顯示程序報錯詳細信息。
4 結語
該文對一個較完整的信息采集系統的實現進行了討論,總體來說,該系統基本實現了預期效果,并經過老師與同學的檢查,確定本系統穩定性較好,可以較好地實現蔬菜大棚的管理系統的使用,這樣一來,就可以讓它服務于農業生產,能夠較效率地減少使用者的時間,從而有更多的擴展功能,普及農業生產生活,使其發展成為全自動化的農業生產模式,從而釋放更多的勞動力,為社會為國家創造更多的活力。由于能力有限,經驗不足,設計中還有許多問題和不足之處,請各位讀者給予批評指正。
參考文獻
[1] 張紫謙,衷衛聲,梁凱,等.基于物聯網技術的溫室集群環境監控系統設計[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遠程實時監控系統[J].計算機工程與設計,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.