基于分布式平臺的農業(yè)滴灌系統(tǒng)的設計與實現(xiàn)_第1頁
基于分布式平臺的農業(yè)滴灌系統(tǒng)的設計與實現(xiàn)_第2頁
基于分布式平臺的農業(yè)滴灌系統(tǒng)的設計與實現(xiàn)_第3頁
基于分布式平臺的農業(yè)滴灌系統(tǒng)的設計與實現(xiàn)_第4頁
基于分布式平臺的農業(yè)滴灌系統(tǒng)的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

長江大學工程技術學院畢業(yè)設計(論文)題目名稱基于分布式平臺的農業(yè)滴灌系統(tǒng)的設計與實現(xiàn)系部信息系專業(yè)班級計算機科學與技術61002班學生姓名指導教師講師輔導教師時間2013年9月至2014年6月基于分布式平臺的農業(yè)滴灌系統(tǒng)的設計與實現(xiàn)[摘要]近幾年來,人們對農業(yè)滴灌系統(tǒng)的要求越來越高,這導致了傳統(tǒng)的農業(yè)滴灌系統(tǒng)的業(yè)務持續(xù)膨脹和功能不斷增加,原有的系統(tǒng)架構無法滿足水平和垂直擴展,同時也難以達到性能要求。因此,需要設計出一種新型的分布式平臺的農業(yè)滴灌系統(tǒng)來解決這些問題。本系統(tǒng)的研究目標就是要提出一個在J2EE技術下構建基于分布式平臺的農業(yè)滴灌系統(tǒng)的設計模型和解決方案。J2EE技術提供了開發(fā)分布式應用的底層服務支持。本文給出了一個四層的設計模型,它包括客戶層、Web層、EJB層和數據層。以面向業(yè)務應用系統(tǒng)的負責需求和性能為對象設計并且實現(xiàn)一套通用分布式服務框架,致力于提供高性能和透明化的RPC(RemoteProcedureCall)、基于Mysql的RDBMS(RelationalDatabaseManagementSystem)及Memcached的分布式處理方案。由于開發(fā)多層結構的分布式應用系統(tǒng)的過程中,開發(fā)人員勢必會面臨如何解決各層之間的耦合現(xiàn)象、提高整個系統(tǒng)的靈活性和運行效率等關鍵性的問題。為此,在設計模型中又引入了設計模式的概念。這能使新的需求功能在高版本中能快速得到響應,同時降低其對框架本身穩(wěn)定性的影響。在設計方面,遵循API(ApplicationProgrammingInterface)和擴展接口職責單一、友好的CoC(ConventionoverConfiguration)約定和增量式擴展等原則。在測試方面,結合版本約定進行迭代開發(fā)和功能回歸測試,同時對其性能進行壓力測試。最后將該框架運用于農業(yè)滴灌系統(tǒng)開發(fā)和運營。[關鍵詞]分布式;農業(yè)滴灌;EJB;Memcached;Mysql;設計模式TheDesignandImplementofAgriculturalIrrigationSystemBasedonDistributedStudent:DengJie,DepartmentofInformationSupervisor:WangJuehui,DepartmentofInformation[Abstract]Inrecentyears,theagriculturalirrigationsystemoftheincreasinglyhighdemand,whichledtotheagriculturalirrigationsystem,thetraditionalbusinesscontinuestoexpand,andfunctionsareadded,thesystemcannotmeetthehorizontalandverticalextension,butalsodifficulttoachievetheperformancerequirements.Therefore,weneedtodesigntheagriculturalirrigationsystem,anoveldistributedplatformtosolvetheproblem.ThegoalofthissystemistoputforwardadesignmodelofagriculturalirrigationsystembasedondistributedplatformsandsolutionsinJ2EEtechnology.ProvidestheunderlyingservicedevelopmentofdistributedapplicationsinsupportofJ2EEtechnology.Thispapergivesafourlayerdesignmodel,whichincludesclientlayer,Weblayer,EJBlayeranddatalayer.Todemandandisresponsiblefortheperformanceorientedbusinessapplicationsystemastheobjecttodesignandimplementageneralframeworkfordistributedservices,iscommittedtoprovidehighperformanceandtransparentRPC(RemoteProcedureCall),MysqlbasedRDBMS(RelationalDatabaseManagementSystem)distributedprocessingschemeandMemcached.Becausetheprocessofdistributedapplicationsystemdevelopmentofmulti-layerstructure,developerswillfacehowtosolvethecouplingphenomenonbetweenthelayers,improvingtheflexibilityandtheefficiencyofthewholesystem,thecriticalissueof.Therefore,inthedesignmodelandintroducestheconceptofdesignpatterns.Thiscanmakethefunctionofthenewdemandforrapidresponsecanbeobtainedinthehighversion,whilereducingitseffectonstabilityoftheframeworkitself.Inthedesign,accordingtotheAPI(ApplicationProgrammingInterface)andtheextendedinterfacesingleresponsibility,friendlyCoC(ConventionoverConfiguration)agreementandtheincrementalexpansionprinciple.Inthetest,withtheversionagreedtoiterativedevelopmentandfunctionalregressiontesting,andstresstestsonitsperformance.Theframeworkusedinagriculturalirrigationsystemsdevelopmentandoperations.[Keywords]Distributed;AgriculturalIrrigation;EJB;Memcached;Mysql;DesignPattern目錄任務書……………………Ⅰ開題報告…………………Ⅱ指導教師審查意見………………………Ⅲ評閱教師評語……………Ⅳ答辯會議記錄……………Ⅴ中文摘要…………………Ⅵ外文摘要…………………Ⅶ1前言……………………12選題背景……………12.1分布式平臺的農業(yè)滴灌系統(tǒng)的概念…………12.2農業(yè)滴灌系統(tǒng)平臺搭建………12.3現(xiàn)有農業(yè)滴灌系統(tǒng)平臺問題分析……………32.4課題的提出……………………52.5論文主要功能內容與組織結構………………63方案論證……………83.1分布式數據服務………………83.2分布式數據存儲………………94過程論述……………134.1系統(tǒng)總體設計…………………134.2系統(tǒng)詳細設計與實現(xiàn)…………185結果分析………………355.1測試環(huán)境………………………355.2測試程序與測試界面設計……………………355.3測試分析項目結果……………426總結……………………43參考文獻…………………44致謝………………………45附錄………………………46基于分布式平臺的農業(yè)滴灌系統(tǒng)的設計與實現(xiàn)1前言基于分布式平臺的農業(yè)滴灌系統(tǒng)是網絡化、信息化、智能化等有機結合的新型滴灌平臺。分布式平臺的農業(yè)滴灌系統(tǒng)搭建可以提升傳統(tǒng)滴灌的效率,拓展其功能。但是,一個區(qū)域往往擁有多塊農田,而且各個區(qū)域相對來說比較分散,少則幾公里,多則幾十公里?,F(xiàn)有的農業(yè)滴灌系統(tǒng),是在區(qū)域相對集中,網絡建設已經相當完善的基礎和前提下進行設計開發(fā)的,這種集中式的農業(yè)滴灌系統(tǒng)容易產生信息孤島[1],在新的的環(huán)境并不適用。因此,構建新的分布式平臺的農業(yè)滴灌系統(tǒng)勢在必行。本文研究了基于分布式平臺的農業(yè)滴灌系統(tǒng)解決方案。在對分布式數據服務、分布式數據存儲分析的基礎上,提出了分布式平臺的農業(yè)滴灌系統(tǒng)總體架構;并針對區(qū)別于集中式平臺設計遇到的一些問題,進行了分析并提出了解決方案;完成了分布式平臺的農業(yè)滴灌系統(tǒng)中接口的設計,業(yè)務邏輯的實現(xiàn);構建了分布式平臺的農業(yè)滴灌系統(tǒng)客戶端測試程序,并進行了系統(tǒng)測試與結果分析。2選題背景2.1分布式平臺的農業(yè)滴灌系統(tǒng)的概念分布式平臺的農業(yè)滴灌系統(tǒng)是近幾年在國內出現(xiàn)的一個名詞,它是一個網絡化、信息化、智能化、高度應用化等有機結合的新型滴灌,它是以網絡為基礎,利用信息化手段和工具,實現(xiàn)從環(huán)境、資源的全部分布式化[2]。同時,它是指對現(xiàn)有獨立運行的農業(yè)滴灌系統(tǒng)的整合,統(tǒng)一技術與規(guī)范,達到基礎信息的互相兼容,資源合理配置,數據共享目標的手段。2.2農業(yè)滴灌系統(tǒng)平臺搭建為了達到上述系統(tǒng)整合、數據共享等目標,需要建立一個統(tǒng)一的管理平臺,這個平臺就稱之為分布式平臺的農業(yè)滴灌系統(tǒng)。分布式平臺的農業(yè)滴灌系統(tǒng)功能包括:表1滴灌系統(tǒng)平臺的功能名稱功能功能說明分布式平臺的農業(yè)滴灌系統(tǒng)數據共享按照信息化標準存儲數據數據傳輸與交換平臺數據訪問,數據傳輸與交換統(tǒng)一門戶統(tǒng)一入口,單點登錄管理與控制中心核心平臺管理與維護目前,農業(yè)滴灌系統(tǒng)一般采用三層結構[3]體系來設計,依次分別是:數據存儲層、業(yè)務邏輯層和表示層。數據存儲層保存著系統(tǒng)的各種數據信息;業(yè)務邏輯層控制系統(tǒng)的核心業(yè)務,并提供數據訪問和數據交換的接口;表示層提供人機交互的界面及系統(tǒng)專有的業(yè)務邏輯。其中,數據存儲層和業(yè)務邏輯層合在一起,統(tǒng)稱農業(yè)滴灌系統(tǒng)。分布式農業(yè)滴灌系統(tǒng)結構圖如下:氣象信息泵房能效地圖繪制滴灌控制土壤墑情氣象信息泵房能效地圖繪制滴灌控制土壤墑情表表示層業(yè)務邏輯層業(yè)務邏輯層分布式平臺的農業(yè)滴灌系統(tǒng)分布式平臺的農業(yè)滴灌系統(tǒng)數據存儲層數據存儲層圖1滴灌系統(tǒng)系統(tǒng)結構(1)數據存儲層目前,分布式平臺的農業(yè)滴灌系統(tǒng)的數據存儲層在物理上包括一臺或多臺服務器,運行大型數據庫系統(tǒng)或者其他的數據存儲系統(tǒng)。分布式平臺的農業(yè)滴灌系統(tǒng)需要進行共享的數據,全部在平臺的數據存儲層保存。(2)業(yè)務邏輯層業(yè)務邏輯層是數據存儲層與各種控制系統(tǒng)之間的中間層。各種業(yè)務系統(tǒng)不能直接與數據存儲層發(fā)生聯(lián)系,都是通過業(yè)務邏輯層的接口與數據存儲層進行數據訪問和數據交換。目前的分布式平臺的農業(yè)滴灌系統(tǒng)的業(yè)務邏輯層在物理上是一臺或若干臺應用服務器的集群[4],經常使用的應用服務器中間件有:IBM公司的Websphere、BEA公司的Weblogic、開源項目的JBoss、微軟公司的.Net。2.3現(xiàn)有農業(yè)滴灌系統(tǒng)平臺問題分析現(xiàn)有的農業(yè)滴灌系統(tǒng),是在區(qū)域相對集中,區(qū)域網絡建設已經相當完善的基礎和前提下進行設計開發(fā)的。在這里我們把現(xiàn)有的農業(yè)滴灌系統(tǒng)稱之為:集中式的農業(yè)滴灌系統(tǒng)。但是近年來隨著農田的不斷合并擴充,一個區(qū)域往往擁有多塊農田,而且各個區(qū)域相對來說比較分散,少則幾公里,多則幾十公里。集中式的農業(yè)滴灌系統(tǒng)在這種環(huán)境下進行使用,就會有很大的局限性,甚至在應用的過程中會產生很大的問題。這并不奇怪,因為環(huán)境已經改變了,原有的平臺并不是為這個新的環(huán)境量身定做的,當然就不能很好的適應新的應用環(huán)境了。在這個新的分布式環(huán)境中,集中式的農業(yè)滴灌系統(tǒng)主要采用兩種部署方案:(1)各個區(qū)域平臺獨立使用這是一種平行部署集中式農業(yè)滴灌系統(tǒng)的方案,各個區(qū)域間的平臺獨立部署,獨立使用。各個區(qū)域的平臺沒有任何的耦合性和關聯(lián)性。獨立使用的滴灌系統(tǒng)平臺的結構圖如圖所示:控制系統(tǒng)控制系統(tǒng)控制系統(tǒng)數據存儲層數據存儲層數據存儲層數據存儲層業(yè)務邏輯層業(yè)務邏輯層業(yè)務邏輯層業(yè)務邏輯層區(qū)域B表示層表示層區(qū)域B表示層表示層控制系統(tǒng)區(qū)域A控制系統(tǒng)區(qū)域A數據存儲層區(qū)域C表示層數據存儲層區(qū)域C表示層業(yè)務邏輯層業(yè)務邏輯層圖2獨立使用的滴灌系統(tǒng)平臺結構圖在這種方案中,各個區(qū)域的數據和資源是獨立的。由于平臺的獨立性,不同平臺的數據無法交換共享,會產生更大范圍的數據信息孤島。獨立的各個區(qū)域部署滴灌系統(tǒng)的方案,值可以作為一時的權宜之計,在網絡條件得到改善后,需要馬上采用新的方案來替代。(2)農業(yè)滴灌系統(tǒng)的集中部署在系統(tǒng)邏輯結構上,這種方案和一個區(qū)域的集中式農業(yè)滴灌系統(tǒng)的部署沒什么兩樣。各個區(qū)域的廣域網取代了局域網的連接。集中部署的滴灌系統(tǒng)平臺結構圖如下: 控制系統(tǒng)控制系統(tǒng)數據存儲層數據存儲層業(yè)務邏輯層業(yè)務邏輯層表示層區(qū)域A表示層區(qū)域A表示層控制系統(tǒng)廣域網表示層控制系統(tǒng)廣域網區(qū)域B表示層控制區(qū)域B表示層控制系統(tǒng)區(qū)域區(qū)域C圖3集中部署的滴灌系統(tǒng)平臺從圖中可以看出,在這種方案中,區(qū)域B和區(qū)域C中的數據全部流向區(qū)域A,這給區(qū)域A造成了很大的數據壓力,若接著增加區(qū)域,區(qū)域A的數據服務和存儲服務很快就會癱瘓,整個系統(tǒng)的瓶頸也很快到來。2.4課題的提出根據上面分析,在多區(qū)域存在的情況下,需要設計出一種新型的分布式平臺的農業(yè)滴灌系統(tǒng)來解決上述的種種問題。因此,本論文旨在設計一個以分布式平臺為基礎的新型的農業(yè)滴灌系統(tǒng)。這個平臺既平行分布于各個區(qū)域,平臺之間又有一定聯(lián)系,各個區(qū)域內大量的數據的訪問和交換通過網絡來進行。由于這個新型平臺的分布式的特點,所以稱之為分布式平臺的農業(yè)滴灌系統(tǒng)。對比于集中式的農業(yè)滴灌系統(tǒng),設計和實現(xiàn)分布式平臺的農業(yè)滴灌系統(tǒng),需要解決很多難題,主要有下面幾點:(1)數據透明性設計系統(tǒng)中數據存儲層的數量不再是一個,其數量應等同于區(qū)域的數量。在設計期無法預知區(qū)域的實際數量,因此數據存儲層的數量也就不能確定,這給業(yè)務邏輯層的設計增加了很大的復雜度,應用軟件的設計和編制上也就產生了很大的不確定性。數據存儲層需要提供給業(yè)務邏輯層一定程度的透明性,業(yè)務邏輯層需要提供給表示層完全的透明性才能解決這一問題。因此如何解決好兩個層次的透明性,在新的分布式平臺設計者將是一個重點。(2)冗余數據的設計由于有多個數據存儲層,而且新平臺的設計目標之一是減少廣域網的數據交換量,這就需要設計一定量的冗余數據。但如果冗余數據過于泛濫,會導致上面分析的方案一中的情況發(fā)生,大量產生數據二義性的現(xiàn)象;如果冗余數據設計的過少,必然還會產生大量數據通過廣域網進行訪問交換的情況。因此,如何合理的設計冗余數據是分布式平臺設計中的另一個重點。綜上所述,分布式平臺的農業(yè)滴灌系統(tǒng)的設計和實現(xiàn)是一個巨大的挑戰(zhàn),也是一種全新的嘗試。本論文將以用戶數據分析要點來解決分布式平臺的農業(yè)滴灌系統(tǒng)設計中面臨的上述問題,論文工作也將為類似分布式系統(tǒng)的設計和實現(xiàn)提供借鑒。2.5論文主要功能內容與組織結構2.5.1論文主要工作內容論文工作基于分布式服務、分布式存儲,主要工作內容包括:(1)研究了分布式服務技術與分布式存儲;(2)分析了分布式平臺的農業(yè)滴灌系統(tǒng)的透明性特點,完成了各種數據對象及各種應用接口的設計實現(xiàn)工作;(3)構建了農業(yè)滴灌系統(tǒng)客戶端程序,并進行了系統(tǒng)測試與分析。2.5.2論文組織結構第一章:闡述論文工作背景與研究意義,并進行相關文獻綜述。第二章:首先簡要介紹了農業(yè)滴灌系統(tǒng)研究現(xiàn)狀,分析了現(xiàn)有農業(yè)滴灌系統(tǒng)中存在的問題;進而提出了設計新的分布式平臺的農業(yè)滴灌系統(tǒng),對現(xiàn)實難點進行了分析;最后給出了論文的主要工作內容以及論文的章節(jié)安排。第三章:深入分析研究了相關的關鍵技術,是整個論文的技術支撐。第四章:提出系統(tǒng)的總體設計方案。第五章:通過對用戶數據透明性分析,設計并實現(xiàn)了系統(tǒng)的數據接口。研究了分布式平臺的農業(yè)滴灌系統(tǒng)的數據分布特點,提出了數據遷移的規(guī)則和算法,并在分布式平臺中加以實現(xiàn)。第六章:在局域網與廣域網中對所設計實現(xiàn)的分布式平臺的農業(yè)滴灌系統(tǒng)進行了測試與分析。最后,對論文工作進行了全面總結與展望。整個論文的正文框架如圖4所示。第四章結果論述第五章結果分析第六章結論或總結第三章方案論證第二章選題背景第一章前言第四章結果論述第五章結果分析第六章結論或總結第三章方案論證第二章選題背景第一章前言圖4論文框架結構整個論文的功能圖如圖5所示:分布式平臺的農業(yè)滴灌系統(tǒng)分布式平臺的農業(yè)滴灌系統(tǒng)作物長勢泵房能效作物長勢泵房能效導入配置信息保存配置信息氣象顯示土壤墑情滴灌控制地圖繪制導入配置信息保存配置信息氣象顯示土壤墑情滴灌控制地圖繪制采集硬件信息采集硬件信息圖5論文功能結構3方案論證3.1分布式數據服務技術是為客戶需求而服務的,分布式服務框架也同樣如此,它不是憑空誕生的也是因為有這樣的需求才會有分布式服務框架這樣的東西誕生;本論文的分布式數據服務面向三個方面:移動客戶端、桌面電腦和瀏覽器。服務采用EJB組件[5],EJB是EnterpriseJavaBean的簡稱。EJB是sun的服務器端組建模型,設計目標與核心應用是部署分布式應用程序。憑借Java跨平臺的優(yōu)勢,用EJB技術部署的分布式系統(tǒng)可以不限于特定的平臺。EJB是J2EE的一部分,定義了一個用于開發(fā)基于組件的企業(yè)多重應用程序的標準。在J2EE里,EJB稱為Java企業(yè)Bean,是Java的核心代碼,分別是會話Bean(SessionBean),實體Bean(EntityBean)和消息驅動Bean(MessageDrivenBean)。SessionBean用于實現(xiàn)業(yè)務邏輯,它可以是有狀態(tài)的,也可以是無狀態(tài)的。每當客戶端請求時,容器就會選擇一個SessionBean來為客戶端服務。SessionBean可以直接訪問數據庫,但更多時候,它會通過EntityBean實現(xiàn)數據訪問。EntityBean是域模型對象,用于實現(xiàn)O/R映射,負責將數據庫中的表記錄映射為內存中的Entity對象,事實上,創(chuàng)建一個EntityBean對象相當于新建一條記錄,刪除一個EntityBean會同時從數據庫中刪除對應記錄,修改一個EntityBean時,容器會自動將EntityBean的狀態(tài)和數據庫同步。MessageDrivenBean是EJB2.0中引入的新的企業(yè)Bean,它基于JMS消息,只能接收客戶端發(fā)送的JMS消息然后處理。MDB實際上是一個異步的無狀態(tài)SessionBean,客戶端調用MDB后無需等待,立刻返回,MDB將異步處理客戶請求。這適合于需要異步處理請求的場合,比如訂單處理,這樣就能避免客戶端長時間的等待一個方法調用直到返回結果。本系統(tǒng)中提供給移動客戶端、桌面電腦和瀏覽器的核心服務采用EJB組件,部分框架圖如下:EJBEJB服務JMSWEB服務JMSWEB服務GrizzlyGrizzly服務智能手機智能手機PC機PC機Web瀏覽器圖6EJB服務框架圖3.2分布式數據存儲本論文的存儲[7]采用分布式的方式,存儲類型在本系統(tǒng)中采用兩種類型:MySQL數據庫和Memcached。EJB服務EJB服務 MemcachedMySQLMemcachedMySQL圖7存儲服務框架圖3.2.1MySQL數據庫MySQL是一個關系型數據庫管理系統(tǒng),MySQL是最流行的關系型數據庫管理系統(tǒng),在WEB應用方面MySQL是最好的RDBMS[8-10](RelationalDatabaseManagementSystem:關系數據庫管理系統(tǒng))應用軟件之一。MySQL是一種關聯(lián)數據庫管理系統(tǒng),關聯(lián)數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。MySQL所使用的SQL語言是用于訪問數據庫的最常用標準化語言。MySQL軟件采用了雙授權政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發(fā)都選擇MySQL作為網站數據庫。與其他的大型數據庫例如Oracle、DB2、SqlServer等相比,MySQL自有它的不足之處,但是這絲毫也沒用減少它受歡迎的程度。對于一般的個人使用者和中小型企業(yè)來說,MySQL提供的功能已經綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。Linux作為操作系統(tǒng),Apache和Nginx作為Web服務器,MySQL作為數據庫,PHP/Perl/Python作為服務器端腳本解釋器。由于這四個軟件都是免費或開放源碼軟件(FLOSS),因此使用這種方式不用花一分錢(除開人工成本)就可以搭建起一個穩(wěn)定、免費的網站系統(tǒng),被業(yè)界稱為LAMP組合。3.2.2MySQL數據庫的特性(1)使用C和C++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性。(2)支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多種操作系統(tǒng)。(3)為多種編程語言提供了API。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。(4)支持多線程,充分利用CPU資源。(5)優(yōu)化的SQL查詢算法,有效地提高查詢速度。(6)既能夠作為一個單獨的應用程序應用在客戶端服務器網絡環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中。(7)提供多語言支持,常見的編碼如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作數據表名和數據列名。(8)提供TCP/IP、ODBC和JDBC等多種數據庫連接途徑。(9)提供用于管理、查詢、優(yōu)化數據庫操作的管理工具。(10)支持大型數據庫??梢蕴幚頁碛猩锨f條記錄的大型數據庫。(11)支持多種存儲引擎。(12)MySQL是開源的,所以你不需要支付額外的費用。(13)MySQL使用標準的SQL數據語言形式。(14)MySQL是可以定制的,采用了GPL協(xié)議,你可以修改源碼來開發(fā)自己的MySQL系統(tǒng)。3.2.3MemcachedMemcached是一個高性能[11]的分布式內存對象緩存系統(tǒng),用于動態(tài)Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫次數,從而提高動態(tài)、數據庫驅動網站的速度。Memcached基于一個存儲鍵/值對的hashmap。其守護進程(daemon)是用C寫的,但是客戶端可以用任何語言來編寫,并通過Memcached協(xié)議與守護進程通信。Memcached是一套分布式的快取系統(tǒng),當初是DangaInteractive為了LiveJournal所發(fā)展的,但被許多軟件所使用。這是一套開放源碼軟件,以BSDlicense授權協(xié)議發(fā)布。Memcached缺乏認證以及安全管理,這代表應該將Memcached服務器放置在防火墻后。Memcached的API使用32位元的循環(huán)冗余校驗(CRC-32)計算鍵值后,將資料分散在不同的機器上。當表格滿了以后,接下來新增的資料會以LRU機制替換掉。由于Memcached通常只是當作快取系統(tǒng)使用,所以使用Memcached的應用程式在寫回較慢的系統(tǒng)時(像后端的數據庫)需要額外的程式碼更新Memcached內的資料。Memcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric為首開發(fā)的一款軟件。已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務中提高Web應用擴展性的重要因素。許多Web應用都將數據保存到RDBMS中,應用服務器從中讀取數據并在瀏覽器中顯示。但隨著數據量的增大、訪問的集中,就會出現(xiàn)RDBMS的負擔加重、數據庫響應惡化、網站顯示延時等重大影響[12]。這時就該Memcached大顯身手了。Memcached是高性能你的分布式內存緩存服務器。一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態(tài)Web應用的速度、提高可擴展性[13-16]。3.2.4Memcached特性(1)高性能:當傳統(tǒng)數據庫面臨大規(guī)模數據訪問時,磁盤I/O往往成為性能瓶頸,從而導致過高的響應延遲。分布式緩存將高速內存作為數據對象的存儲介質,數據以key/value形式存儲,理想情況下可以獲得DRAM(DynamicRandomAccessMemory)級的讀寫性能。(2)動態(tài)擴展性:支持彈性擴展,通過動態(tài)增加或減少節(jié)點應對變化的數據訪問負載,提供可預測的性能與擴展性;同時,最大限度地提供資源利用率。(3)高可用性:可用性包含數據可用性與服務可用性兩方面?;谌哂鄼C制實現(xiàn)高可用性,無單點失效(singlepointoffailure),支持故障的自動發(fā)現(xiàn),透明地實施故障切換,不會因服務器故障而導致緩存服務中斷或數據丟失。動態(tài)擴展時自動均衡數據分區(qū),同時保障緩存服務持續(xù)可用。(4)易用性:提供單一的數據與管理視圖,API接口簡單,且與拓撲結構無關;動態(tài)擴展或失效恢復時無需人工配制,自動選取備份節(jié)點,多數緩存系統(tǒng)提供了圖形化的管理控制臺,便于統(tǒng)一維護。3.2.5Memcached應用場景(1)頁面緩存:用來緩存web頁面的內容片段,包括HTML、CSS和圖片等,多應用于社交網站等。(2)應用對象緩存:緩存系統(tǒng)作為ORM框架的二級緩存對外提供服務,目的是減輕數據庫的負載壓力,加速應用訪問。(3)狀態(tài)緩存:緩存包括session會話狀態(tài)及應用橫向擴展時的狀態(tài)數據等,這類數據一般是難以恢復的,對可用性要求較高,多應用于高可用集群。(4)并行處理:通常涉及大量中間計算結果需要共享。(5)事件處理:分布式緩存提供了針對事件流的連續(xù)查詢處理技術,滿足實時性需求。(6)極限事務處理:分布式緩存為事務型應用提供高吞吐率、低延時的解決方案,支持高并發(fā)事務請求處理,多應用于鐵路、金融服務和電信等領域。4過程論述4.1系統(tǒng)的總體設計4.1.1系統(tǒng)的總體架構 基于前面的分析,論文給出了分布式平臺的農業(yè)滴灌的總體架構。如圖8所示,分布式平臺的農業(yè)滴灌系統(tǒng)采用了平行的三(N)層架構體系。這個平臺分為兩部分:一是分布式數據存儲為主體的數據層,二是基于J2EE的分布式數據服務的業(yè)務邏輯層?;诜植际狡脚_的農業(yè)滴灌系統(tǒng)的總體架構圖如下所示: 圖8分布式滴灌系統(tǒng)總體架構從圖8可以看出,基于分布式平臺的農業(yè)滴灌系統(tǒng)與基于集中式平臺的農業(yè)滴灌系統(tǒng)有下面相同點:(1)表示層的各個系統(tǒng)與單獨的一個平臺進行連接,并不需要連接其他區(qū)域的平臺。這樣就沒有增加原有的表示層各個系統(tǒng)的復雜性,原有的系統(tǒng)幾乎可以在不改變的情況下加入到新的系統(tǒng)中。(2)數據的訪問和交換均通過平臺的業(yè)務邏輯層來完成,所以它們不需要了解所有請求數據的實際位置。在整個系統(tǒng)的架構上依然具有比較優(yōu)良的透明性。經過對基于分布式平臺的農業(yè)滴灌系統(tǒng)和基于集中式平臺的農業(yè)滴灌系統(tǒng)在網絡架構、數據交換流程進行分析后,發(fā)現(xiàn)二者又有著顯著的區(qū)別:(1)基于分布式平臺的農業(yè)滴灌系統(tǒng)在各個區(qū)域均可部署平臺,各個平臺通過廣域網進行連接;基于集中式平臺的農業(yè)滴灌系統(tǒng)的平臺在一個區(qū)域部署;(2)基于分布式平臺的農業(yè)滴灌系統(tǒng)的各個區(qū)域中的系統(tǒng)與各自區(qū)域的平臺連接,二者間的數據交換可通過局域網(或廣域網)來進行;基于集中式平臺的農業(yè)滴灌系統(tǒng)中的各個區(qū)域中的系統(tǒng)與統(tǒng)一的平臺連接,與平臺在一個區(qū)域的各個系統(tǒng)與平臺通過局域網進行數據交換,其他區(qū)域的系統(tǒng)通過廣域網與平臺進行數據交換;(3)在基于分布式平臺的農業(yè)滴灌系統(tǒng)中,在各個平臺通過區(qū)域間的廣域網來進行數據交換;在基于集中式平臺的農業(yè)滴灌系統(tǒng)中,其他區(qū)域與平臺請求、交換數據均通過廣域網進行。4.1.2數據存儲層的設計數據存儲層的設計是本論文一大核心,數據存儲層設計好壞直接影響系統(tǒng)的穩(wěn)定性;同時,也會對業(yè)務邏輯層的透明性造成一定的影響,為了降低業(yè)務邏輯層軟件的設計復雜性,在數據層為業(yè)務邏輯層盡量提供分段透明性。本系統(tǒng)的服務對象是農田、溫室大棚,服務區(qū)域在新疆,由于地理位置的因素,一個區(qū)域有很多兵團,一個兵團下面管轄很多農場,農場下面有分有若干塊農田或大棚,所以這數據表的設計上尤為重要。因此,數據表的設計原則如下:(1)核心數據保存在MySQL數據庫[17]中,需要頻繁查詢的數據保存在Memcached中。(2)其他站點的MySQL數據庫作為冗余數據進行存儲,定期與核心數據同步更新。在系統(tǒng)中存儲量最大的數據就是資源數據,資源數據包括結構化的數據;大部分資源數據在生成之后,在使用過程中基本上不會發(fā)生改變,所以資源數據采用在各個站點進行冗余存儲的設計原則,即在各個站點擁有資源數據的完全備份。這樣做主要有下面三點原因:(1)就近訪問可以得到較好的系統(tǒng)性能;(2)規(guī)避廣域網故障的影響;(3)存儲介質相對于廣域網帶寬來說比較廉價。數據存儲層的設計圖:數據源冗余備份MySQL核心數據頻繁查詢的數據MemcachedMySQL數據源冗余備份MySQL核心數據頻繁查詢的數據MemcachedMySQL圖9存儲框架圖4.1.3業(yè)務邏輯層的設計業(yè)務邏輯層是農業(yè)滴灌系統(tǒng)架構中最能體現(xiàn)核心價值的部分,它集中體現(xiàn)了系統(tǒng)的業(yè)務規(guī)則的制定、業(yè)務流程的實現(xiàn)等與業(yè)務需求相關的系統(tǒng)設計。業(yè)務邏輯層在農業(yè)滴灌系統(tǒng)中的位置非常關鍵,它處于數據存儲層與表示層的中間,起到了數據交換中承上啟下的作用[18]。農業(yè)滴灌系統(tǒng)中的各個層是一種弱耦合結構,層與層之間的依賴是向下的:表示層中的各個區(qū)域的系統(tǒng)通過業(yè)務邏輯層的接口來完成數據訪問和數據交換的過程;業(yè)務邏輯層對于表示層來說是“透明”的,改變表示層中的各個控制化系統(tǒng)的設計實現(xiàn)對于其調用的業(yè)務邏輯層而言沒有任何影響。農業(yè)滴灌系統(tǒng)的業(yè)務邏輯層需要與數據存儲層通信。在本論文實現(xiàn)的分布式平臺的農業(yè)滴灌系統(tǒng)中采用業(yè)界流行的Hibernate框架構建的數據訪問層來訪問數據庫。在整體架構上,數據訪問層可以看作業(yè)務邏輯層的一部分,是業(yè)務邏輯層的最靠近數據庫的部分。為了使控制業(yè)務邏輯中控制業(yè)務規(guī)則、業(yè)務流程的部分與數據訪問層實現(xiàn)弱依賴,數據訪問層引入接口工作集和設計模式中的工廠模式。在所有的業(yè)務流程模塊中對數據訪問層的數據對象的調用,都采用面向對象語言中的多態(tài)原理和抽象接口技術。先定義出抽象的數據接口對象,然后使用工廠對象中的工廠方法創(chuàng)建出具體的數據對象。在農業(yè)滴灌系統(tǒng)中業(yè)務邏輯層與表示層要實現(xiàn)弱耦合結構。業(yè)務邏輯層最理想的方式是面向接口設計。在面向接口設計的系統(tǒng)中,系統(tǒng)的功能是由各個層來協(xié)作完成,各個層次中如果實現(xiàn)自身的業(yè)務流程對整個系統(tǒng)框架來說不再重要,而各個層次間的協(xié)作關系則成為系統(tǒng)設計的關鍵。由于采用面向接口的設計,農業(yè)滴灌系統(tǒng)由于升級換代而產生的表示層中的發(fā)生改變,業(yè)務邏輯層中的實現(xiàn)是完全不用改變的。不同區(qū)域中使用的各個控制化系統(tǒng)的建設情況十分復雜,具體的實現(xiàn)技術也是不一而同。數據邏輯層提供的接口是標準技術規(guī)范,才能方便的把各式各樣的系統(tǒng)進行整合。目前,EJB是標準的接口技術,絕大多數的技術框架均提供對它的支持[19]。因此業(yè)務邏輯層的接口發(fā)布技術采用EJB[20]對其接口進行發(fā)布。在EJB的配置文件standalone.xml中進行配置就可以完成其接口的發(fā)布功能,下面是在EJB服務器中的配置:(1)添加security-realm,安全域(即表示如果使用這個安全域的話,就使用這個域的密碼)<security-realmname="ejb-security-realm"> <server-identities> <secretvalue="c21hcnRsYWI0MTEq"/> </server-identities></security-realm>(2)在配置中新建一個外連接實例,將安全域與遠程地址配置關聯(lián)起來<outbound-connections> <remote-outbound-connectionname="remote-ejb-connection"outbound-socket-binding-ref="remote-ejb"username="ejb"security-realm="ejb-security-realm"> <properties> <propertyname="SASL_POLICY_NOANONYMOUS"value="false"/><propertyname="SSL_ENABLED"value="false"/></properties></remote-outbound-connection></outbound-connections>這個遠程連接實例“remote-ejb-connection”將上述所配置的連接與安全域聯(lián)系在一起,并且使用EJB服務器創(chuàng)建的applicationuser:ejb。最后這個連接實例隨著Web服務器程序的啟動而啟動。由于配置安全域的賬號和密碼是在EJB服務器那里申請,配置完Web服務器后,Web服務器就可以獲得訪問EJB服務器的權限。業(yè)務邏輯層的設計框架圖:向向EJB服務器申請訪問的權限EJBEJB服務Web服務EJB服務器授權給Web服務EJB服務器授權給Web服務器圖10業(yè)務框架圖4.2系統(tǒng)詳細設計與實現(xiàn)4.2.1用戶表的設計用戶表保存有登錄用戶的ID、密碼、身份、權限等信息。用戶表的表結構定義為:表2用戶表結構序號字段名稱類型長度空否主鍵說明1IDINTY用戶代碼2CNAMEVARCHAR20用戶姓名3STATUSCHAR1用戶狀態(tài)4SEXCHAR1性別5CRDATEDATE創(chuàng)建日期6CADATEDATE注銷日期7IDCARDVARCHAR24身份證號8PWDVARCHAR32用戶密碼(1)實現(xiàn)功能用戶創(chuàng)建接口提供創(chuàng)建用戶的服務,將客戶端傳入的用戶數據保存到數據庫中。調用這個接口的客戶端軟件有可能是PC版的控制系統(tǒng),可能是Web版的注冊,也有可能是移動端。(2)設計思路 從本系統(tǒng)的角度出發(fā),用戶創(chuàng)建接口是一個局部應用。它只是訪問和接口所在的應用服務器,接口的參數是用戶的數據結構,如果用戶數據創(chuàng)建成功,則返回新創(chuàng)建的用戶代碼,失敗則返回相應異常。(3)主要程序實現(xiàn)描述,用戶創(chuàng)建接口流程圖如下:開始開始返回登錄狀態(tài)寫日志返回登錄狀態(tài)寫日志客戶調用客戶調用CreateUser檢查傳入數據結構不合法檢查傳入數據結構不合法合法合法執(zhí)行sql執(zhí)行sql語句成功成功寫日志寫日志返回登錄狀態(tài)返回登錄狀態(tài)圖11用戶創(chuàng)建接口流程圖在Java的代碼中使用throw語句直接拋出異常,異常拋出后中斷了函數調用,直接返回到被調用代碼處。這個特性在遠程調用的Web服務中的函數也不例外。異常拋出后,直接返回到調用函數,調用函數對異常進行處理,如果調用函數沒有對該異常進行處理,異常會再次被拋出,一直到有代碼對它進行了處理。由于EJB中有自帶的事務機制,它能夠在操作中對異常進行處理,做相應的提交或回滾。認證登錄日志表記錄登錄用戶ID,登錄時間、認證登錄地點(IP地址)、是否認證登錄成功標示等等。在各個數據庫(將來拓展為站點)均有相同結構的認證登錄日志表。在某個區(qū)域進行過登錄的用戶,不論登錄成功與否,應用系統(tǒng)均記錄該次認證或登錄的情況。認證登錄日志表的表結構設計為:表3認證登錄日志表結構序號字段名類型大小主鍵外鍵說明1IDINTY主鍵2USRIDINTY用戶代碼3INSTIMEDATA登錄時間4OPTIPVARCHAR100登錄IP5LGNSTATUSCHAR1用戶狀態(tài)由于采用EJB編寫,EJB中集成了Hibernate框架,使用Hibernate框架操作用戶對象;如果用戶數據不存在,寫登錄日志表,返回登錄失敗。如果用戶數據存在,寫登錄日志表,筆記輸入的用戶賬號和密碼和數據庫中保存的用戶賬號和密碼是否一致,如果一致,返回登錄成功;如果不一致,返回登錄不成功。認證流程圖如圖所示:開始開始 查詢備份數據庫查詢用戶是否存在查詢備份數據庫查詢用戶是否存在寫登錄日志表寫登錄日志表寫登錄日志表是否存在檢查密碼寫登錄日志表寫登錄日志表寫登錄日志表是否存在檢查密碼失敗失敗成功成功拋出響應異常構造用戶對象拋出響應異常拋出響應異常構造用戶對象拋出響應異常開始開始圖12認證接口流程4.2.2基本信息類表結構1預警聯(lián)系人表(1)預警聯(lián)系人表用于存儲接收預警信息的相關人員信息。(2)表標識:XJ_PREWARMAN_B。(3)表編號:XJ_002_0001。表4序號字段名字段標識類型及長度是否允許空值計量單位主鍵序號1姓名NAMEC(10)N12電話TELC(15)N3職務DUTYC(30)N4行政區(qū)劃名稱ADMNAMEC(30)N5行政區(qū)劃代碼ADMCODEC(30)N2灌溉設備配置表(1)灌溉設備配置表用于存儲灌溉設備對應的實際地塊信息。(2)表標識:XJ_CONFIGURATION_B。(3)表編號:XJ_002_0002。表5序號字段名字段標識類型及長度是否允許空值計量單位主鍵序號1設備編號C(30)N12設備名稱C(30)N3設備序列號C(30)N4設備大類C(30)N5供電方式C(30)N6設備型號C(30)N7設備IMSIC(30)N8購買時間C(30)N9生效時間C(30)N10服務到期時間C(10)N11經度C(30)N12設備使用狀態(tài)C(10)N13緯度C(30)N14父設備編號C(30)N15組態(tài)圖地址C(30)N16項目IDC(50)N17手機號碼C(30)N18備注C(50)19設備地址C(30)N20顯示名稱C(30)N21應用類型C(30)N22轉發(fā)設備地址C(30)N23轉發(fā)通道序號C(30)N24設備C(30)N25業(yè)務信息C(30)N26基本信息C(30)N27GPRSC(10)N28類型編號C(30)N29網關列表C(30)N3灌溉流程配置表(1)灌溉流程配置表用于存儲灌溉設備控制灌溉的流程信息。(2)表標識:XJ_PROCONF_B。(3)表編號:XJ_002_0003。表6序號字段名字段標識類型及長度是否允許空值計量單位主鍵序號1設備編號C(30)N12設備名稱C(30)N3開閥代號C(30)N4關閥代號C(30)N5開閥通道C(30)N6關閥通道C(30)N7類型C(30)N8開閥指令C(30)N9關閥指令C(30)N10閥編號C(10)N11閥名稱C(30)N12上報狀態(tài)位C(10)N13報警通道序號C(30)N4輪灌組配置表(1)輪灌組配置表用于存儲整個項目的輪灌方式。(2)表標識:XJ_RATIRRGRO_B。(3)表編號:XJ_002_0004。表7序號字段名字段標識類型及長度是否允許空值計量單位主鍵序號1名稱C(30)N12項目外鍵C(30)N3編號C(30)N4序號C(20)N5灌溉種植配置表(1)灌溉種植配置表用于存儲灌溉設備對應地塊的詳細信息(2)表標識:XJ_PLANTCONF_B。(3)表編號:XJ_002_0005。表8序號字段名字段標識類型及長度是否允許空值計量單位主鍵序號1編號C(30)N12閥門在用情況C(5)N3自由水頭C(30)N4閥一地塊面積C(30)N5閥二地塊面積C(30)N6閥一作物名稱C(30)N7閥二作物名稱C(30)N8閥一作物代碼C(30)N9閥二作物代碼C(30)N10閥一用戶信息C(50)N11閥二用戶信息C(50)N12閥一土壤類型C(10)N13閥二土壤類型C(10)N14閥一土壤類型C(10)N15閥二土壤類型C(10)N16閥一土層深度C(10)N17閥二土層深度C(10)N18閥一土層深度C(10)N19閥二土層深度C(10)N20閥一耗水系數C(10)N21閥二耗水系數C(10)N22閥一滴頭流量C(30)N23閥二滴頭流量C(30)N24閥一滴頭間距C(30)N25閥二滴頭間距C(30)N26閥一支管長度C(10)N27閥二支管長度C(10)N28閥一自由水頭C(30)N29閥二自由水頭C(30)N30閥一支管管徑C(30)N31閥二支管管徑C(30)N32閥一滴灌帶間距C(30)N33閥二滴灌帶間距C(30)N6設備表(1)設備表用于存儲灌溉設備的相關信息。(2)表標識:XJ_DEVICE_B。(3)表編號:XJ_002_0006。表9序號字段名字段標識類型及長度是否允許空值計量單位主鍵序號1設備編號C(10)N12設備名稱C(18)N3設備序列號C(18)N4設備大類C(18)5供電方式C(18)6設備型號C(18)N7設備IMSIC(18)8購買時間C(18)9生效時間C(18)10服務到期時間C(18)11經度C(20)N12設備使用狀態(tài)C(18)N13緯度C(20)N14父設備編號C(18)N15組態(tài)圖地址C(18)N16項目IDC(18)N17手機號碼C(18)N18備注C(30)19設備地址C(10)N20顯示名稱C(18)N21應用類型C(10)22轉發(fā)設備地址C(10)N23轉發(fā)通道序號C(10)N24設備C(10)N25業(yè)務信息C(18)26基本信息C(18)27GPRSC(10)N28類型編號C(10)N29網關列表C(10)N7項目表(1)項目表用于存儲灌溉項目的詳細信息及配置所屬該項目下的設備。(2)表標識:XJ_PROJECT_B。(3)表編號:XJ_002_0007。 表10序號字段名字段標識類型及長度是否允許空值計量單位主鍵序號1項目編號C(10)N12項目名稱C(18)N3項目創(chuàng)建者C(10)4父項目編號C(10)N5項目創(chuàng)建時間C(18)6項目描述C(30)7所屬行政區(qū)劃C(18)N8項目類型C(18)N9經度C(20)N10緯度C(20)N11比例尺C(20)N12地圖類型C(10)N13頁面地址C(20)14開關對應C(10)N15二級域名C(10)N16設備列表C(10)N17項目圖片C(18)18網關選擇C(10)N8網絡表(1)網絡表用于存儲灌溉項目的網絡信息及配置所屬該網絡下的設備。(2)表標識:XJ_NETWORK_B。(3)表編號:XJ_002_0008。表11序號字段名字段標識類型及長度是否允許空值計量單位主鍵序號1編號C(10)N12名稱C(18)N3父項目編號C(10)N4設備編號列表C(18)N9預警信息表(1)預警信息表用于存儲設備的預警記錄。(2)表標識:XJ_WARMEG_B。(3)表編號:XJ_002_0009。表12序號字段名字段標識類型及長度是否允許空值計量單位主鍵序號1外鍵C(10)N12設備地址C(10)N3通道序號C(10)N4gprs地址C(10)N5報警時間C(18)N6報警類型C(10)N7數據報文C(20)N8解析數據C(20)N10未處理設備歷史數據表(1)未處理設備歷史數據表用于存儲設備通訊的原始數據。(2)表標識:XJ_UNTREATDATA_B。(3)表編號:XJ_002_0010。表13序號字段名字段標識類型及長度是否允許空值計量單位主鍵序號1設備地址C(10)N12gprs地址C(10)N3日期C(18)N4最新時間C(18)N5采集時間C(18)N6上報時間C(18)N7通道一C(18)8通道二C(18)9通道三C(18)10通道四C(18)11通道五C(20)12通道六C(18)13通道七C(28)14通道八C(18)15通道九C(18)16通道十C(18)17通道十一C(18)18通道十二C(18)19通道十三C(18)20通道十四C(18)21通道十五C(18)22通道十六C(18)11處理后設備歷史數據表(1)處理后設備歷史數據表用于存儲設備通訊經處理后的原始數據。(2)表標識:XJ_HANDLEDATA_B。(3)表編號:XJ_002_0011。 表14序號字段名字段標識類型及長度是否允許空值計量單位主鍵序號1設備地址C(10)N12gprs地址C(10)N3時間C(18)N4最新時間C(18)N5采集時間C(18)N6上報時間C(18)N7通道一C(18)8通道二C(18)9通道三C(18)10通道四C(18)11通道五C(28)12通道六C(18)13通道七C(18)14通道八C(18)15通道九C(18)16通道十C(18)17通道十一C(18)18通道十二C(18)19通道十三C(18)20通道十四C(18)21通道十五C(18)22通道十六C(18)4.2.3分布式服務的設計與實現(xiàn)本系統(tǒng)的核心服務采用的技術是EJB,EJB是sun的服務器端組件模型,設計目標與核心應用是部署分布式應用程序。憑借Java跨平臺的優(yōu)勢,用EJB技術部署的分布式系統(tǒng)可以不限于特定的平臺。EJB(EnterpriseJavaBean)是J2EE的一部分,定義了一個用于開發(fā)基于組件的企業(yè)多重應用程序的標準。其特點包括網絡服務支持和核心開發(fā)工具(SDK)。在J2EE里,EnterpriseJavaBeans(EJB)稱為Java企業(yè)Bean,是Java的核心代碼,分別是會話Bean(SessionBean),實體Bean(EntityBean)和消息驅動Bean(MessageDrivenBean)。設計分布式服務并不是只為實現(xiàn)當前的功能,而且還來考慮將來的擴展性,所以設計的時候必須認真、仔細的考慮;分布式服務的設計原則如下:(1)對外提供服務接口(Web瀏覽器、智能手機、PC機等調用相應的接口)。(2)可擴展,方便以后組建EJB服務集群分布式服務實現(xiàn)框架圖如下所示:圖13分布式服務框架圖4.2.4分布式存儲設計與實現(xiàn)本系統(tǒng)的存儲采用MySQL和Memcached兩種存儲機制,采用MySQL是因為它體積小,成本低,完全可以滿足一般企業(yè)的要求;采用Memcached的好處在于,它能夠實現(xiàn)內存共享;同時它的可擴展性強,若將來Memcached的內存不夠用,可以和其他的Memcached組合起來構成Memcached集群,設計分布式存儲的原則如下:(1)雙機備份;(2)冗余數據存儲;這樣能夠保存,當某個數據庫(MySQL或是Memcached)崩潰后,不會影響整個系統(tǒng)的運行。分布式存儲實現(xiàn)框架圖:圖14分布式存儲框架圖5結果分析5.1測試環(huán)境(1)2臺Linux操作系統(tǒng),MySQL5.5、Memcached1.4、JBoss7.0。(2)1臺Linux操作系統(tǒng),安裝Tomcat。作為客戶端軟件的Web服務器;(3)1臺PC機,Windows8操作系統(tǒng)。作為C/S軟件、B/S軟件的客戶端;(4)1臺安卓手機。作為移動客戶端;(5)100M帶寬的局域網和10M帶寬的ADSL廣域網連接;(6)Jmeter2.11壓力測試工具;5.2測試程序與測試界面設計(1)基于.Net平臺的滴灌系統(tǒng)之PC端的控制程序用戶操作滴灌系統(tǒng),操作功能包含:滴灌啟動、采集水閥狀態(tài)、電壓采集等。首先是登錄界面,如圖15所示: 圖15登錄界面登陸成功后進入主界面,如圖16所示:圖16主界面滴灌控制界面能夠顯示節(jié)點下掛的水閥個數,如圖17所示:圖17滴灌控制滴灌控制功能包含信息采集,例如:水閥狀態(tài)、節(jié)點電壓。如圖18所示:圖18信息采集土壤墑情是采集當天含水量的記錄,如圖19所示:圖19土壤墑情氣象顯示包含降雨量、風速、風向、太陽輻射、空氣溫度、空氣濕度和大氣壓力。圖20氣象顯示(2)基于J2EE技術的WEB應用程序滴灌系統(tǒng)之WEB應用程序功能包含:泵房管理、氣象數據、滴灌操作等。 圖21瀏覽器泵房管理Web滴灌控制可參考桌面電腦的操作,如圖22是滴灌控制界面:圖22瀏覽器滴灌控制 圖23瀏覽器氣象數據(3)Android手機客戶端程序農業(yè)小助手啟動界面,如圖24所示:圖24農業(yè)滴灌系統(tǒng)啟動界面進入登錄界面,如圖25所示:圖25農業(yè)滴灌系統(tǒng)啟動界面農業(yè)小助手主界面,如圖26所示:圖26農業(yè)滴灌系統(tǒng)主界面農業(yè)滴灌系統(tǒng)控制界面,如圖27所示: 圖27農業(yè)滴灌系統(tǒng)滴灌控制農業(yè)滴灌系統(tǒng)氣象顯示,如圖28所示:圖28農業(yè)滴灌系統(tǒng)氣象顯示5.3測試分析項目結果分布式平臺的農業(yè)滴灌系統(tǒng)性能分析主要包括并發(fā)量和吞吐量及容錯率。下面對系統(tǒng)進行壓力測試并分析:分布式平臺的農業(yè)滴灌系統(tǒng)采用了三層架構,數據的訪問流程由業(yè)務邏輯層控制。下面對傳統(tǒng)的平臺和分布式平臺的應用進行性能的類比分析。測試結果如下:表15 注:Samples表示并發(fā)量,90%Line表示響應時間,Error%表示容錯率,KB/sec表示吞吐量。通過上面分析,當并發(fā)量達到1000時,響應時間和容錯率及吞吐量,在分布式平臺下明顯比傳統(tǒng)的平臺有優(yōu)勢。6總結分布式平臺的農業(yè)滴灌系統(tǒng)是以網絡為基礎,利用控制化手段和工具,實現(xiàn)從環(huán)境、資源到活動的全部分布式化。分布式平臺的農業(yè)滴灌系統(tǒng)是網絡化、控制化、智能化、高度應用化等有機結合的新型分布式平臺。分布式平臺的農業(yè)滴灌系統(tǒng)的建設可以提升傳統(tǒng)農業(yè)滴灌系統(tǒng)的效率,拓展其功能。但是近年來隨著農田的不斷合并擴充,一個區(qū)域往往擁有多塊農田,而且各個區(qū)域相對來說比較分散,少則幾公里,多則幾十公里?,F(xiàn)有的農業(yè)滴灌系統(tǒng),是在區(qū)域相對集中,網絡建設已經相當完善的基礎和前提下進行設計開發(fā)的,這種集中式的農業(yè)滴灌系統(tǒng)在新的的環(huán)境并不適用。因此,構建新的分布式平臺的農業(yè)滴灌系統(tǒng)勢在必行。本文提出了基于分布式數據存儲和EJB架構的分布式數據服務解決方案,并以用戶數據和滴灌系統(tǒng)產生的數據為分析要點,解決了分布式平臺的農業(yè)滴灌系統(tǒng)設計中面臨的一些問題。論文主要工作包括:(1)研究、分析了分布式數據存儲、EJB接口技術;(2)提出了分布式平臺的農業(yè)滴灌系統(tǒng)的總體架構;(3)分布式平臺的農業(yè)滴灌系統(tǒng)中數據庫對象,有效解決了分布式平臺中業(yè)務邏輯層接口設計的復雜性問題;(4)布式平臺中用戶數據分布的特點,并通過數據庫對象設計和后臺服務進程設計加以實現(xiàn);(5)構建了分布式平臺的農業(yè)滴灌系統(tǒng)客戶端測試程序,并進行了系統(tǒng)測試與結果分析。由于時間有限以及經驗的不足,系統(tǒng)中仍有很多方面有待進一步的探索。例如,在滴灌系統(tǒng)中,如何保證資源數據的一致性、如何進一步提高分布式數據的效率等問題,需要在今后的工作中不斷改進和完善參考文獻[1]李曉蕾.基于信息孤島消除的資源優(yōu)化模型研究[J].科技通報,2013.[2]阮躍.分布式化工大機組智能故障診斷系統(tǒng)[J].化工自動化及儀表,2004.[3]SethLadd,DarrenDavison.深入解析SpringMVC與WebFlow[M].人民郵電出版社,2008[4]劉鵬.云計算[M].北京:電子工業(yè)出版社,2010[5]DEEPAKA,JOHNC.J2EE核心模式[M].北京:機械工業(yè)出版社,2005.[6]JohnWiley&Sons,MateringEnterpriseJavaBeans[M].電子工業(yè)出版社,2005.[7]M.TAMEROZSU,PATRICKV.PrinciplesofDistributedDatabaseSystems(英文影印版)[M].北京:清華大學出版社,2002.[8]MINORDH,BURRUSSJR.DistributedMDSplusdatabaseperformancewithLinuxclusters[J].FusionEngineeringandDesign.2006.[9]SALLYM,BRYANS,PHILIPM,etal.Knowledgediscoverybyprobabilisticclusteringofdistributeddatabases[J].Data&KnowledgeEngineering,2005.[10]ZHANGF,XUED.Distributeddatabaseandknowledgebasemodelingforconcurrentdesign[J].Computer-AidedDesign,2002.[11]HASSANA,MANALS,HAIDARS.AdistributedmobiledatabaseimplementationonPocketPCmobiledevicescommunicationoverBluetooth[J].JournalofNetworkandComputerApplications,2009.[12]ALIA,F(xiàn)AWAZS.APSOandaTabusearchheuristicsfortheassemblyschedulingproblemofthetwo-stagedistributeddatabaseapplication[J].Computer&OperationsResearch,2006.[13]NICOLAPB,DistributedDatabasesforthedevelopmentofMechanismsTopology[J].MechanismandMachineTheory,2000.[14]王君,祝永志,魏榮暉,等.基于Oracle分布式數據庫的查詢優(yōu)化[J].計算機技術與發(fā)展,2008.[15]馬程.分布式數據庫系統(tǒng)中的查詢優(yōu)化[J].科技信息(學術版),2008.[16]高維維,王海健.淺談分布式數據庫的安全管理技術[J].科技資訊,2008.[17]BHAVANIT.SecurityofDistributedDatabases[J].InformationSecurityTechnicalReport.2001.[18]XUED,XUY.Web-baseddistributedsystemanddatabasemodelingforconcurrentdesign[J].Computer-AidedDesign,2003.[19]FABRIZIOF,CLAUDIOG,F(xiàn)AUSTOR,etal.Distancebrowsingindistributedmultimediadatabases[J].FutureGenerationComputerSystems.2009.[20]LEONARDR.RESTfulWebServices[M].北京:電子工業(yè)出版社,2008.致謝非常感謝王玨輝老師,在我大學的最后學習階段——畢業(yè)設計階段給我的指導,從最初的定題到資料收集,到寫作、修改,到論文定稿,他給了我耐心的指導和無私的幫助。為了指導我的畢業(yè)論文,他放棄了自己的休息時間,這種無私奉獻的敬業(yè)精神令人佩服,導師嚴謹的治學態(tài)度、高度的責任心和實事求是的工作風格令我受益匪淺,在此我向王玨輝老師表示我最誠摯的謝意。同時,感謝所有任課老師和所有同學在這四年來給我的指導和幫助,是他們教會了我專業(yè)知識,教會了我如何學習,教會了我如何做人。正是由于他們,我才能在各方面取得顯著的進步,在此向他們表示我由衷的謝意,并祝所有的老師培養(yǎng)出越來越多的優(yōu)秀人才,桃李滿天下。衷心感謝我的家人,他們的愛與關懷是我力量的源泉。最后,再次向所有支持和幫助過我的老師、同學表示衷心的感謝!附錄下面是Java語言為實現(xiàn)整個農業(yè)滴灌系統(tǒng)提供服務的數據結構:(1)農場實體packagecom.argejb.model.entity;importjava.io.Serializable;importjava.util.HashSet;importjava.util.Set;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.FetchType;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.OneToMany;importjavax.validation.constraints.Size;importorg.hibernate.validator.constraints.NotEmpty;@EntitypublicclassFarmimplementsSerializable{ privatestaticfinallongserialVersionUID=-5475036180850719561L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) privateLongid; @NotEmpty @Column(unique=true) @Size(min=1,max=20) privateStringfarmname; privatedoublelongitude; privatedoublelatitude; @Size(max=500) privateStringdescription; @OneToMany(fetch=FetchType.EAGER,mappedBy="farm") privateSet<FarmArea>farmAreas=newHashSet<FarmArea>(); publicLonggetId(){ returnid; } publicvoidsetId(Longid){ this.id=id; } publicStringgetFarmname(){ returnfarmname; } publicvoidsetFarmname(Stringfarmname){ this.farmname=farmname; } publicdoublegetLongitude(){ returnlongitude; } publicvoidsetLongitude(doublelongitude){ this.longitude=longitude; } publicdoublegetLatitude(){ returnlatitude; } publicvoidsetLatitude(doublelatitude){ this.latitude=latitude; } publicStringgetDescription(){ returndescription; } publicvoidsetDescription(Stringdescription){ this.description=description; } publicSet<FarmArea>getFarmAreas(){ returnfarmAreas; } publicvoidsetFarmAreas(Set<FarmArea>farmAreas){ this.farmAreas=farmAreas; } @Override publicStringtoString(){ return"Farm[id="+id+",farmname="+farmname+",longitude=" +longitude+",latitude="+latitude+",description=" +description+",farmAreas="+farmAreas.toString()+"]"; } @Override publicinthashCode(){ finalintprime=31; intresult=1; result=prime*result +((farmname==null)?0:farmname.hashCode()); result=prime*result+((id==null)?0:id.hashCode()); returnresult; } @Override publicbooleanequals(Objectobj){ if(this==obj) returntrue; if(obj==null) returnfalse; if(getClass()!=obj.getClass()) returnfalse; Farmother=(Farm)obj; if(farmname==null){ if(other.farmname!=null) returnfalse; }elseif(!farmname.equals(other.farmname)) returnfalse; if(id==null){ if(other.id!=null) returnfalse; }elseif(!id.equals(other.id)) returnfalse; returntrue; }}(2)EJB配置文件信息<?xmlversion='1.0'encoding='UTF-8'?><serverxmlns="urn:jboss:domain:1.4"><extensions><extensionmodule="org.jboss.as.clustering.infinispan"/><extensionmodule="org.jboss.as.connector"/><extension

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論