版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
長(zhǎng)江大學(xué)工程技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)題目名稱(chēng)基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)系部信息系專(zhuān)業(yè)班級(jí)計(jì)算機(jī)科學(xué)與技術(shù)61002班學(xué)生姓名指導(dǎo)教師講師輔導(dǎo)教師時(shí)間2013年9月至2014年6月基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[摘要]近幾年來(lái),人們對(duì)農(nóng)業(yè)滴灌系統(tǒng)的要求越來(lái)越高,這導(dǎo)致了傳統(tǒng)的農(nóng)業(yè)滴灌系統(tǒng)的業(yè)務(wù)持續(xù)膨脹和功能不斷增加,原有的系統(tǒng)架構(gòu)無(wú)法滿足水平和垂直擴(kuò)展,同時(shí)也難以達(dá)到性能要求。因此,需要設(shè)計(jì)出一種新型的分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)來(lái)解決這些問(wèn)題。本系統(tǒng)的研究目標(biāo)就是要提出一個(gè)在J2EE技術(shù)下構(gòu)建基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計(jì)模型和解決方案。J2EE技術(shù)提供了開(kāi)發(fā)分布式應(yīng)用的底層服務(wù)支持。本文給出了一個(gè)四層的設(shè)計(jì)模型,它包括客戶(hù)層、Web層、EJB層和數(shù)據(jù)層。以面向業(yè)務(wù)應(yīng)用系統(tǒng)的負(fù)責(zé)需求和性能為對(duì)象設(shè)計(jì)并且實(shí)現(xiàn)一套通用分布式服務(wù)框架,致力于提供高性能和透明化的RPC(RemoteProcedureCall)、基于Mysql的RDBMS(RelationalDatabaseManagementSystem)及Memcached的分布式處理方案。由于開(kāi)發(fā)多層結(jié)構(gòu)的分布式應(yīng)用系統(tǒng)的過(guò)程中,開(kāi)發(fā)人員勢(shì)必會(huì)面臨如何解決各層之間的耦合現(xiàn)象、提高整個(gè)系統(tǒng)的靈活性和運(yùn)行效率等關(guān)鍵性的問(wèn)題。為此,在設(shè)計(jì)模型中又引入了設(shè)計(jì)模式的概念。這能使新的需求功能在高版本中能快速得到響應(yīng),同時(shí)降低其對(duì)框架本身穩(wěn)定性的影響。在設(shè)計(jì)方面,遵循API(ApplicationProgrammingInterface)和擴(kuò)展接口職責(zé)單一、友好的CoC(ConventionoverConfiguration)約定和增量式擴(kuò)展等原則。在測(cè)試方面,結(jié)合版本約定進(jìn)行迭代開(kāi)發(fā)和功能回歸測(cè)試,同時(shí)對(duì)其性能進(jìn)行壓力測(cè)試。最后將該框架運(yùn)用于農(nóng)業(yè)滴灌系統(tǒng)開(kāi)發(fā)和運(yùn)營(yíng)。[關(guān)鍵詞]分布式;農(nóng)業(yè)滴灌;EJB;Memcached;Mysql;設(shè)計(jì)模式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目錄任務(wù)書(shū)……………………Ⅰ開(kāi)題報(bào)告…………………Ⅱ指導(dǎo)教師審查意見(jiàn)………………………Ⅲ評(píng)閱教師評(píng)語(yǔ)……………Ⅳ答辯會(huì)議記錄……………Ⅴ中文摘要…………………Ⅵ外文摘要…………………Ⅶ1前言……………………12選題背景……………12.1分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的概念…………12.2農(nóng)業(yè)滴灌系統(tǒng)平臺(tái)搭建………12.3現(xiàn)有農(nóng)業(yè)滴灌系統(tǒng)平臺(tái)問(wèn)題分析……………32.4課題的提出……………………52.5論文主要功能內(nèi)容與組織結(jié)構(gòu)………………63方案論證……………83.1分布式數(shù)據(jù)服務(wù)………………83.2分布式數(shù)據(jù)存儲(chǔ)………………94過(guò)程論述……………134.1系統(tǒng)總體設(shè)計(jì)…………………134.2系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)…………185結(jié)果分析………………355.1測(cè)試環(huán)境………………………355.2測(cè)試程序與測(cè)試界面設(shè)計(jì)……………………355.3測(cè)試分析項(xiàng)目結(jié)果……………426總結(jié)……………………43參考文獻(xiàn)…………………44致謝………………………45附錄………………………46基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)1前言基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)是網(wǎng)絡(luò)化、信息化、智能化等有機(jī)結(jié)合的新型滴灌平臺(tái)。分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)搭建可以提升傳統(tǒng)滴灌的效率,拓展其功能。但是,一個(gè)區(qū)域往往擁有多塊農(nóng)田,而且各個(gè)區(qū)域相對(duì)來(lái)說(shuō)比較分散,少則幾公里,多則幾十公里?,F(xiàn)有的農(nóng)業(yè)滴灌系統(tǒng),是在區(qū)域相對(duì)集中,網(wǎng)絡(luò)建設(shè)已經(jīng)相當(dāng)完善的基礎(chǔ)和前提下進(jìn)行設(shè)計(jì)開(kāi)發(fā)的,這種集中式的農(nóng)業(yè)滴灌系統(tǒng)容易產(chǎn)生信息孤島[1],在新的的環(huán)境并不適用。因此,構(gòu)建新的分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)勢(shì)在必行。本文研究了基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)解決方案。在對(duì)分布式數(shù)據(jù)服務(wù)、分布式數(shù)據(jù)存儲(chǔ)分析的基礎(chǔ)上,提出了分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)總體架構(gòu);并針對(duì)區(qū)別于集中式平臺(tái)設(shè)計(jì)遇到的一些問(wèn)題,進(jìn)行了分析并提出了解決方案;完成了分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)中接口的設(shè)計(jì),業(yè)務(wù)邏輯的實(shí)現(xiàn);構(gòu)建了分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)客戶(hù)端測(cè)試程序,并進(jìn)行了系統(tǒng)測(cè)試與結(jié)果分析。2選題背景2.1分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的概念分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)是近幾年在國(guó)內(nèi)出現(xiàn)的一個(gè)名詞,它是一個(gè)網(wǎng)絡(luò)化、信息化、智能化、高度應(yīng)用化等有機(jī)結(jié)合的新型滴灌,它是以網(wǎng)絡(luò)為基礎(chǔ),利用信息化手段和工具,實(shí)現(xiàn)從環(huán)境、資源的全部分布式化[2]。同時(shí),它是指對(duì)現(xiàn)有獨(dú)立運(yùn)行的農(nóng)業(yè)滴灌系統(tǒng)的整合,統(tǒng)一技術(shù)與規(guī)范,達(dá)到基礎(chǔ)信息的互相兼容,資源合理配置,數(shù)據(jù)共享目標(biāo)的手段。2.2農(nóng)業(yè)滴灌系統(tǒng)平臺(tái)搭建為了達(dá)到上述系統(tǒng)整合、數(shù)據(jù)共享等目標(biāo),需要建立一個(gè)統(tǒng)一的管理平臺(tái),這個(gè)平臺(tái)就稱(chēng)之為分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)。分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)功能包括:表1滴灌系統(tǒng)平臺(tái)的功能名稱(chēng)功能功能說(shuō)明分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)數(shù)據(jù)共享按照信息化標(biāo)準(zhǔn)存儲(chǔ)數(shù)據(jù)數(shù)據(jù)傳輸與交換平臺(tái)數(shù)據(jù)訪問(wèn),數(shù)據(jù)傳輸與交換統(tǒng)一門(mén)戶(hù)統(tǒng)一入口,單點(diǎn)登錄管理與控制中心核心平臺(tái)管理與維護(hù)目前,農(nóng)業(yè)滴灌系統(tǒng)一般采用三層結(jié)構(gòu)[3]體系來(lái)設(shè)計(jì),依次分別是:數(shù)據(jù)存儲(chǔ)層、業(yè)務(wù)邏輯層和表示層。數(shù)據(jù)存儲(chǔ)層保存著系統(tǒng)的各種數(shù)據(jù)信息;業(yè)務(wù)邏輯層控制系統(tǒng)的核心業(yè)務(wù),并提供數(shù)據(jù)訪問(wèn)和數(shù)據(jù)交換的接口;表示層提供人機(jī)交互的界面及系統(tǒng)專(zhuān)有的業(yè)務(wù)邏輯。其中,數(shù)據(jù)存儲(chǔ)層和業(yè)務(wù)邏輯層合在一起,統(tǒng)稱(chēng)農(nóng)業(yè)滴灌系統(tǒng)。分布式農(nóng)業(yè)滴灌系統(tǒng)結(jié)構(gòu)圖如下:氣象信息泵房能效地圖繪制滴灌控制土壤墑情氣象信息泵房能效地圖繪制滴灌控制土壤墑情表表示層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)數(shù)據(jù)存儲(chǔ)層數(shù)據(jù)存儲(chǔ)層圖1滴灌系統(tǒng)系統(tǒng)結(jié)構(gòu)(1)數(shù)據(jù)存儲(chǔ)層目前,分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的數(shù)據(jù)存儲(chǔ)層在物理上包括一臺(tái)或多臺(tái)服務(wù)器,運(yùn)行大型數(shù)據(jù)庫(kù)系統(tǒng)或者其他的數(shù)據(jù)存儲(chǔ)系統(tǒng)。分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)需要進(jìn)行共享的數(shù)據(jù),全部在平臺(tái)的數(shù)據(jù)存儲(chǔ)層保存。(2)業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層是數(shù)據(jù)存儲(chǔ)層與各種控制系統(tǒng)之間的中間層。各種業(yè)務(wù)系統(tǒng)不能直接與數(shù)據(jù)存儲(chǔ)層發(fā)生聯(lián)系,都是通過(guò)業(yè)務(wù)邏輯層的接口與數(shù)據(jù)存儲(chǔ)層進(jìn)行數(shù)據(jù)訪問(wèn)和數(shù)據(jù)交換。目前的分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的業(yè)務(wù)邏輯層在物理上是一臺(tái)或若干臺(tái)應(yīng)用服務(wù)器的集群[4],經(jīng)常使用的應(yīng)用服務(wù)器中間件有:IBM公司的Websphere、BEA公司的Weblogic、開(kāi)源項(xiàng)目的JBoss、微軟公司的.Net。2.3現(xiàn)有農(nóng)業(yè)滴灌系統(tǒng)平臺(tái)問(wèn)題分析現(xiàn)有的農(nóng)業(yè)滴灌系統(tǒng),是在區(qū)域相對(duì)集中,區(qū)域網(wǎng)絡(luò)建設(shè)已經(jīng)相當(dāng)完善的基礎(chǔ)和前提下進(jìn)行設(shè)計(jì)開(kāi)發(fā)的。在這里我們把現(xiàn)有的農(nóng)業(yè)滴灌系統(tǒng)稱(chēng)之為:集中式的農(nóng)業(yè)滴灌系統(tǒng)。但是近年來(lái)隨著農(nóng)田的不斷合并擴(kuò)充,一個(gè)區(qū)域往往擁有多塊農(nóng)田,而且各個(gè)區(qū)域相對(duì)來(lái)說(shuō)比較分散,少則幾公里,多則幾十公里。集中式的農(nóng)業(yè)滴灌系統(tǒng)在這種環(huán)境下進(jìn)行使用,就會(huì)有很大的局限性,甚至在應(yīng)用的過(guò)程中會(huì)產(chǎn)生很大的問(wèn)題。這并不奇怪,因?yàn)榄h(huán)境已經(jīng)改變了,原有的平臺(tái)并不是為這個(gè)新的環(huán)境量身定做的,當(dāng)然就不能很好的適應(yīng)新的應(yīng)用環(huán)境了。在這個(gè)新的分布式環(huán)境中,集中式的農(nóng)業(yè)滴灌系統(tǒng)主要采用兩種部署方案:(1)各個(gè)區(qū)域平臺(tái)獨(dú)立使用這是一種平行部署集中式農(nóng)業(yè)滴灌系統(tǒng)的方案,各個(gè)區(qū)域間的平臺(tái)獨(dú)立部署,獨(dú)立使用。各個(gè)區(qū)域的平臺(tái)沒(méi)有任何的耦合性和關(guān)聯(lián)性。獨(dú)立使用的滴灌系統(tǒng)平臺(tái)的結(jié)構(gòu)圖如圖所示:控制系統(tǒng)控制系統(tǒng)控制系統(tǒng)數(shù)據(jù)存儲(chǔ)層數(shù)據(jù)存儲(chǔ)層數(shù)據(jù)存儲(chǔ)層數(shù)據(jù)存儲(chǔ)層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層區(qū)域B表示層表示層區(qū)域B表示層表示層控制系統(tǒng)區(qū)域A控制系統(tǒng)區(qū)域A數(shù)據(jù)存儲(chǔ)層區(qū)域C表示層數(shù)據(jù)存儲(chǔ)層區(qū)域C表示層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層圖2獨(dú)立使用的滴灌系統(tǒng)平臺(tái)結(jié)構(gòu)圖在這種方案中,各個(gè)區(qū)域的數(shù)據(jù)和資源是獨(dú)立的。由于平臺(tái)的獨(dú)立性,不同平臺(tái)的數(shù)據(jù)無(wú)法交換共享,會(huì)產(chǎn)生更大范圍的數(shù)據(jù)信息孤島。獨(dú)立的各個(gè)區(qū)域部署滴灌系統(tǒng)的方案,值可以作為一時(shí)的權(quán)宜之計(jì),在網(wǎng)絡(luò)條件得到改善后,需要馬上采用新的方案來(lái)替代。(2)農(nóng)業(yè)滴灌系統(tǒng)的集中部署在系統(tǒng)邏輯結(jié)構(gòu)上,這種方案和一個(gè)區(qū)域的集中式農(nóng)業(yè)滴灌系統(tǒng)的部署沒(méi)什么兩樣。各個(gè)區(qū)域的廣域網(wǎng)取代了局域網(wǎng)的連接。集中部署的滴灌系統(tǒng)平臺(tái)結(jié)構(gòu)圖如下: 控制系統(tǒng)控制系統(tǒng)數(shù)據(jù)存儲(chǔ)層數(shù)據(jù)存儲(chǔ)層業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層表示層區(qū)域A表示層區(qū)域A表示層控制系統(tǒng)廣域網(wǎng)表示層控制系統(tǒng)廣域網(wǎng)區(qū)域B表示層控制區(qū)域B表示層控制系統(tǒng)區(qū)域區(qū)域C圖3集中部署的滴灌系統(tǒng)平臺(tái)從圖中可以看出,在這種方案中,區(qū)域B和區(qū)域C中的數(shù)據(jù)全部流向區(qū)域A,這給區(qū)域A造成了很大的數(shù)據(jù)壓力,若接著增加區(qū)域,區(qū)域A的數(shù)據(jù)服務(wù)和存儲(chǔ)服務(wù)很快就會(huì)癱瘓,整個(gè)系統(tǒng)的瓶頸也很快到來(lái)。2.4課題的提出根據(jù)上面分析,在多區(qū)域存在的情況下,需要設(shè)計(jì)出一種新型的分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)來(lái)解決上述的種種問(wèn)題。因此,本論文旨在設(shè)計(jì)一個(gè)以分布式平臺(tái)為基礎(chǔ)的新型的農(nóng)業(yè)滴灌系統(tǒng)。這個(gè)平臺(tái)既平行分布于各個(gè)區(qū)域,平臺(tái)之間又有一定聯(lián)系,各個(gè)區(qū)域內(nèi)大量的數(shù)據(jù)的訪問(wèn)和交換通過(guò)網(wǎng)絡(luò)來(lái)進(jìn)行。由于這個(gè)新型平臺(tái)的分布式的特點(diǎn),所以稱(chēng)之為分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)。對(duì)比于集中式的農(nóng)業(yè)滴灌系統(tǒng),設(shè)計(jì)和實(shí)現(xiàn)分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng),需要解決很多難題,主要有下面幾點(diǎn):(1)數(shù)據(jù)透明性設(shè)計(jì)系統(tǒng)中數(shù)據(jù)存儲(chǔ)層的數(shù)量不再是一個(gè),其數(shù)量應(yīng)等同于區(qū)域的數(shù)量。在設(shè)計(jì)期無(wú)法預(yù)知區(qū)域的實(shí)際數(shù)量,因此數(shù)據(jù)存儲(chǔ)層的數(shù)量也就不能確定,這給業(yè)務(wù)邏輯層的設(shè)計(jì)增加了很大的復(fù)雜度,應(yīng)用軟件的設(shè)計(jì)和編制上也就產(chǎn)生了很大的不確定性。數(shù)據(jù)存儲(chǔ)層需要提供給業(yè)務(wù)邏輯層一定程度的透明性,業(yè)務(wù)邏輯層需要提供給表示層完全的透明性才能解決這一問(wèn)題。因此如何解決好兩個(gè)層次的透明性,在新的分布式平臺(tái)設(shè)計(jì)者將是一個(gè)重點(diǎn)。(2)冗余數(shù)據(jù)的設(shè)計(jì)由于有多個(gè)數(shù)據(jù)存儲(chǔ)層,而且新平臺(tái)的設(shè)計(jì)目標(biāo)之一是減少?gòu)V域網(wǎng)的數(shù)據(jù)交換量,這就需要設(shè)計(jì)一定量的冗余數(shù)據(jù)。但如果冗余數(shù)據(jù)過(guò)于泛濫,會(huì)導(dǎo)致上面分析的方案一中的情況發(fā)生,大量產(chǎn)生數(shù)據(jù)二義性的現(xiàn)象;如果冗余數(shù)據(jù)設(shè)計(jì)的過(guò)少,必然還會(huì)產(chǎn)生大量數(shù)據(jù)通過(guò)廣域網(wǎng)進(jìn)行訪問(wèn)交換的情況。因此,如何合理的設(shè)計(jì)冗余數(shù)據(jù)是分布式平臺(tái)設(shè)計(jì)中的另一個(gè)重點(diǎn)。綜上所述,分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)是一個(gè)巨大的挑戰(zhàn),也是一種全新的嘗試。本論文將以用戶(hù)數(shù)據(jù)分析要點(diǎn)來(lái)解決分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)設(shè)計(jì)中面臨的上述問(wèn)題,論文工作也將為類(lèi)似分布式系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)提供借鑒。2.5論文主要功能內(nèi)容與組織結(jié)構(gòu)2.5.1論文主要工作內(nèi)容論文工作基于分布式服務(wù)、分布式存儲(chǔ),主要工作內(nèi)容包括:(1)研究了分布式服務(wù)技術(shù)與分布式存儲(chǔ);(2)分析了分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的透明性特點(diǎn),完成了各種數(shù)據(jù)對(duì)象及各種應(yīng)用接口的設(shè)計(jì)實(shí)現(xiàn)工作;(3)構(gòu)建了農(nóng)業(yè)滴灌系統(tǒng)客戶(hù)端程序,并進(jìn)行了系統(tǒng)測(cè)試與分析。2.5.2論文組織結(jié)構(gòu)第一章:闡述論文工作背景與研究意義,并進(jìn)行相關(guān)文獻(xiàn)綜述。第二章:首先簡(jiǎn)要介紹了農(nóng)業(yè)滴灌系統(tǒng)研究現(xiàn)狀,分析了現(xiàn)有農(nóng)業(yè)滴灌系統(tǒng)中存在的問(wèn)題;進(jìn)而提出了設(shè)計(jì)新的分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng),對(duì)現(xiàn)實(shí)難點(diǎn)進(jìn)行了分析;最后給出了論文的主要工作內(nèi)容以及論文的章節(jié)安排。第三章:深入分析研究了相關(guān)的關(guān)鍵技術(shù),是整個(gè)論文的技術(shù)支撐。第四章:提出系統(tǒng)的總體設(shè)計(jì)方案。第五章:通過(guò)對(duì)用戶(hù)數(shù)據(jù)透明性分析,設(shè)計(jì)并實(shí)現(xiàn)了系統(tǒng)的數(shù)據(jù)接口。研究了分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的數(shù)據(jù)分布特點(diǎn),提出了數(shù)據(jù)遷移的規(guī)則和算法,并在分布式平臺(tái)中加以實(shí)現(xiàn)。第六章:在局域網(wǎng)與廣域網(wǎng)中對(duì)所設(shè)計(jì)實(shí)現(xiàn)的分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)進(jìn)行了測(cè)試與分析。最后,對(duì)論文工作進(jìn)行了全面總結(jié)與展望。整個(gè)論文的正文框架如圖4所示。第四章結(jié)果論述第五章結(jié)果分析第六章結(jié)論或總結(jié)第三章方案論證第二章選題背景第一章前言第四章結(jié)果論述第五章結(jié)果分析第六章結(jié)論或總結(jié)第三章方案論證第二章選題背景第一章前言圖4論文框架結(jié)構(gòu)整個(gè)論文的功能圖如圖5所示:分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)作物長(zhǎng)勢(shì)泵房能效作物長(zhǎng)勢(shì)泵房能效導(dǎo)入配置信息保存配置信息氣象顯示土壤墑情滴灌控制地圖繪制導(dǎo)入配置信息保存配置信息氣象顯示土壤墑情滴灌控制地圖繪制采集硬件信息采集硬件信息圖5論文功能結(jié)構(gòu)3方案論證3.1分布式數(shù)據(jù)服務(wù)技術(shù)是為客戶(hù)需求而服務(wù)的,分布式服務(wù)框架也同樣如此,它不是憑空誕生的也是因?yàn)橛羞@樣的需求才會(huì)有分布式服務(wù)框架這樣的東西誕生;本論文的分布式數(shù)據(jù)服務(wù)面向三個(gè)方面:移動(dòng)客戶(hù)端、桌面電腦和瀏覽器。服務(wù)采用EJB組件[5],EJB是EnterpriseJavaBean的簡(jiǎn)稱(chēng)。EJB是sun的服務(wù)器端組建模型,設(shè)計(jì)目標(biāo)與核心應(yīng)用是部署分布式應(yīng)用程序。憑借Java跨平臺(tái)的優(yōu)勢(shì),用EJB技術(shù)部署的分布式系統(tǒng)可以不限于特定的平臺(tái)。EJB是J2EE的一部分,定義了一個(gè)用于開(kāi)發(fā)基于組件的企業(yè)多重應(yīng)用程序的標(biāo)準(zhǔn)。在J2EE里,EJB稱(chēng)為Java企業(yè)Bean,是Java的核心代碼,分別是會(huì)話Bean(SessionBean),實(shí)體Bean(EntityBean)和消息驅(qū)動(dòng)Bean(MessageDrivenBean)。SessionBean用于實(shí)現(xiàn)業(yè)務(wù)邏輯,它可以是有狀態(tài)的,也可以是無(wú)狀態(tài)的。每當(dāng)客戶(hù)端請(qǐng)求時(shí),容器就會(huì)選擇一個(gè)SessionBean來(lái)為客戶(hù)端服務(wù)。SessionBean可以直接訪問(wèn)數(shù)據(jù)庫(kù),但更多時(shí)候,它會(huì)通過(guò)EntityBean實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)。EntityBean是域模型對(duì)象,用于實(shí)現(xiàn)O/R映射,負(fù)責(zé)將數(shù)據(jù)庫(kù)中的表記錄映射為內(nèi)存中的Entity對(duì)象,事實(shí)上,創(chuàng)建一個(gè)EntityBean對(duì)象相當(dāng)于新建一條記錄,刪除一個(gè)EntityBean會(huì)同時(shí)從數(shù)據(jù)庫(kù)中刪除對(duì)應(yīng)記錄,修改一個(gè)EntityBean時(shí),容器會(huì)自動(dòng)將EntityBean的狀態(tài)和數(shù)據(jù)庫(kù)同步。MessageDrivenBean是EJB2.0中引入的新的企業(yè)Bean,它基于JMS消息,只能接收客戶(hù)端發(fā)送的JMS消息然后處理。MDB實(shí)際上是一個(gè)異步的無(wú)狀態(tài)SessionBean,客戶(hù)端調(diào)用MDB后無(wú)需等待,立刻返回,MDB將異步處理客戶(hù)請(qǐng)求。這適合于需要異步處理請(qǐng)求的場(chǎng)合,比如訂單處理,這樣就能避免客戶(hù)端長(zhǎng)時(shí)間的等待一個(gè)方法調(diào)用直到返回結(jié)果。本系統(tǒng)中提供給移動(dòng)客戶(hù)端、桌面電腦和瀏覽器的核心服務(wù)采用EJB組件,部分框架圖如下:EJBEJB服務(wù)JMSWEB服務(wù)JMSWEB服務(wù)GrizzlyGrizzly服務(wù)智能手機(jī)智能手機(jī)PC機(jī)PC機(jī)Web瀏覽器圖6EJB服務(wù)框架圖3.2分布式數(shù)據(jù)存儲(chǔ)本論文的存儲(chǔ)[7]采用分布式的方式,存儲(chǔ)類(lèi)型在本系統(tǒng)中采用兩種類(lèi)型:MySQL數(shù)據(jù)庫(kù)和Memcached。EJB服務(wù)EJB服務(wù) MemcachedMySQLMemcachedMySQL圖7存儲(chǔ)服務(wù)框架圖3.2.1MySQL數(shù)據(jù)庫(kù)MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在WEB應(yīng)用方面MySQL是最好的RDBMS[8-10](RelationalDatabaseManagementSystem:關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件之一。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。MySQL所使用的SQL語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。與其他的大型數(shù)據(jù)庫(kù)例如Oracle、DB2、SqlServer等相比,MySQL自有它的不足之處,但是這絲毫也沒(méi)用減少它受歡迎的程度。對(duì)于一般的個(gè)人使用者和中小型企業(yè)來(lái)說(shuō),MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開(kāi)放源碼軟件,因此可以大大降低總體擁有成本。Linux作為操作系統(tǒng),Apache和Nginx作為Web服務(wù)器,MySQL作為數(shù)據(jù)庫(kù),PHP/Perl/Python作為服務(wù)器端腳本解釋器。由于這四個(gè)軟件都是免費(fèi)或開(kāi)放源碼軟件(FLOSS),因此使用這種方式不用花一分錢(qián)(除開(kāi)人工成本)就可以搭建起一個(gè)穩(wěn)定、免費(fèi)的網(wǎng)站系統(tǒng),被業(yè)界稱(chēng)為L(zhǎng)AMP組合。3.2.2MySQL數(shù)據(jù)庫(kù)的特性(1)使用C和C++編寫(xiě),并使用了多種編譯器進(jìn)行測(cè)試,保證源代碼的可移植性。(2)支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多種操作系統(tǒng)。(3)為多種編程語(yǔ)言提供了API。這些編程語(yǔ)言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。(4)支持多線程,充分利用CPU資源。(5)優(yōu)化的SQL查詢(xún)算法,有效地提高查詢(xún)速度。(6)既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶(hù)端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫(kù)而嵌入到其他的軟件中。(7)提供多語(yǔ)言支持,常見(jiàn)的編碼如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。(8)提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫(kù)連接途徑。(9)提供用于管理、查詢(xún)、優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具。(10)支持大型數(shù)據(jù)庫(kù)??梢蕴幚?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)。(11)支持多種存儲(chǔ)引擎。(12)MySQL是開(kāi)源的,所以你不需要支付額外的費(fèi)用。(13)MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語(yǔ)言形式。(14)MySQL是可以定制的,采用了GPL協(xié)議,你可以修改源碼來(lái)開(kāi)發(fā)自己的MySQL系統(tǒng)。3.2.3MemcachedMemcached是一個(gè)高性能[11]的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫(kù)負(fù)載。它通過(guò)在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來(lái)減少讀取數(shù)據(jù)庫(kù)次數(shù),從而提高動(dòng)態(tài)、數(shù)據(jù)庫(kù)驅(qū)動(dòng)網(wǎng)站的速度。Memcached基于一個(gè)存儲(chǔ)鍵/值對(duì)的hashmap。其守護(hù)進(jìn)程(daemon)是用C寫(xiě)的,但是客戶(hù)端可以用任何語(yǔ)言來(lái)編寫(xiě),并通過(guò)Memcached協(xié)議與守護(hù)進(jìn)程通信。Memcached是一套分布式的快取系統(tǒng),當(dāng)初是DangaInteractive為了LiveJournal所發(fā)展的,但被許多軟件所使用。這是一套開(kāi)放源碼軟件,以BSDlicense授權(quán)協(xié)議發(fā)布。Memcached缺乏認(rèn)證以及安全管理,這代表應(yīng)該將Memcached服務(wù)器放置在防火墻后。Memcached的API使用32位元的循環(huán)冗余校驗(yàn)(CRC-32)計(jì)算鍵值后,將資料分散在不同的機(jī)器上。當(dāng)表格滿了以后,接下來(lái)新增的資料會(huì)以LRU機(jī)制替換掉。由于Memcached通常只是當(dāng)作快取系統(tǒng)使用,所以使用Memcached的應(yīng)用程式在寫(xiě)回較慢的系統(tǒng)時(shí)(像后端的數(shù)據(jù)庫(kù))需要額外的程式碼更新Memcached內(nèi)的資料。Memcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric為首開(kāi)發(fā)的一款軟件。已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務(wù)中提高Web應(yīng)用擴(kuò)展性的重要因素。許多Web應(yīng)用都將數(shù)據(jù)保存到RDBMS中,應(yīng)用服務(wù)器從中讀取數(shù)據(jù)并在瀏覽器中顯示。但隨著數(shù)據(jù)量的增大、訪問(wèn)的集中,就會(huì)出現(xiàn)RDBMS的負(fù)擔(dān)加重、數(shù)據(jù)庫(kù)響應(yīng)惡化、網(wǎng)站顯示延時(shí)等重大影響[12]。這時(shí)就該Memcached大顯身手了。Memcached是高性能你的分布式內(nèi)存緩存服務(wù)器。一般的使用目的是,通過(guò)緩存數(shù)據(jù)庫(kù)查詢(xún)結(jié)果,減少數(shù)據(jù)庫(kù)訪問(wèn)次數(shù),以提高動(dòng)態(tài)Web應(yīng)用的速度、提高可擴(kuò)展性[13-16]。3.2.4Memcached特性(1)高性能:當(dāng)傳統(tǒng)數(shù)據(jù)庫(kù)面臨大規(guī)模數(shù)據(jù)訪問(wèn)時(shí),磁盤(pán)I/O往往成為性能瓶頸,從而導(dǎo)致過(guò)高的響應(yīng)延遲。分布式緩存將高速內(nèi)存作為數(shù)據(jù)對(duì)象的存儲(chǔ)介質(zhì),數(shù)據(jù)以key/value形式存儲(chǔ),理想情況下可以獲得DRAM(DynamicRandomAccessMemory)級(jí)的讀寫(xiě)性能。(2)動(dòng)態(tài)擴(kuò)展性:支持彈性擴(kuò)展,通過(guò)動(dòng)態(tài)增加或減少節(jié)點(diǎn)應(yīng)對(duì)變化的數(shù)據(jù)訪問(wèn)負(fù)載,提供可預(yù)測(cè)的性能與擴(kuò)展性;同時(shí),最大限度地提供資源利用率。(3)高可用性:可用性包含數(shù)據(jù)可用性與服務(wù)可用性?xún)煞矫妗;谌哂鄼C(jī)制實(shí)現(xiàn)高可用性,無(wú)單點(diǎn)失效(singlepointoffailure),支持故障的自動(dòng)發(fā)現(xiàn),透明地實(shí)施故障切換,不會(huì)因服務(wù)器故障而導(dǎo)致緩存服務(wù)中斷或數(shù)據(jù)丟失。動(dòng)態(tài)擴(kuò)展時(shí)自動(dòng)均衡數(shù)據(jù)分區(qū),同時(shí)保障緩存服務(wù)持續(xù)可用。(4)易用性:提供單一的數(shù)據(jù)與管理視圖,API接口簡(jiǎn)單,且與拓?fù)浣Y(jié)構(gòu)無(wú)關(guān);動(dòng)態(tài)擴(kuò)展或失效恢復(fù)時(shí)無(wú)需人工配制,自動(dòng)選取備份節(jié)點(diǎn),多數(shù)緩存系統(tǒng)提供了圖形化的管理控制臺(tái),便于統(tǒng)一維護(hù)。3.2.5Memcached應(yīng)用場(chǎng)景(1)頁(yè)面緩存:用來(lái)緩存web頁(yè)面的內(nèi)容片段,包括HTML、CSS和圖片等,多應(yīng)用于社交網(wǎng)站等。(2)應(yīng)用對(duì)象緩存:緩存系統(tǒng)作為ORM框架的二級(jí)緩存對(duì)外提供服務(wù),目的是減輕數(shù)據(jù)庫(kù)的負(fù)載壓力,加速應(yīng)用訪問(wèn)。(3)狀態(tài)緩存:緩存包括session會(huì)話狀態(tài)及應(yīng)用橫向擴(kuò)展時(shí)的狀態(tài)數(shù)據(jù)等,這類(lèi)數(shù)據(jù)一般是難以恢復(fù)的,對(duì)可用性要求較高,多應(yīng)用于高可用集群。(4)并行處理:通常涉及大量中間計(jì)算結(jié)果需要共享。(5)事件處理:分布式緩存提供了針對(duì)事件流的連續(xù)查詢(xún)處理技術(shù),滿足實(shí)時(shí)性需求。(6)極限事務(wù)處理:分布式緩存為事務(wù)型應(yīng)用提供高吞吐率、低延時(shí)的解決方案,支持高并發(fā)事務(wù)請(qǐng)求處理,多應(yīng)用于鐵路、金融服務(wù)和電信等領(lǐng)域。4過(guò)程論述4.1系統(tǒng)的總體設(shè)計(jì)4.1.1系統(tǒng)的總體架構(gòu) 基于前面的分析,論文給出了分布式平臺(tái)的農(nóng)業(yè)滴灌的總體架構(gòu)。如圖8所示,分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)采用了平行的三(N)層架構(gòu)體系。這個(gè)平臺(tái)分為兩部分:一是分布式數(shù)據(jù)存儲(chǔ)為主體的數(shù)據(jù)層,二是基于J2EE的分布式數(shù)據(jù)服務(wù)的業(yè)務(wù)邏輯層。基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的總體架構(gòu)圖如下所示: 圖8分布式滴灌系統(tǒng)總體架構(gòu)從圖8可以看出,基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)與基于集中式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)有下面相同點(diǎn):(1)表示層的各個(gè)系統(tǒng)與單獨(dú)的一個(gè)平臺(tái)進(jìn)行連接,并不需要連接其他區(qū)域的平臺(tái)。這樣就沒(méi)有增加原有的表示層各個(gè)系統(tǒng)的復(fù)雜性,原有的系統(tǒng)幾乎可以在不改變的情況下加入到新的系統(tǒng)中。(2)數(shù)據(jù)的訪問(wèn)和交換均通過(guò)平臺(tái)的業(yè)務(wù)邏輯層來(lái)完成,所以它們不需要了解所有請(qǐng)求數(shù)據(jù)的實(shí)際位置。在整個(gè)系統(tǒng)的架構(gòu)上依然具有比較優(yōu)良的透明性。經(jīng)過(guò)對(duì)基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)和基于集中式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)在網(wǎng)絡(luò)架構(gòu)、數(shù)據(jù)交換流程進(jìn)行分析后,發(fā)現(xiàn)二者又有著顯著的區(qū)別:(1)基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)在各個(gè)區(qū)域均可部署平臺(tái),各個(gè)平臺(tái)通過(guò)廣域網(wǎng)進(jìn)行連接;基于集中式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的平臺(tái)在一個(gè)區(qū)域部署;(2)基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的各個(gè)區(qū)域中的系統(tǒng)與各自區(qū)域的平臺(tái)連接,二者間的數(shù)據(jù)交換可通過(guò)局域網(wǎng)(或廣域網(wǎng))來(lái)進(jìn)行;基于集中式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)中的各個(gè)區(qū)域中的系統(tǒng)與統(tǒng)一的平臺(tái)連接,與平臺(tái)在一個(gè)區(qū)域的各個(gè)系統(tǒng)與平臺(tái)通過(guò)局域網(wǎng)進(jìn)行數(shù)據(jù)交換,其他區(qū)域的系統(tǒng)通過(guò)廣域網(wǎng)與平臺(tái)進(jìn)行數(shù)據(jù)交換;(3)在基于分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)中,在各個(gè)平臺(tái)通過(guò)區(qū)域間的廣域網(wǎng)來(lái)進(jìn)行數(shù)據(jù)交換;在基于集中式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)中,其他區(qū)域與平臺(tái)請(qǐng)求、交換數(shù)據(jù)均通過(guò)廣域網(wǎng)進(jìn)行。4.1.2數(shù)據(jù)存儲(chǔ)層的設(shè)計(jì)數(shù)據(jù)存儲(chǔ)層的設(shè)計(jì)是本論文一大核心,數(shù)據(jù)存儲(chǔ)層設(shè)計(jì)好壞直接影響系統(tǒng)的穩(wěn)定性;同時(shí),也會(huì)對(duì)業(yè)務(wù)邏輯層的透明性造成一定的影響,為了降低業(yè)務(wù)邏輯層軟件的設(shè)計(jì)復(fù)雜性,在數(shù)據(jù)層為業(yè)務(wù)邏輯層盡量提供分段透明性。本系統(tǒng)的服務(wù)對(duì)象是農(nóng)田、溫室大棚,服務(wù)區(qū)域在新疆,由于地理位置的因素,一個(gè)區(qū)域有很多兵團(tuán),一個(gè)兵團(tuán)下面管轄很多農(nóng)場(chǎng),農(nóng)場(chǎng)下面有分有若干塊農(nóng)田或大棚,所以這數(shù)據(jù)表的設(shè)計(jì)上尤為重要。因此,數(shù)據(jù)表的設(shè)計(jì)原則如下:(1)核心數(shù)據(jù)保存在MySQL數(shù)據(jù)庫(kù)[17]中,需要頻繁查詢(xún)的數(shù)據(jù)保存在Memcached中。(2)其他站點(diǎn)的MySQL數(shù)據(jù)庫(kù)作為冗余數(shù)據(jù)進(jìn)行存儲(chǔ),定期與核心數(shù)據(jù)同步更新。在系統(tǒng)中存儲(chǔ)量最大的數(shù)據(jù)就是資源數(shù)據(jù),資源數(shù)據(jù)包括結(jié)構(gòu)化的數(shù)據(jù);大部分資源數(shù)據(jù)在生成之后,在使用過(guò)程中基本上不會(huì)發(fā)生改變,所以資源數(shù)據(jù)采用在各個(gè)站點(diǎn)進(jìn)行冗余存儲(chǔ)的設(shè)計(jì)原則,即在各個(gè)站點(diǎn)擁有資源數(shù)據(jù)的完全備份。這樣做主要有下面三點(diǎn)原因:(1)就近訪問(wèn)可以得到較好的系統(tǒng)性能;(2)規(guī)避廣域網(wǎng)故障的影響;(3)存儲(chǔ)介質(zhì)相對(duì)于廣域網(wǎng)帶寬來(lái)說(shuō)比較廉價(jià)。數(shù)據(jù)存儲(chǔ)層的設(shè)計(jì)圖:數(shù)據(jù)源冗余備份MySQL核心數(shù)據(jù)頻繁查詢(xún)的數(shù)據(jù)MemcachedMySQL數(shù)據(jù)源冗余備份MySQL核心數(shù)據(jù)頻繁查詢(xún)的數(shù)據(jù)MemcachedMySQL圖9存儲(chǔ)框架圖4.1.3業(yè)務(wù)邏輯層的設(shè)計(jì)業(yè)務(wù)邏輯層是農(nóng)業(yè)滴灌系統(tǒng)架構(gòu)中最能體現(xiàn)核心價(jià)值的部分,它集中體現(xiàn)了系統(tǒng)的業(yè)務(wù)規(guī)則的制定、業(yè)務(wù)流程的實(shí)現(xiàn)等與業(yè)務(wù)需求相關(guān)的系統(tǒng)設(shè)計(jì)。業(yè)務(wù)邏輯層在農(nóng)業(yè)滴灌系統(tǒng)中的位置非常關(guān)鍵,它處于數(shù)據(jù)存儲(chǔ)層與表示層的中間,起到了數(shù)據(jù)交換中承上啟下的作用[18]。農(nóng)業(yè)滴灌系統(tǒng)中的各個(gè)層是一種弱耦合結(jié)構(gòu),層與層之間的依賴(lài)是向下的:表示層中的各個(gè)區(qū)域的系統(tǒng)通過(guò)業(yè)務(wù)邏輯層的接口來(lái)完成數(shù)據(jù)訪問(wèn)和數(shù)據(jù)交換的過(guò)程;業(yè)務(wù)邏輯層對(duì)于表示層來(lái)說(shuō)是“透明”的,改變表示層中的各個(gè)控制化系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)對(duì)于其調(diào)用的業(yè)務(wù)邏輯層而言沒(méi)有任何影響。農(nóng)業(yè)滴灌系統(tǒng)的業(yè)務(wù)邏輯層需要與數(shù)據(jù)存儲(chǔ)層通信。在本論文實(shí)現(xiàn)的分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)中采用業(yè)界流行的Hibernate框架構(gòu)建的數(shù)據(jù)訪問(wèn)層來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。在整體架構(gòu)上,數(shù)據(jù)訪問(wèn)層可以看作業(yè)務(wù)邏輯層的一部分,是業(yè)務(wù)邏輯層的最靠近數(shù)據(jù)庫(kù)的部分。為了使控制業(yè)務(wù)邏輯中控制業(yè)務(wù)規(guī)則、業(yè)務(wù)流程的部分與數(shù)據(jù)訪問(wèn)層實(shí)現(xiàn)弱依賴(lài),數(shù)據(jù)訪問(wèn)層引入接口工作集和設(shè)計(jì)模式中的工廠模式。在所有的業(yè)務(wù)流程模塊中對(duì)數(shù)據(jù)訪問(wèn)層的數(shù)據(jù)對(duì)象的調(diào)用,都采用面向?qū)ο笳Z(yǔ)言中的多態(tài)原理和抽象接口技術(shù)。先定義出抽象的數(shù)據(jù)接口對(duì)象,然后使用工廠對(duì)象中的工廠方法創(chuàng)建出具體的數(shù)據(jù)對(duì)象。在農(nóng)業(yè)滴灌系統(tǒng)中業(yè)務(wù)邏輯層與表示層要實(shí)現(xiàn)弱耦合結(jié)構(gòu)。業(yè)務(wù)邏輯層最理想的方式是面向接口設(shè)計(jì)。在面向接口設(shè)計(jì)的系統(tǒng)中,系統(tǒng)的功能是由各個(gè)層來(lái)協(xié)作完成,各個(gè)層次中如果實(shí)現(xiàn)自身的業(yè)務(wù)流程對(duì)整個(gè)系統(tǒng)框架來(lái)說(shuō)不再重要,而各個(gè)層次間的協(xié)作關(guān)系則成為系統(tǒng)設(shè)計(jì)的關(guān)鍵。由于采用面向接口的設(shè)計(jì),農(nóng)業(yè)滴灌系統(tǒng)由于升級(jí)換代而產(chǎn)生的表示層中的發(fā)生改變,業(yè)務(wù)邏輯層中的實(shí)現(xiàn)是完全不用改變的。不同區(qū)域中使用的各個(gè)控制化系統(tǒng)的建設(shè)情況十分復(fù)雜,具體的實(shí)現(xiàn)技術(shù)也是不一而同。數(shù)據(jù)邏輯層提供的接口是標(biāo)準(zhǔn)技術(shù)規(guī)范,才能方便的把各式各樣的系統(tǒng)進(jìn)行整合。目前,EJB是標(biāo)準(zhǔn)的接口技術(shù),絕大多數(shù)的技術(shù)框架均提供對(duì)它的支持[19]。因此業(yè)務(wù)邏輯層的接口發(fā)布技術(shù)采用EJB[20]對(duì)其接口進(jìn)行發(fā)布。在EJB的配置文件standalone.xml中進(jìn)行配置就可以完成其接口的發(fā)布功能,下面是在EJB服務(wù)器中的配置:(1)添加security-realm,安全域(即表示如果使用這個(gè)安全域的話,就使用這個(gè)域的密碼)<security-realmname="ejb-security-realm"> <server-identities> <secretvalue="c21hcnRsYWI0MTEq"/> </server-identities></security-realm>(2)在配置中新建一個(gè)外連接實(shí)例,將安全域與遠(yuǎn)程地址配置關(guān)聯(lián)起來(lái)<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>這個(gè)遠(yuǎn)程連接實(shí)例“remote-ejb-connection”將上述所配置的連接與安全域聯(lián)系在一起,并且使用EJB服務(wù)器創(chuàng)建的applicationuser:ejb。最后這個(gè)連接實(shí)例隨著Web服務(wù)器程序的啟動(dòng)而啟動(dòng)。由于配置安全域的賬號(hào)和密碼是在EJB服務(wù)器那里申請(qǐng),配置完Web服務(wù)器后,Web服務(wù)器就可以獲得訪問(wèn)EJB服務(wù)器的權(quán)限。業(yè)務(wù)邏輯層的設(shè)計(jì)框架圖:向向EJB服務(wù)器申請(qǐng)?jiān)L問(wèn)的權(quán)限EJBEJB服務(wù)Web服務(wù)EJB服務(wù)器授權(quán)給Web服務(wù)EJB服務(wù)器授權(quán)給Web服務(wù)器圖10業(yè)務(wù)框架圖4.2系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)4.2.1用戶(hù)表的設(shè)計(jì)用戶(hù)表保存有登錄用戶(hù)的ID、密碼、身份、權(quán)限等信息。用戶(hù)表的表結(jié)構(gòu)定義為:表2用戶(hù)表結(jié)構(gòu)序號(hào)字段名稱(chēng)類(lèi)型長(zhǎng)度空否主鍵說(shuō)明1IDINTY用戶(hù)代碼2CNAMEVARCHAR20用戶(hù)姓名3STATUSCHAR1用戶(hù)狀態(tài)4SEXCHAR1性別5CRDATEDATE創(chuàng)建日期6CADATEDATE注銷(xiāo)日期7IDCARDVARCHAR24身份證號(hào)8PWDVARCHAR32用戶(hù)密碼(1)實(shí)現(xiàn)功能用戶(hù)創(chuàng)建接口提供創(chuàng)建用戶(hù)的服務(wù),將客戶(hù)端傳入的用戶(hù)數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中。調(diào)用這個(gè)接口的客戶(hù)端軟件有可能是PC版的控制系統(tǒng),可能是Web版的注冊(cè),也有可能是移動(dòng)端。(2)設(shè)計(jì)思路 從本系統(tǒng)的角度出發(fā),用戶(hù)創(chuàng)建接口是一個(gè)局部應(yīng)用。它只是訪問(wèn)和接口所在的應(yīng)用服務(wù)器,接口的參數(shù)是用戶(hù)的數(shù)據(jù)結(jié)構(gòu),如果用戶(hù)數(shù)據(jù)創(chuàng)建成功,則返回新創(chuàng)建的用戶(hù)代碼,失敗則返回相應(yīng)異常。(3)主要程序?qū)崿F(xiàn)描述,用戶(hù)創(chuàng)建接口流程圖如下:開(kāi)始開(kāi)始返回登錄狀態(tài)寫(xiě)日志返回登錄狀態(tài)寫(xiě)日志客戶(hù)調(diào)用客戶(hù)調(diào)用CreateUser檢查傳入數(shù)據(jù)結(jié)構(gòu)不合法檢查傳入數(shù)據(jù)結(jié)構(gòu)不合法合法合法執(zhí)行sql執(zhí)行sql語(yǔ)句成功成功寫(xiě)日志寫(xiě)日志返回登錄狀態(tài)返回登錄狀態(tài)圖11用戶(hù)創(chuàng)建接口流程圖在Java的代碼中使用throw語(yǔ)句直接拋出異常,異常拋出后中斷了函數(shù)調(diào)用,直接返回到被調(diào)用代碼處。這個(gè)特性在遠(yuǎn)程調(diào)用的Web服務(wù)中的函數(shù)也不例外。異常拋出后,直接返回到調(diào)用函數(shù),調(diào)用函數(shù)對(duì)異常進(jìn)行處理,如果調(diào)用函數(shù)沒(méi)有對(duì)該異常進(jìn)行處理,異常會(huì)再次被拋出,一直到有代碼對(duì)它進(jìn)行了處理。由于EJB中有自帶的事務(wù)機(jī)制,它能夠在操作中對(duì)異常進(jìn)行處理,做相應(yīng)的提交或回滾。認(rèn)證登錄日志表記錄登錄用戶(hù)ID,登錄時(shí)間、認(rèn)證登錄地點(diǎn)(IP地址)、是否認(rèn)證登錄成功標(biāo)示等等。在各個(gè)數(shù)據(jù)庫(kù)(將來(lái)拓展為站點(diǎn))均有相同結(jié)構(gòu)的認(rèn)證登錄日志表。在某個(gè)區(qū)域進(jìn)行過(guò)登錄的用戶(hù),不論登錄成功與否,應(yīng)用系統(tǒng)均記錄該次認(rèn)證或登錄的情況。認(rèn)證登錄日志表的表結(jié)構(gòu)設(shè)計(jì)為:表3認(rèn)證登錄日志表結(jié)構(gòu)序號(hào)字段名類(lèi)型大小主鍵外鍵說(shuō)明1IDINTY主鍵2USRIDINTY用戶(hù)代碼3INSTIMEDATA登錄時(shí)間4OPTIPVARCHAR100登錄IP5LGNSTATUSCHAR1用戶(hù)狀態(tài)由于采用EJB編寫(xiě),EJB中集成了Hibernate框架,使用Hibernate框架操作用戶(hù)對(duì)象;如果用戶(hù)數(shù)據(jù)不存在,寫(xiě)登錄日志表,返回登錄失敗。如果用戶(hù)數(shù)據(jù)存在,寫(xiě)登錄日志表,筆記輸入的用戶(hù)賬號(hào)和密碼和數(shù)據(jù)庫(kù)中保存的用戶(hù)賬號(hào)和密碼是否一致,如果一致,返回登錄成功;如果不一致,返回登錄不成功。認(rèn)證流程圖如圖所示:開(kāi)始開(kāi)始 查詢(xún)備份數(shù)據(jù)庫(kù)查詢(xún)用戶(hù)是否存在查詢(xún)備份數(shù)據(jù)庫(kù)查詢(xún)用戶(hù)是否存在寫(xiě)登錄日志表寫(xiě)登錄日志表寫(xiě)登錄日志表是否存在檢查密碼寫(xiě)登錄日志表寫(xiě)登錄日志表寫(xiě)登錄日志表是否存在檢查密碼失敗失敗成功成功拋出響應(yīng)異常構(gòu)造用戶(hù)對(duì)象拋出響應(yīng)異常拋出響應(yīng)異常構(gòu)造用戶(hù)對(duì)象拋出響應(yīng)異常開(kāi)始開(kāi)始圖12認(rèn)證接口流程4.2.2基本信息類(lèi)表結(jié)構(gòu)1預(yù)警聯(lián)系人表(1)預(yù)警聯(lián)系人表用于存儲(chǔ)接收預(yù)警信息的相關(guān)人員信息。(2)表標(biāo)識(shí):XJ_PREWARMAN_B。(3)表編號(hào):XJ_002_0001。表4序號(hào)字段名字段標(biāo)識(shí)類(lèi)型及長(zhǎng)度是否允許空值計(jì)量單位主鍵序號(hào)1姓名NAMEC(10)N12電話TELC(15)N3職務(wù)DUTYC(30)N4行政區(qū)劃名稱(chēng)ADMNAMEC(30)N5行政區(qū)劃代碼ADMCODEC(30)N2灌溉設(shè)備配置表(1)灌溉設(shè)備配置表用于存儲(chǔ)灌溉設(shè)備對(duì)應(yīng)的實(shí)際地塊信息。(2)表標(biāo)識(shí):XJ_CONFIGURATION_B。(3)表編號(hào):XJ_002_0002。表5序號(hào)字段名字段標(biāo)識(shí)類(lèi)型及長(zhǎng)度是否允許空值計(jì)量單位主鍵序號(hào)1設(shè)備編號(hào)C(30)N12設(shè)備名稱(chēng)C(30)N3設(shè)備序列號(hào)C(30)N4設(shè)備大類(lèi)C(30)N5供電方式C(30)N6設(shè)備型號(hào)C(30)N7設(shè)備IMSIC(30)N8購(gòu)買(mǎi)時(shí)間C(30)N9生效時(shí)間C(30)N10服務(wù)到期時(shí)間C(10)N11經(jīng)度C(30)N12設(shè)備使用狀態(tài)C(10)N13緯度C(30)N14父設(shè)備編號(hào)C(30)N15組態(tài)圖地址C(30)N16項(xiàng)目IDC(50)N17手機(jī)號(hào)碼C(30)N18備注C(50)19設(shè)備地址C(30)N20顯示名稱(chēng)C(30)N21應(yīng)用類(lèi)型C(30)N22轉(zhuǎn)發(fā)設(shè)備地址C(30)N23轉(zhuǎn)發(fā)通道序號(hào)C(30)N24設(shè)備C(30)N25業(yè)務(wù)信息C(30)N26基本信息C(30)N27GPRSC(10)N28類(lèi)型編號(hào)C(30)N29網(wǎng)關(guān)列表C(30)N3灌溉流程配置表(1)灌溉流程配置表用于存儲(chǔ)灌溉設(shè)備控制灌溉的流程信息。(2)表標(biāo)識(shí):XJ_PROCONF_B。(3)表編號(hào):XJ_002_0003。表6序號(hào)字段名字段標(biāo)識(shí)類(lèi)型及長(zhǎng)度是否允許空值計(jì)量單位主鍵序號(hào)1設(shè)備編號(hào)C(30)N12設(shè)備名稱(chēng)C(30)N3開(kāi)閥代號(hào)C(30)N4關(guān)閥代號(hào)C(30)N5開(kāi)閥通道C(30)N6關(guān)閥通道C(30)N7類(lèi)型C(30)N8開(kāi)閥指令C(30)N9關(guān)閥指令C(30)N10閥編號(hào)C(10)N11閥名稱(chēng)C(30)N12上報(bào)狀態(tài)位C(10)N13報(bào)警通道序號(hào)C(30)N4輪灌組配置表(1)輪灌組配置表用于存儲(chǔ)整個(gè)項(xiàng)目的輪灌方式。(2)表標(biāo)識(shí):XJ_RATIRRGRO_B。(3)表編號(hào):XJ_002_0004。表7序號(hào)字段名字段標(biāo)識(shí)類(lèi)型及長(zhǎng)度是否允許空值計(jì)量單位主鍵序號(hào)1名稱(chēng)C(30)N12項(xiàng)目外鍵C(30)N3編號(hào)C(30)N4序號(hào)C(20)N5灌溉種植配置表(1)灌溉種植配置表用于存儲(chǔ)灌溉設(shè)備對(duì)應(yīng)地塊的詳細(xì)信息(2)表標(biāo)識(shí):XJ_PLANTCONF_B。(3)表編號(hào):XJ_002_0005。表8序號(hào)字段名字段標(biāo)識(shí)類(lèi)型及長(zhǎng)度是否允許空值計(jì)量單位主鍵序號(hào)1編號(hào)C(30)N12閥門(mén)在用情況C(5)N3自由水頭C(30)N4閥一地塊面積C(30)N5閥二地塊面積C(30)N6閥一作物名稱(chēng)C(30)N7閥二作物名稱(chēng)C(30)N8閥一作物代碼C(30)N9閥二作物代碼C(30)N10閥一用戶(hù)信息C(50)N11閥二用戶(hù)信息C(50)N12閥一土壤類(lèi)型C(10)N13閥二土壤類(lèi)型C(10)N14閥一土壤類(lèi)型C(10)N15閥二土壤類(lèi)型C(10)N16閥一土層深度C(10)N17閥二土層深度C(10)N18閥一土層深度C(10)N19閥二土層深度C(10)N20閥一耗水系數(shù)C(10)N21閥二耗水系數(shù)C(10)N22閥一滴頭流量C(30)N23閥二滴頭流量C(30)N24閥一滴頭間距C(30)N25閥二滴頭間距C(30)N26閥一支管長(zhǎng)度C(10)N27閥二支管長(zhǎng)度C(10)N28閥一自由水頭C(30)N29閥二自由水頭C(30)N30閥一支管管徑C(30)N31閥二支管管徑C(30)N32閥一滴灌帶間距C(30)N33閥二滴灌帶間距C(30)N6設(shè)備表(1)設(shè)備表用于存儲(chǔ)灌溉設(shè)備的相關(guān)信息。(2)表標(biāo)識(shí):XJ_DEVICE_B。(3)表編號(hào):XJ_002_0006。表9序號(hào)字段名字段標(biāo)識(shí)類(lèi)型及長(zhǎng)度是否允許空值計(jì)量單位主鍵序號(hào)1設(shè)備編號(hào)C(10)N12設(shè)備名稱(chēng)C(18)N3設(shè)備序列號(hào)C(18)N4設(shè)備大類(lèi)C(18)5供電方式C(18)6設(shè)備型號(hào)C(18)N7設(shè)備IMSIC(18)8購(gòu)買(mǎi)時(shí)間C(18)9生效時(shí)間C(18)10服務(wù)到期時(shí)間C(18)11經(jīng)度C(20)N12設(shè)備使用狀態(tài)C(18)N13緯度C(20)N14父設(shè)備編號(hào)C(18)N15組態(tài)圖地址C(18)N16項(xiàng)目IDC(18)N17手機(jī)號(hào)碼C(18)N18備注C(30)19設(shè)備地址C(10)N20顯示名稱(chēng)C(18)N21應(yīng)用類(lèi)型C(10)22轉(zhuǎn)發(fā)設(shè)備地址C(10)N23轉(zhuǎn)發(fā)通道序號(hào)C(10)N24設(shè)備C(10)N25業(yè)務(wù)信息C(18)26基本信息C(18)27GPRSC(10)N28類(lèi)型編號(hào)C(10)N29網(wǎng)關(guān)列表C(10)N7項(xiàng)目表(1)項(xiàng)目表用于存儲(chǔ)灌溉項(xiàng)目的詳細(xì)信息及配置所屬該項(xiàng)目下的設(shè)備。(2)表標(biāo)識(shí):XJ_PROJECT_B。(3)表編號(hào):XJ_002_0007。 表10序號(hào)字段名字段標(biāo)識(shí)類(lèi)型及長(zhǎng)度是否允許空值計(jì)量單位主鍵序號(hào)1項(xiàng)目編號(hào)C(10)N12項(xiàng)目名稱(chēng)C(18)N3項(xiàng)目創(chuàng)建者C(10)4父項(xiàng)目編號(hào)C(10)N5項(xiàng)目創(chuàng)建時(shí)間C(18)6項(xiàng)目描述C(30)7所屬行政區(qū)劃C(18)N8項(xiàng)目類(lèi)型C(18)N9經(jīng)度C(20)N10緯度C(20)N11比例尺C(20)N12地圖類(lèi)型C(10)N13頁(yè)面地址C(20)14開(kāi)關(guān)對(duì)應(yīng)C(10)N15二級(jí)域名C(10)N16設(shè)備列表C(10)N17項(xiàng)目圖片C(18)18網(wǎng)關(guān)選擇C(10)N8網(wǎng)絡(luò)表(1)網(wǎng)絡(luò)表用于存儲(chǔ)灌溉項(xiàng)目的網(wǎng)絡(luò)信息及配置所屬該網(wǎng)絡(luò)下的設(shè)備。(2)表標(biāo)識(shí):XJ_NETWORK_B。(3)表編號(hào):XJ_002_0008。表11序號(hào)字段名字段標(biāo)識(shí)類(lèi)型及長(zhǎng)度是否允許空值計(jì)量單位主鍵序號(hào)1編號(hào)C(10)N12名稱(chēng)C(18)N3父項(xiàng)目編號(hào)C(10)N4設(shè)備編號(hào)列表C(18)N9預(yù)警信息表(1)預(yù)警信息表用于存儲(chǔ)設(shè)備的預(yù)警記錄。(2)表標(biāo)識(shí):XJ_WARMEG_B。(3)表編號(hào):XJ_002_0009。表12序號(hào)字段名字段標(biāo)識(shí)類(lèi)型及長(zhǎng)度是否允許空值計(jì)量單位主鍵序號(hào)1外鍵C(10)N12設(shè)備地址C(10)N3通道序號(hào)C(10)N4gprs地址C(10)N5報(bào)警時(shí)間C(18)N6報(bào)警類(lèi)型C(10)N7數(shù)據(jù)報(bào)文C(20)N8解析數(shù)據(jù)C(20)N10未處理設(shè)備歷史數(shù)據(jù)表(1)未處理設(shè)備歷史數(shù)據(jù)表用于存儲(chǔ)設(shè)備通訊的原始數(shù)據(jù)。(2)表標(biāo)識(shí):XJ_UNTREATDATA_B。(3)表編號(hào):XJ_002_0010。表13序號(hào)字段名字段標(biāo)識(shí)類(lèi)型及長(zhǎng)度是否允許空值計(jì)量單位主鍵序號(hào)1設(shè)備地址C(10)N12gprs地址C(10)N3日期C(18)N4最新時(shí)間C(18)N5采集時(shí)間C(18)N6上報(bào)時(shí)間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處理后設(shè)備歷史數(shù)據(jù)表(1)處理后設(shè)備歷史數(shù)據(jù)表用于存儲(chǔ)設(shè)備通訊經(jīng)處理后的原始數(shù)據(jù)。(2)表標(biāo)識(shí):XJ_HANDLEDATA_B。(3)表編號(hào):XJ_002_0011。 表14序號(hào)字段名字段標(biāo)識(shí)類(lèi)型及長(zhǎng)度是否允許空值計(jì)量單位主鍵序號(hào)1設(shè)備地址C(10)N12gprs地址C(10)N3時(shí)間C(18)N4最新時(shí)間C(18)N5采集時(shí)間C(18)N6上報(bào)時(shí)間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分布式服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)本系統(tǒng)的核心服務(wù)采用的技術(shù)是EJB,EJB是sun的服務(wù)器端組件模型,設(shè)計(jì)目標(biāo)與核心應(yīng)用是部署分布式應(yīng)用程序。憑借Java跨平臺(tái)的優(yōu)勢(shì),用EJB技術(shù)部署的分布式系統(tǒng)可以不限于特定的平臺(tái)。EJB(EnterpriseJavaBean)是J2EE的一部分,定義了一個(gè)用于開(kāi)發(fā)基于組件的企業(yè)多重應(yīng)用程序的標(biāo)準(zhǔn)。其特點(diǎn)包括網(wǎng)絡(luò)服務(wù)支持和核心開(kāi)發(fā)工具(SDK)。在J2EE里,EnterpriseJavaBeans(EJB)稱(chēng)為Java企業(yè)Bean,是Java的核心代碼,分別是會(huì)話Bean(SessionBean),實(shí)體Bean(EntityBean)和消息驅(qū)動(dòng)Bean(MessageDrivenBean)。設(shè)計(jì)分布式服務(wù)并不是只為實(shí)現(xiàn)當(dāng)前的功能,而且還來(lái)考慮將來(lái)的擴(kuò)展性,所以設(shè)計(jì)的時(shí)候必須認(rèn)真、仔細(xì)的考慮;分布式服務(wù)的設(shè)計(jì)原則如下:(1)對(duì)外提供服務(wù)接口(Web瀏覽器、智能手機(jī)、PC機(jī)等調(diào)用相應(yīng)的接口)。(2)可擴(kuò)展,方便以后組建EJB服務(wù)集群分布式服務(wù)實(shí)現(xiàn)框架圖如下所示:圖13分布式服務(wù)框架圖4.2.4分布式存儲(chǔ)設(shè)計(jì)與實(shí)現(xiàn)本系統(tǒng)的存儲(chǔ)采用MySQL和Memcached兩種存儲(chǔ)機(jī)制,采用MySQL是因?yàn)樗w積小,成本低,完全可以滿足一般企業(yè)的要求;采用Memcached的好處在于,它能夠?qū)崿F(xiàn)內(nèi)存共享;同時(shí)它的可擴(kuò)展性強(qiáng),若將來(lái)Memcached的內(nèi)存不夠用,可以和其他的Memcached組合起來(lái)構(gòu)成Memcached集群,設(shè)計(jì)分布式存儲(chǔ)的原則如下:(1)雙機(jī)備份;(2)冗余數(shù)據(jù)存儲(chǔ);這樣能夠保存,當(dāng)某個(gè)數(shù)據(jù)庫(kù)(MySQL或是Memcached)崩潰后,不會(huì)影響整個(gè)系統(tǒng)的運(yùn)行。分布式存儲(chǔ)實(shí)現(xiàn)框架圖:圖14分布式存儲(chǔ)框架圖5結(jié)果分析5.1測(cè)試環(huán)境(1)2臺(tái)Linux操作系統(tǒng),MySQL5.5、Memcached1.4、JBoss7.0。(2)1臺(tái)Linux操作系統(tǒng),安裝Tomcat。作為客戶(hù)端軟件的Web服務(wù)器;(3)1臺(tái)PC機(jī),Windows8操作系統(tǒng)。作為C/S軟件、B/S軟件的客戶(hù)端;(4)1臺(tái)安卓手機(jī)。作為移動(dòng)客戶(hù)端;(5)100M帶寬的局域網(wǎng)和10M帶寬的ADSL廣域網(wǎng)連接;(6)Jmeter2.11壓力測(cè)試工具;5.2測(cè)試程序與測(cè)試界面設(shè)計(jì)(1)基于.Net平臺(tái)的滴灌系統(tǒng)之PC端的控制程序用戶(hù)操作滴灌系統(tǒng),操作功能包含:滴灌啟動(dòng)、采集水閥狀態(tài)、電壓采集等。首先是登錄界面,如圖15所示: 圖15登錄界面登陸成功后進(jìn)入主界面,如圖16所示:圖16主界面滴灌控制界面能夠顯示節(jié)點(diǎn)下掛的水閥個(gè)數(shù),如圖17所示:圖17滴灌控制滴灌控制功能包含信息采集,例如:水閥狀態(tài)、節(jié)點(diǎn)電壓。如圖18所示:圖18信息采集土壤墑情是采集當(dāng)天含水量的記錄,如圖19所示:圖19土壤墑情氣象顯示包含降雨量、風(fēng)速、風(fēng)向、太陽(yáng)輻射、空氣溫度、空氣濕度和大氣壓力。圖20氣象顯示(2)基于J2EE技術(shù)的WEB應(yīng)用程序滴灌系統(tǒng)之WEB應(yīng)用程序功能包含:泵房管理、氣象數(shù)據(jù)、滴灌操作等。 圖21瀏覽器泵房管理Web滴灌控制可參考桌面電腦的操作,如圖22是滴灌控制界面:圖22瀏覽器滴灌控制 圖23瀏覽器氣象數(shù)據(jù)(3)Android手機(jī)客戶(hù)端程序農(nóng)業(yè)小助手啟動(dòng)界面,如圖24所示:圖24農(nóng)業(yè)滴灌系統(tǒng)啟動(dòng)界面進(jìn)入登錄界面,如圖25所示:圖25農(nóng)業(yè)滴灌系統(tǒng)啟動(dòng)界面農(nóng)業(yè)小助手主界面,如圖26所示:圖26農(nóng)業(yè)滴灌系統(tǒng)主界面農(nóng)業(yè)滴灌系統(tǒng)控制界面,如圖27所示: 圖27農(nóng)業(yè)滴灌系統(tǒng)滴灌控制農(nóng)業(yè)滴灌系統(tǒng)氣象顯示,如圖28所示:圖28農(nóng)業(yè)滴灌系統(tǒng)氣象顯示5.3測(cè)試分析項(xiàng)目結(jié)果分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)性能分析主要包括并發(fā)量和吞吐量及容錯(cuò)率。下面對(duì)系統(tǒng)進(jìn)行壓力測(cè)試并分析:分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)采用了三層架構(gòu),數(shù)據(jù)的訪問(wèn)流程由業(yè)務(wù)邏輯層控制。下面對(duì)傳統(tǒng)的平臺(tái)和分布式平臺(tái)的應(yīng)用進(jìn)行性能的類(lèi)比分析。測(cè)試結(jié)果如下:表15 注:Samples表示并發(fā)量,90%Line表示響應(yīng)時(shí)間,Error%表示容錯(cuò)率,KB/sec表示吞吐量。通過(guò)上面分析,當(dāng)并發(fā)量達(dá)到1000時(shí),響應(yīng)時(shí)間和容錯(cuò)率及吞吐量,在分布式平臺(tái)下明顯比傳統(tǒng)的平臺(tái)有優(yōu)勢(shì)。6總結(jié)分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)是以網(wǎng)絡(luò)為基礎(chǔ),利用控制化手段和工具,實(shí)現(xiàn)從環(huán)境、資源到活動(dòng)的全部分布式化。分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)是網(wǎng)絡(luò)化、控制化、智能化、高度應(yīng)用化等有機(jī)結(jié)合的新型分布式平臺(tái)。分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的建設(shè)可以提升傳統(tǒng)農(nóng)業(yè)滴灌系統(tǒng)的效率,拓展其功能。但是近年來(lái)隨著農(nóng)田的不斷合并擴(kuò)充,一個(gè)區(qū)域往往擁有多塊農(nóng)田,而且各個(gè)區(qū)域相對(duì)來(lái)說(shuō)比較分散,少則幾公里,多則幾十公里?,F(xiàn)有的農(nóng)業(yè)滴灌系統(tǒng),是在區(qū)域相對(duì)集中,網(wǎng)絡(luò)建設(shè)已經(jīng)相當(dāng)完善的基礎(chǔ)和前提下進(jìn)行設(shè)計(jì)開(kāi)發(fā)的,這種集中式的農(nóng)業(yè)滴灌系統(tǒng)在新的的環(huán)境并不適用。因此,構(gòu)建新的分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)勢(shì)在必行。本文提出了基于分布式數(shù)據(jù)存儲(chǔ)和EJB架構(gòu)的分布式數(shù)據(jù)服務(wù)解決方案,并以用戶(hù)數(shù)據(jù)和滴灌系統(tǒng)產(chǎn)生的數(shù)據(jù)為分析要點(diǎn),解決了分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)設(shè)計(jì)中面臨的一些問(wèn)題。論文主要工作包括:(1)研究、分析了分布式數(shù)據(jù)存儲(chǔ)、EJB接口技術(shù);(2)提出了分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)的總體架構(gòu);(3)分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)中數(shù)據(jù)庫(kù)對(duì)象,有效解決了分布式平臺(tái)中業(yè)務(wù)邏輯層接口設(shè)計(jì)的復(fù)雜性問(wèn)題;(4)布式平臺(tái)中用戶(hù)數(shù)據(jù)分布的特點(diǎn),并通過(guò)數(shù)據(jù)庫(kù)對(duì)象設(shè)計(jì)和后臺(tái)服務(wù)進(jìn)程設(shè)計(jì)加以實(shí)現(xiàn);(5)構(gòu)建了分布式平臺(tái)的農(nóng)業(yè)滴灌系統(tǒng)客戶(hù)端測(cè)試程序,并進(jìn)行了系統(tǒng)測(cè)試與結(jié)果分析。由于時(shí)間有限以及經(jīng)驗(yàn)的不足,系統(tǒng)中仍有很多方面有待進(jìn)一步的探索。例如,在滴灌系統(tǒng)中,如何保證資源數(shù)據(jù)的一致性、如何進(jìn)一步提高分布式數(shù)據(jù)的效率等問(wèn)題,需要在今后的工作中不斷改進(jìn)和完善參考文獻(xiàn)[1]李曉蕾.基于信息孤島消除的資源優(yōu)化模型研究[J].科技通報(bào),2013.[2]阮躍.分布式化工大機(jī)組智能故障診斷系統(tǒng)[J].化工自動(dòng)化及儀表,2004.[3]SethLadd,DarrenDavison.深入解析SpringMVC與WebFlow[M].人民郵電出版社,2008[4]劉鵬.云計(jì)算[M].北京:電子工業(yè)出版社,2010[5]DEEPAKA,JOHNC.J2EE核心模式[M].北京:機(jī)械工業(yè)出版社,2005.[6]JohnWiley&Sons,MateringEnterpriseJavaBeans[M].電子工業(yè)出版社,2005.[7]M.TAMEROZSU,PATRICKV.PrinciplesofDistributedDatabaseSystems(英文影印版)[M].北京:清華大學(xué)出版社,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分布式數(shù)據(jù)庫(kù)的查詢(xún)優(yōu)化[J].計(jì)算機(jī)技術(shù)與發(fā)展,2008.[15]馬程.分布式數(shù)據(jù)庫(kù)系統(tǒng)中的查詢(xún)優(yōu)化[J].科技信息(學(xué)術(shù)版),2008.[16]高維維,王海健.淺談分布式數(shù)據(jù)庫(kù)的安全管理技術(shù)[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.致謝非常感謝王玨輝老師,在我大學(xué)的最后學(xué)習(xí)階段——畢業(yè)設(shè)計(jì)階段給我的指導(dǎo),從最初的定題到資料收集,到寫(xiě)作、修改,到論文定稿,他給了我耐心的指導(dǎo)和無(wú)私的幫助。為了指導(dǎo)我的畢業(yè)論文,他放棄了自己的休息時(shí)間,這種無(wú)私奉獻(xiàn)的敬業(yè)精神令人佩服,導(dǎo)師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、高度的責(zé)任心和實(shí)事求是的工作風(fēng)格令我受益匪淺,在此我向王玨輝老師表示我最誠(chéng)摯的謝意。同時(shí),感謝所有任課老師和所有同學(xué)在這四年來(lái)給我的指導(dǎo)和幫助,是他們教會(huì)了我專(zhuān)業(yè)知識(shí),教會(huì)了我如何學(xué)習(xí),教會(huì)了我如何做人。正是由于他們,我才能在各方面取得顯著的進(jìn)步,在此向他們表示我由衷的謝意,并祝所有的老師培養(yǎng)出越來(lái)越多的優(yōu)秀人才,桃李滿天下。衷心感謝我的家人,他們的愛(ài)與關(guān)懷是我力量的源泉。最后,再次向所有支持和幫助過(guò)我的老師、同學(xué)表示衷心的感謝!附錄下面是Java語(yǔ)言為實(shí)現(xiàn)整個(gè)農(nóng)業(yè)滴灌系統(tǒng)提供服務(wù)的數(shù)據(jù)結(jié)構(gòu):(1)農(nóng)場(chǎng)實(shí)體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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年中國(guó)方形雙眼超薄爐行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2009年中國(guó)醋酸行業(yè)市場(chǎng)研究與競(jìng)爭(zhēng)力分析報(bào)告
- 2024至2030年中國(guó)室外大型金屬構(gòu)件雷電防護(hù)裝置行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2024年中國(guó)鉭鈮氧化物市場(chǎng)調(diào)查研究報(bào)告
- 2024年中國(guó)草藤編壁紙市場(chǎng)調(diào)查研究報(bào)告
- 2024年中國(guó)粉體回收濾芯市場(chǎng)調(diào)查研究報(bào)告
- 2024年中國(guó)溶劑回收系統(tǒng)市場(chǎng)調(diào)查研究報(bào)告
- 2024年中國(guó)核苷酸二鈉市場(chǎng)調(diào)查研究報(bào)告
- 2024年中國(guó)彩色鋁環(huán)市場(chǎng)調(diào)查研究報(bào)告
- 2024年中國(guó)雙螺桿擠出機(jī)減速箱市場(chǎng)調(diào)查研究報(bào)告
- 2023-2024學(xué)年北京北師大實(shí)驗(yàn)中學(xué)初二(上)期中物理試卷(含答案)
- 醫(yī)療風(fēng)險(xiǎn)管理檢查記錄表(修)
- 江西省景德鎮(zhèn)市2023-2024學(xué)年七年級(jí)上學(xué)期期中數(shù)學(xué)試卷
- 湖南省婁底市漣源市2023-2024學(xué)年上學(xué)期期中質(zhì)量檢測(cè)九年級(jí)英語(yǔ)試卷
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第十一章運(yùn)動(dòng)技能的練習(xí)
- 國(guó)家開(kāi)放大學(xué)《可編程控制器應(yīng)用實(shí)訓(xùn)》形考任務(wù)5(實(shí)訓(xùn)五)參考答案
- 印刷品服務(wù)投標(biāo)方案(技術(shù)標(biāo))(宣傳印刷品、業(yè)務(wù)資料等)
- 商業(yè)活動(dòng)港風(fēng)復(fù)古摩登年會(huì)主題方案
- 《APQP培訓(xùn)資料教程》課件
- 吊裝作業(yè)票(樣本)
- 快遞員國(guó)家職業(yè)技能標(biāo)準(zhǔn)2019年版
評(píng)論
0/150
提交評(píng)論