摘要:目前,多數(shù)農(nóng)業(yè)大棚管理系統(tǒng)為傳統(tǒng)單點(diǎn)架構(gòu),系統(tǒng)穩(wěn)定性不強(qiáng),難以迎合農(nóng)業(yè)大棚農(nóng)事活動(dòng)的管理需求,本文設(shè)計(jì)并實(shí)現(xiàn)了一套基于微服務(wù)的數(shù)字農(nóng)業(yè)大棚管理系統(tǒng)。該系統(tǒng)主要包含農(nóng)作物信息管理、農(nóng)事活動(dòng)管理、用戶管理、環(huán)境數(shù)據(jù)管理、設(shè)備管理、種植區(qū)管理等功能,能讓生產(chǎn)管理者對種植活動(dòng)進(jìn)行全方位監(jiān)管,科學(xué)制定種植任務(wù)。
關(guān)鍵詞:微服務(wù);數(shù)字農(nóng)業(yè);管理系統(tǒng)設(shè)計(jì)
引言
廣西是我國的傳統(tǒng)農(nóng)業(yè)大?。▍^(qū)),蔬菜大棚技術(shù)在全區(qū)各地得到極大的普及。傳統(tǒng)農(nóng)業(yè)大棚能夠通過控制局部環(huán)境來高效管理農(nóng)作物種植活動(dòng),降低病蟲害和天氣對農(nóng)作物生長的影響,提高大棚農(nóng)作物的單位產(chǎn)量。隨著農(nóng)業(yè)大棚技術(shù)的大規(guī)模普及和應(yīng)用,相關(guān)的大棚配套系統(tǒng)也層出不窮,如水肥灌溉系統(tǒng)、通風(fēng)系統(tǒng)、濕度監(jiān)測系統(tǒng)、二氧化碳監(jiān)測系統(tǒng)等。這些配套系統(tǒng)能使人們更加科學(xué)地提高農(nóng)事活動(dòng)的管理效率[1],進(jìn)而提高種植收入。但是,目前市面上的農(nóng)業(yè)大棚配套系統(tǒng)存在智能化程度不足、數(shù)據(jù)利用率低等問題。本文針對上述問題,設(shè)計(jì)并實(shí)現(xiàn)了一款基于微服務(wù)的智慧農(nóng)業(yè)大棚管理系統(tǒng),能使生產(chǎn)管理者對種植活動(dòng)進(jìn)行全方位的監(jiān)管。
1. 開發(fā)技術(shù)分析
1.1 前端技術(shù)
Vue是一個(gè)2014年出現(xiàn)的漸進(jìn)式JavaScript框架,該框架專注于視圖層的構(gòu)建,具有易上手、擁有完善社區(qū)支持的特點(diǎn),能讓開發(fā)人員重點(diǎn)關(guān)注于視圖層,并與現(xiàn)有項(xiàng)目進(jìn)行快速集成,適合現(xiàn)代Web應(yīng)用開發(fā)。此外,Vue.js還支持組件化開發(fā),能夠通過模塊化的代碼完成項(xiàng)目開發(fā),使得代碼的復(fù)用性更高。Vue.js在數(shù)據(jù)操作方面更為簡單,能夠自動(dòng)響應(yīng)數(shù)據(jù)的變化情況,并且根據(jù)頁面中預(yù)先寫好的綁定關(guān)系,對所有綁定在一起的數(shù)據(jù)和視圖內(nèi)容都進(jìn)行修改。
1.2 后端技術(shù)
Spring Cloud是一個(gè)基于Spring Boot的分布式微服務(wù)架構(gòu)框架。Spring Cloud具有服務(wù)化、組件化、快速迭代和持續(xù)集成的特點(diǎn),能處理微服務(wù)架構(gòu)中的熔斷降級、服務(wù)治理、服務(wù)發(fā)現(xiàn)等問題。Spring Cloud主要包括Eureka、Zuul、Ribbon等組件,這些組件提供了服務(wù)注冊與發(fā)現(xiàn)、負(fù)載均衡、熔斷降級等功能,能夠讓開發(fā)者快速搭建微服務(wù)應(yīng)用,實(shí)現(xiàn)開箱即用,使開發(fā)者可以專注于業(yè)務(wù)邏輯的實(shí)現(xiàn)。
1.3 數(shù)據(jù)庫
MySQL是世界范圍內(nèi)最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,為瑞典MySQL AB公司產(chǎn)品。MySQL為開源項(xiàng)目,用戶可以免費(fèi)使用和修改其源代碼。同時(shí),MySQL可以在Windows、Linux和Mac OS等多種操作系統(tǒng)上運(yùn)行。
MySQL具有性能高效和可擴(kuò)展性良好的優(yōu)點(diǎn),對大數(shù)據(jù)和高并發(fā)有良好的支持。支持多種存儲(chǔ)引擎,以滿足不同應(yīng)用的需求。MySQL提供了數(shù)據(jù)完整性約束,如主鍵、外鍵和唯一性約束,確保數(shù)據(jù)的準(zhǔn)確性和一致性。MySQL產(chǎn)品有活躍的開發(fā)者社區(qū)進(jìn)行支持,能為開發(fā)者或者學(xué)習(xí)者提供豐富的資源和支持。
2. 系統(tǒng)設(shè)計(jì)
微服務(wù)的概念在2012年首次提出,微服務(wù)架構(gòu)相比傳統(tǒng)Web開發(fā)具有顯著的優(yōu)勢。首先,微服務(wù)能夠?qū)⒏黝悜?yīng)用進(jìn)行模塊化解構(gòu),將整個(gè)應(yīng)用拆分為多個(gè)獨(dú)立服務(wù),進(jìn)行獨(dú)立部署,使每個(gè)獨(dú)立服務(wù)專注各自的業(yè)務(wù)功能,具有易于管理和維護(hù)的特點(diǎn)。其次,微服務(wù)架構(gòu)由于對不同服務(wù)進(jìn)行獨(dú)立部署,能實(shí)現(xiàn)不同服務(wù)快速迭代開發(fā),提高了應(yīng)用整體的開發(fā)效率[2]。最后,微服務(wù)架構(gòu)中出現(xiàn)某個(gè)服務(wù)故障時(shí),其他服務(wù)可以繼續(xù)正常運(yùn)行,降低了系統(tǒng)整體的風(fēng)險(xiǎn)。
2.1 架構(gòu)設(shè)計(jì)
本文設(shè)計(jì)的數(shù)字農(nóng)業(yè)大棚管理系統(tǒng)是一種對農(nóng)業(yè)大棚的農(nóng)事活動(dòng)和設(shè)備設(shè)施進(jìn)行管理的綜合平臺。數(shù)字農(nóng)業(yè)大棚通過安裝各類物聯(lián)網(wǎng)設(shè)備,如光照傳感器、土壤溫濕度傳感器、二氧化碳傳感器等電子設(shè)備[3],對大棚的環(huán)境參數(shù)進(jìn)行實(shí)時(shí)監(jiān)控,根據(jù)實(shí)時(shí)監(jiān)測的數(shù)據(jù),通過系統(tǒng)自動(dòng)控制或者管理員遠(yuǎn)程控制大棚內(nèi)的執(zhí)行設(shè)備,進(jìn)行通風(fēng)、噴水、補(bǔ)光等操作,保證大棚農(nóng)作物的生長環(huán)境處于較適宜的條件。系統(tǒng)對農(nóng)事活動(dòng)進(jìn)行信息化處理,并將農(nóng)事活動(dòng)、執(zhí)行人、種植區(qū)的數(shù)據(jù)進(jìn)行全流程存儲(chǔ),通過可視化報(bào)表等工具,提供給農(nóng)業(yè)大棚管理者,提高農(nóng)事活動(dòng)的生產(chǎn)效率和大棚的使用效率,從而提高農(nóng)作物的產(chǎn)量和品質(zhì)。系統(tǒng)架構(gòu)主要分為數(shù)據(jù)采集層、網(wǎng)絡(luò)傳輸層、云平臺、應(yīng)用層。
2.1.1 數(shù)據(jù)采集層
數(shù)據(jù)采集層主要實(shí)現(xiàn)系統(tǒng)數(shù)據(jù)的實(shí)時(shí)收集,主要對農(nóng)業(yè)大棚里的環(huán)境信息,如空氣濕度、光照強(qiáng)度、風(fēng)速風(fēng)向、土壤濕度、土壤溫度等環(huán)境指標(biāo)進(jìn)行實(shí)時(shí)監(jiān)測。數(shù)據(jù)采集層依靠大量的物聯(lián)網(wǎng)傳感器完成環(huán)境指標(biāo)的監(jiān)測工作,為后續(xù)的相關(guān)決策提供了大量的數(shù)據(jù)支撐。
2.1.2 網(wǎng)絡(luò)傳輸層
網(wǎng)絡(luò)傳輸層主要為農(nóng)業(yè)大棚提供必要的網(wǎng)絡(luò)環(huán)境,當(dāng)數(shù)據(jù)采集層監(jiān)測到大量的環(huán)境數(shù)據(jù),需要實(shí)現(xiàn)快速可靠的數(shù)據(jù)傳輸,由于物聯(lián)網(wǎng)傳感器設(shè)備的數(shù)據(jù)格式和通信協(xié)議可能與網(wǎng)絡(luò)層不一致,因此需要在網(wǎng)絡(luò)層進(jìn)行協(xié)議轉(zhuǎn)換,便于數(shù)據(jù)進(jìn)行傳輸,由網(wǎng)絡(luò)傳輸層提供數(shù)據(jù)傳輸條件,對數(shù)據(jù)采集層的數(shù)據(jù)進(jìn)行處理后,傳輸至云平臺。
2.1.3 云平臺
云平臺為數(shù)字農(nóng)業(yè)大棚應(yīng)用場景的中樞大腦,數(shù)據(jù)采集層采集的大量數(shù)據(jù)通過網(wǎng)絡(luò)傳輸層傳遞到云平臺,云平臺為部署在公有云上的服務(wù)器集群,數(shù)字農(nóng)業(yè)大棚管理系統(tǒng)以微服務(wù)的形式部署在服務(wù)器集群上,對于大棚收集的數(shù)據(jù)進(jìn)行處理、存儲(chǔ)和分析,能夠?yàn)楣芾砣藛T提供決策支持。
2.1.4 應(yīng)用層
應(yīng)用層主要提供人機(jī)交互、體驗(yàn)良好的Web界面,讓使用系統(tǒng)的用戶能夠與系統(tǒng)進(jìn)行交互。通過Web界面,用戶可以登錄到系統(tǒng),對各項(xiàng)系統(tǒng)功能進(jìn)行操作,如查看大棚的各項(xiàng)環(huán)境實(shí)時(shí)參數(shù)、農(nóng)事活動(dòng)完成情況等。通過可視化報(bào)表,將處理好的數(shù)據(jù)進(jìn)行展示,使用戶能夠充分了解大棚的運(yùn)行情況,用以支持后續(xù)相關(guān)決策。
2.2 功能設(shè)計(jì)
數(shù)字農(nóng)業(yè)大棚管理系統(tǒng)設(shè)計(jì)有六個(gè)功能模塊:農(nóng)作物信息管理、農(nóng)事活動(dòng)管理、用戶管理、環(huán)境數(shù)據(jù)管理、設(shè)備管理、種植區(qū)管理。
2.2.1 農(nóng)作物信息管理模塊
該模塊包括:(1)農(nóng)作物生長信息管理功能——系統(tǒng)對每種農(nóng)作物生長過程的數(shù)據(jù)進(jìn)行全程管理,方便管理人員對種植的農(nóng)作物生長過程進(jìn)行追溯和管理;(2)病蟲害信息管理功能——系統(tǒng)對農(nóng)作物發(fā)生的所有病蟲害數(shù)據(jù)進(jìn)行管理,為后續(xù)種植活動(dòng)提供決策支撐。
2.2.2 農(nóng)事活動(dòng)管理模塊
該模塊包括:(1)種植計(jì)劃管理——針對大棚內(nèi)目標(biāo)種植農(nóng)作物的特點(diǎn)和大棚環(huán)境條件,制定科學(xué)合理的種植計(jì)劃,對種植計(jì)劃中的作物類別、種植時(shí)間、種植區(qū)域、執(zhí)行人等信息進(jìn)行管理,支持種植計(jì)劃的新增、刪除、修改、查詢等功能,能夠進(jìn)行種植任務(wù)信息導(dǎo)入和導(dǎo)出,提高制定種植計(jì)劃的工作效率;(2)農(nóng)事作業(yè)管理功能——根據(jù)農(nóng)作物的種植計(jì)劃和農(nóng)作物的生長規(guī)律制定作業(yè)任務(wù),如噴藥、灌溉、施肥等;(3)農(nóng)事作業(yè)計(jì)劃管理功能——根據(jù)種植計(jì)劃,合理安排農(nóng)事作業(yè)時(shí)間和順序,提高農(nóng)事活動(dòng)的生產(chǎn)效率;(4)作業(yè)數(shù)據(jù)管理模塊功能——對農(nóng)事活動(dòng)的全流程數(shù)據(jù)進(jìn)行存儲(chǔ),并對特定數(shù)據(jù)進(jìn)行分析,為大棚的科學(xué)種植管理提供數(shù)據(jù)支持。
2.2.3 用戶管理模塊
該模塊包括:(1)用戶注冊和登錄管理功能——提供登錄系統(tǒng)管理階段的功能,能使用合法賬號密碼進(jìn)行登錄;(2)用戶權(quán)限管理功能——能對訪問系統(tǒng)的用戶進(jìn)行角色分配,如普通用戶、管理員等,其中不同角色的用戶將擁有不同的訪問權(quán)限等級;(3)用戶信息管理功能——可以對系統(tǒng)所有用戶信息進(jìn)行增刪查改的操作;(4)用戶行為監(jiān)控功能——系統(tǒng)記錄所有用戶的登錄與操作數(shù)據(jù),對異常行為進(jìn)行及時(shí)告警。
2.2.4 環(huán)境數(shù)據(jù)管理模塊
該模塊包括數(shù)據(jù)采集功能,即利用各種傳感器和監(jiān)測設(shè)備,實(shí)時(shí)采集農(nóng)業(yè)大棚內(nèi)的各類環(huán)境數(shù)據(jù),如二氧化碳、溫度、濕度、土壤pH值等[4]。
2.2.5 設(shè)備管理模塊
該模塊包括:(1)設(shè)備控制管理功能——對大棚內(nèi)的各種設(shè)備進(jìn)行遠(yuǎn)程控制,如灌溉系統(tǒng)、水肥系統(tǒng)等,實(shí)現(xiàn)對設(shè)備的自動(dòng)化控制;(2)設(shè)備狀態(tài)管理功能——實(shí)時(shí)監(jiān)測設(shè)備的運(yùn)行狀態(tài),確保各類設(shè)備處于正常運(yùn)行狀態(tài),當(dāng)設(shè)備發(fā)生故障時(shí),提供告警提示信息;(3)設(shè)備存檔管理——對各種設(shè)備進(jìn)行存檔管理,記錄庫存中各類設(shè)備的規(guī)格、型號、采購日期等信息。
2.2.6 種植區(qū)管理模塊
該模塊可以根據(jù)農(nóng)作物適合的種植情況,對大棚內(nèi)的種植區(qū)域進(jìn)行科學(xué)劃分,并記錄每個(gè)區(qū)域的種植計(jì)劃和作物種類等信息。
2.3 數(shù)據(jù)庫設(shè)計(jì)
在數(shù)字農(nóng)業(yè)大棚管理系統(tǒng)中,數(shù)據(jù)庫用來存儲(chǔ)系統(tǒng)運(yùn)行的相關(guān)數(shù)據(jù),一個(gè)合理的數(shù)據(jù)庫設(shè)計(jì)能夠保證數(shù)據(jù)的準(zhǔn)確性和完整性,提高系統(tǒng)的性能。在農(nóng)業(yè)大棚場景下,數(shù)據(jù)的來源渠道有多種,不僅有物聯(lián)網(wǎng)傳感器的運(yùn)行數(shù)據(jù),還有眾多業(yè)務(wù)操作數(shù)據(jù),需要設(shè)計(jì)一個(gè)高可靠、可擴(kuò)展、多樣化和異構(gòu)的數(shù)據(jù)庫。在本系統(tǒng)中,采用MySQL存儲(chǔ)相關(guān)數(shù)據(jù)[5],并根據(jù)數(shù)據(jù)庫邏輯模型設(shè)計(jì)相關(guān)數(shù)據(jù)庫的表。在數(shù)據(jù)庫的架構(gòu)上,采用數(shù)據(jù)庫主從集群架構(gòu),由一個(gè)數(shù)據(jù)庫主服務(wù)器和多個(gè)從數(shù)據(jù)庫服務(wù)器組成,具有高性能和可用性,同時(shí)具備良好的擴(kuò)展性。
2.4 系統(tǒng)微服務(wù)部署設(shè)計(jì)
將數(shù)字農(nóng)業(yè)大棚管理系統(tǒng)的六大功能逐一拆分為獨(dú)立的微服務(wù),并為每個(gè)功能的微服務(wù)實(shí)行服務(wù)器集群部署,將每個(gè)集群的服務(wù)器數(shù)量配置為奇數(shù)。其主要目的為,當(dāng)某個(gè)功能主服務(wù)不可用時(shí),可以由其部署的集群通過選舉算法選出新的服務(wù)節(jié)點(diǎn),用以替換主節(jié)點(diǎn)向外提供服務(wù),實(shí)現(xiàn)微服務(wù)各個(gè)功能的高可用。由于實(shí)現(xiàn)了功能服務(wù)單獨(dú)部署,系統(tǒng)可擴(kuò)展性良好,當(dāng)出現(xiàn)系統(tǒng)資源不足時(shí),可以通過增加服務(wù)器節(jié)點(diǎn)來進(jìn)行調(diào)整。
為增強(qiáng)微服務(wù)系統(tǒng)的相關(guān)性能,為微服務(wù)系統(tǒng)增加服務(wù)配置、服務(wù)治理、鏈路追蹤、服務(wù)監(jiān)控、消息總線等服務(wù)。
2.4.1 服務(wù)配置
服務(wù)配置主要用于存儲(chǔ)項(xiàng)目配置信息,為每個(gè)微服務(wù)提供獨(dú)立的配置管理功能,通過配置中心集中管理配置信息,并對配置信息進(jìn)行動(dòng)態(tài)發(fā)布,當(dāng)某個(gè)配置項(xiàng)發(fā)生變更,能夠在不停機(jī)的狀態(tài)下實(shí)現(xiàn)動(dòng)態(tài)更新配置信息。服務(wù)配置使用百度的Apollo,能實(shí)現(xiàn)配置動(dòng)態(tài)更改而無須重啟整個(gè)系統(tǒng)服務(wù)。
2.4.2 服務(wù)治理
服務(wù)治理主要用于實(shí)現(xiàn)各個(gè)微服務(wù)之間的自動(dòng)注冊和發(fā)現(xiàn)。首先構(gòu)建一個(gè)注冊中心,由各個(gè)單元服務(wù)向注冊中心登記自己提供服務(wù)的詳細(xì)信息,由注冊中心形成注冊清單,注冊中心定期檢測清單中的服務(wù)是否可用,如果不可用,需要在清單中剔除。服務(wù)治理使用Spring Cloud的Eureka作為服務(wù)注冊中心。
2.4.3 鏈路追蹤
鏈路追蹤能監(jiān)控和診斷微服務(wù)系統(tǒng)中的問題,能夠?qū)⒁淮畏植际秸埱筮€原成調(diào)用鏈路,然后進(jìn)行監(jiān)控,并展示出來。鏈路追蹤使用Zipkin實(shí)現(xiàn),能實(shí)現(xiàn)故障快速定位。
2.4.4 服務(wù)監(jiān)控
服務(wù)監(jiān)控主要是對系統(tǒng)所部署的服務(wù)器資源,包括對CPU、內(nèi)存、磁盤空間等資源進(jìn)行監(jiān)控,保證服務(wù)所處環(huán)境的資源合理分配,同時(shí)能夠?qū)Ω魑⒎?wù)的響應(yīng)時(shí)間、是否異常等情況進(jìn)行監(jiān)控。服務(wù)監(jiān)控使用Prometheus,能將實(shí)時(shí)收集的各項(xiàng)指標(biāo)進(jìn)行可視化展示。
2.4.5 消息總線
消息總線構(gòu)建一個(gè)共用的消息主題,并讓系統(tǒng)中所有微服務(wù)實(shí)例都連接上來。由該主題中產(chǎn)生的消息會(huì)被所有的實(shí)例監(jiān)聽和消費(fèi)。消息總線使用Kafka,能作為高吞吐量的消息系統(tǒng)對各個(gè)服務(wù)進(jìn)行解耦。
同時(shí),可引入Elasticsearch、Logstash、Kibana、Docker等技術(shù),為微服務(wù)系統(tǒng)提供日志管理功能和容器部署能力,提高系統(tǒng)部署的自動(dòng)化能力和彈性伸縮能力。
結(jié)語
本文設(shè)計(jì)并實(shí)現(xiàn)了一套基于微服務(wù)的數(shù)字農(nóng)業(yè)大棚管理系統(tǒng)。該系統(tǒng)主要包含農(nóng)作物信息管理、農(nóng)事活動(dòng)管理、用戶管理、環(huán)境數(shù)據(jù)管理、設(shè)備管理、種植區(qū)管理等功能模塊。該系統(tǒng)能對農(nóng)業(yè)大棚的農(nóng)事活動(dòng)數(shù)據(jù)、農(nóng)產(chǎn)品數(shù)據(jù)、環(huán)境數(shù)據(jù)進(jìn)行全流程管理,可有效提高生產(chǎn)效率。目前,該系統(tǒng)已完成研發(fā),并部署在廣西農(nóng)業(yè)職業(yè)技術(shù)大學(xué)信息工程學(xué)院數(shù)據(jù)機(jī)房,當(dāng)前正進(jìn)行集成測試,待測試完成后向外提供訪問服務(wù)。
未來進(jìn)一步的研發(fā)方向可考慮增加人工智能方向的功能模塊。例如,在計(jì)算機(jī)視覺方面,通過攝像頭實(shí)時(shí)監(jiān)控的畫面,通過數(shù)據(jù)分析模塊得出作物的病害情況,進(jìn)一步對農(nóng)事活動(dòng)進(jìn)行科學(xué)指導(dǎo)。
參考文獻(xiàn):
[1]陳輝江,方銳.基于物聯(lián)網(wǎng)技術(shù)的智慧農(nóng)業(yè)大棚監(jiān)控系統(tǒng)設(shè)計(jì)與功能實(shí)現(xiàn)研究[J].智慧農(nóng)業(yè)導(dǎo)刊,2022,2(18):8-10.
[2]趙榮陽,王斌,姜重然,等.基于物聯(lián)網(wǎng)的農(nóng)業(yè)大棚生產(chǎn)環(huán)境監(jiān)控系統(tǒng)設(shè)計(jì)[J].農(nóng)機(jī)化研究,2021,43(11):131-137.
[3]姚引娣,王磊,花靜云,等.基于B/S架構(gòu)的LoRa遠(yuǎn)程溫室監(jiān)測系統(tǒng)[J].傳感器與微系統(tǒng),2021,40(1):78-80,84.
[4]周漢達(dá),李曉良,陳生慶,等.基于云平臺的智能農(nóng)業(yè)大棚系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2020,10(4):62-64.
[5]陳根,易治國.基于物聯(lián)網(wǎng)的農(nóng)業(yè)溫室大棚環(huán)境監(jiān)控系統(tǒng)設(shè)計(jì)[J].南方農(nóng)機(jī),2022,53(16):130-132.
作者簡介:曾恒,碩士研究生,講師,研究方向:計(jì)算機(jī)軟件開發(fā)、人工智能算法優(yōu)化與應(yīng)用研究。
基金項(xiàng)目:廣西高校中青年教師科研基礎(chǔ)能力提升項(xiàng)目(編號:2021KY1189);廣西農(nóng)業(yè)職業(yè)技術(shù)大學(xué)校級科研項(xiàng)目資助(編號:YKJ2131)。