毛林 成維莉 余云飛
摘要 為了解決現有農業行政執法系統中存在的信息服務手段不足等問題,以及適應和滿足日益擴展的執法業務需要,提出一種面向微服務的農業執法系統設計方案。構建服務于多部門分級管理、適應新業務擴展變化、信息共享溝通協作、個性化定制、安全隱私保護等特征的江蘇省農業行政執法系統,構建中采用集群容錯技術、異步通信策略、負載均衡、安全性配置等關鍵技術。系統具有較好的可伸縮擴展性、容錯、自動化部署、配置靈活等特點,滿足了農業主管部門當前及未來的需求。
關鍵詞 農業行政執法;微服務;服務注冊與發現;服務網關;反向代理;關鍵技術
中圖分類號 S126;TP319 文獻標識碼 A 文章編號 0517-6611(2018)29-0183-04
Abstract In order to solve the problem of insufficient means of information service in existing agricultural administrative law enforcement system,and to meet the needs of the increasingly extended law enforcement business,a design scheme for the agricultural enforcement system for microservice was proposed.Agricultural administrative law enforcement system in Jiangsu Province was constructed,which served the characteristics of multisectoral hierarchical management,adaptation of new business expansion,information sharing and communication,personalized customization,security and privacy protection.Key technologies such as cluster fault tolerant technology,asynchronous communication strategy,load balance,security configuration and so on,were used in system construction.This system had good scalability,scalability,fault tolerance,automatic deployment,flexible configuration and other characteristics,which met current and future needs of agricultural authorities.
Key words Agricultural administrative law enforcement;Microservice;Service registration and discovery;Service gateway;Reverse proxy;Key technology
農業行政執法是依法治理農業的重要組成部分,在保障農產品和食品安全、維護農民利益和公民健康、推進“三農”發展、促進農業經濟與社會進步等方面發揮顯著作用。隨著“互聯網+”行動不斷推進,在農業行政執法領域實現信息化、智能化管理的現實需求變得十分迫切。農業執法系統作為“互聯網+”農業執法的具體典型應用,實現農業執法實時、動態、科學的管理,規范執法行為、提升執法效率,意義重大。
農業執法涉及農業委員會、農業行政執法、質量檢測機構等部門,各部門實行省、市、縣、鎮多級行政管理,部門之間采用協同管理方式,管理范圍覆蓋種植業、畜禽養殖、水產養殖、農業投入品等行業的生產、加工、供銷、流通、市場等多類企業與主體,呈現點多面廣特點。當前,江蘇農業執法深度及廣度不斷拓展,已有信息服務手段已不能適應和滿足日益增長的業務需要,現實執法過程中仍難以完全擺脫傳統方式。因此,在省農業執法系統(一期)建設成果應用基礎上,根據實際業務拓展需求,兼顧與省內其他平臺互聯互通和資源共享,降低重復建設成本,迫切需要構建一種服務于多部門分級管理、適應新業務擴展變化、信息共享溝通協作、個性化定制、安全隱私保護等特征的江蘇農業行政執法信息系統。
1 面向微服務的系統結構
1.1 微服務框架 微服務是構成應用系統的“小而自治的服務”。隨著系統業務需求日益增加、業務數據快速增長、服務規模不斷擴展,軟件功能須頻繁變化,現有服務框架(如SOA)面臨各種困境,難以滿足柔性、容錯、高聚合低耦合、可伸縮性、數據擴展等方面的更高需求。微服務框架(MSA,microservice architecture)是一種新型軟件設計模式,逐漸成為設計和構建細粒度、松耦合復雜系統解決方案的分布式系統架構方式,它將應用程序分割為多個獨立、協同工作的微小服務,每個服務專注于單一業務功能并擁有獨立運行的進程,服務之間界限清晰,通過輕量級通信實現完整的應用,滿足用戶業務擴展變化的需求[1]。
微服務框架按業務拆分服務粒度,通過可伸縮接口控制服務邊界,適應實際業務需求變化,使用微服務組合完成具體功能,使應用程序可自由擴展。服務發生變更時可實現自動化按需部署,無需修改,重新部署整個應用程序。它利用去中心化、輕量級交互、敏捷迭代、解耦、故障隔離、容器等機制,滿足復雜系統結構變化需要,優化了IT復雜系統效率,同時也不失彈性、平穩和健壯性。面向微服務的系統設計支持多開發者協作開發,開發者獨自完成各自的功能,技術選型和工具選擇更加靈活,設計、開發和維護更敏捷,有效控制和降低因需求變化帶來的成本上升,減小外界環境需求變化帶來的風險。
1.2 農業執法系統結構分析 根據我國農業執法組織管理規定,在多級管理結構中,縣級以上部門主要負責農業執法政策制度管理,縣鎮相關職能部門按照管轄區職責分工,履行農業執法具體工作。根據分級執法管理實際業務需求,面向微服務的農業執法系統在邏輯結構上分省、市、縣、鎮4層,縱向上從各層實際工作及業務流程中逐層提取業務需求,橫向展開各層業務功能進行微服務組件化,構建功能模塊。針對各級執法單位業務職能,設置用戶使用業務組件和數據的權限,實現信息溝通交流、數據共享與交換。
以農業行政法規、網絡信息安全為制度保障,系統結構上采用云環境部署,包括基礎設施IaaS、軟件平臺PaaS、信息門戶SaaS3層(圖1)。IaaS為上層應用提供通信網絡、數據存儲、虛擬化配制等資源,PaaS上利用基于SSI的MVC軟件分層結構提供一致的系統整體解決方案,設計、開發、部署應用項目,各部門用戶共同使用一套系統。SaaS層采用多租戶模式針對各級不同部門需求進行單獨定制,使用戶獲得所需個性化業務和數據服務,為執法管理部門提供信息采集、加工匯總、統計分析、數據挖掘、輔助決策等便利手段,為用戶提供穩定可靠的身份認證與隱私安全服務,實現省、市、區(縣)、鄉鎮各級部門之間協同聯動,大幅降低開發、運維成本。
為方便農業執法管理,設計中農業執法信息門戶包括兩類系統:面向縣級以上主管部門的辦公工作系統、面向縣級以下執法部門的移動終端系統。前者采用B/S架構方式,主要定位在業務指導、任務協調、檢查監督等方面;后者采用C/S方式,通過手機、PDA、便攜藍牙打印機等智能設備實現現場移動執法,主要承擔執法相關數據采集、處理和傳輸重點工作。兩類系統對具體部門通過多租戶方式租用功能相同、軟件界面配置不同的系統環境。
2 面向微服務的系統設計與實現
2.1 設計思路 面向微服務框架的系統設計中,將系統功能分解到離散的微服務中,實現對應用系統解耦。設計中通過梳理業務流程、功能分析,運用基于Spring Boot的微服務組件開發、基于Docker容器的微服務封裝以及基于Jenkins的集成部署,完成微服務劃分、業務組件開發、微服務注冊發現和部署,實現整個應用程序持續流水線交付[2],結合服務網關、前端Web UI及數據庫DB的開發,完成面向多部門、多用戶需求的功能實現(圖2)。
2.2 微服務劃分 從業務組件功能需求入手進行微服務的劃分,劃分原則是功能單一、原子化、細粒度、邊界清晰,可獨立部署、升級和擴容。采用水平劃分和垂直劃分的方式拆分系統,提取系統核心業務[2],在邏輯上主要解決政府主管部門分級執法管理的需求。水平方向上把復雜業務抽象出若干業務領域,包括監督檢查、執法抽檢、案件辦理、投訴舉報、案件處罰、任務調度等,并作為微服務中心對外提供服務,適應外部需求變化獨立伸縮和擴展,與其他業務域解耦。垂直劃分將業務域拆分成多個功能單一、獨立的功能單元,確定各單元內外消費的微服務,按業務復雜度來確定服務粒度大小,不同微服務之間相互獨立,服務進程相互隔離。
2.3 業務組件開發 開發組件時,根據業務需求確定所需功能單元,并確定功能單元內外消費的微服務,進一步給出服務描述信息,如服務類名、存儲數據類型、交互協議、數據展現形式、服務契約[3],在此基礎上定義微服務接口,包括持久化數據、請求參數、響應參數等,并實現微服務。在實際應用場景中,一項業務需要由多個不同微服務協作完成,業務組件通過契約定義來組合這些服務,實現業務功能。
以執法抽檢業務組件開發為例進行說明,該組件主要實現縣、鎮基層執法人員使用PC電腦、智能手機、PAD及網絡,生成抽檢計劃、登記上報抽檢信息、制作和打印執法文書、查詢檢查結果等功能。功能單元包括:①抽檢計劃生成。根據指標、權重自定義條件設置,從農產品、農資企業數據庫中隨機抽取抽檢對象生成抽檢計劃,由省級主管部門向各市下達。②抽檢任務管理。依據年度抽檢計劃按指標及權重生成抽檢任務表,形成所轄管區縣基層執法單位可執行的具體巡查任務。③執法文書制作。對執法過程中各類信息進行登記,生成各類文書,套打并上傳。④執法檔案管理。對執法辦案、產品抽檢過程中形成的各種執法文書進行歸檔,便于實時查詢和統計分析。⑤抽檢數據統計。實現對日常檢查、抽檢等各類數據匯總統計管理,實時了解執法動態,預測執法重點、難點,為決策提供依據。如為“抽檢計劃生成”功能單元設計微服務,創建微服務InspectionService.java,設計并實現微服務接口List planGeneration(Map conditions),用于形成抽檢計劃,輸出符合自定義條件的抽檢企業列表,其他服務接口與之類似。設計完成后,使用Spring Boot開發該微服務及其接口,并利用IDEA、Maven對外發布。
46卷29期 毛 林等 面向微服務的江蘇農業行政執法系統研究2.4 微服務注冊與發現 服務注冊與發現是微服務框架的核心模式,采用去中心化的分布式服務注冊表Service Register,對微服務進行注冊。設計中首先定義服務注冊表接口,然后使用ZooKeeper來實現服務注冊功能。在發布微服務時,通過啟動微服務將其服務地址IP、服務端口Port等配置信息寫入服務注冊表中,微服務注冊表會通過心跳檢測來定期更新已訂閱發布的服務,消除失效的服務,確保分布式數據一致性、可用性。當用戶執行某個業務操作時,系統前端利用統一網關接口程序查找服務注冊表中相應服務,調用具體的服務接口進行服務消費。用戶完成一項業務通常需要組合多個微服務加以實現。
2.5 微服務網關 微服務網關(ervice gateway)建立客戶端與服務端連接,用以接收系統用戶的客戶端訪問請求,對外提供統一服務發現方式。當用戶登錄移動執法終端或辦公系統后,發送客戶端HTTP請求時,微服務網關通過解析請求信息中的路由路徑、服務名稱、方法、參數等相關內容,在服務節點中查詢對應注冊服務的配置信息,定位到指定服務地址及端口、調用所需服務。為了增強高并發服務消費請求時服務節點高的可用性,一個服務通常注冊為多個實例并實現多節點存儲,需要一套服務發現機制,使服務調用端可以獲取正確的服務地址。設計中,采用Node.js搭建微服務網關,連接ZooKeeper注冊服務節點查詢已訂閱發布服務,節點包含多個地址時,采用Node.js反向代理服務發現,通過輪詢、隨機等方法選取最近節點并調用服務,為用戶呈現結果[2](圖3)。
3 關鍵技術
3.1 集群容錯技術 針對復雜系統所具有的數量眾多的微服務,需要在基礎設施上部署虛擬化資源環境。設計中基于IaaS采用去中心化的分布式ZooKeeper集群技術來橫向擴展服務節點,取代單一服務注冊中心部署微服務,確保服務注冊表的高可用性。通過Docker容器的可伸縮性配置實現對等集群,使一個節點存儲多個服務實例且無主從之分;單點失效時仍可自動路由切換到其他節點實現服務注冊及發現,確保高并發訪問時的服務調用[4]。此外,針對負載過重等因素引起的節點故障失效問題,通過監聽、周期性檢測、失效節點自動重啟恢復、故障隔離,使系統具有高可用性、容錯性、健壯性,滿足多用戶、多業務需要。
3.2 異步通信策略 對于系統復雜業務的實現,需要調用多個分布在不同節點的微服務,并通過良好服務進程通訊機制來支撐跨域訪問。該設計中采用REST輕量級異步通信協議實現微服務之間通信,取代SOAP、WSDL等傳統方式,以解決異步方式處理客戶端并發請求時的服務調用擁塞問題,提升通訊效率。REST協議格式中網絡資源被抽象成為一個地址,功能的實現通過對HTTP資源請求操作來完成,充分實現異構數據Web服務共享。同時消除了微服務通信受制于語言、平臺的差異和限制,系統內外通信兼容性、靈活性、簡單性更好。
3.3 負載均衡策略 IaaS環境下分布式集群部署使系統橫向擴展性得到大幅提升,但集群節點規模及其服務的增長也帶來了系統負載增加、系統整體性能、服務質量降低等問題。針對此問題,設計中采用全局資源配置管理器Resource Mananger提高資源利用率,啟動任務調度時按需創建和分配資源[3],減輕節點負載,同時降低資源占用、減輕系統開銷。在資源管理功能失效時利用ZooKeeper工具進行恢復,確保系統高可用性、可靠性。
3.4 安全性配置 分布式微服務的系統安全性問題主要包含客戶端訪問合法性、數據訪問合法性兩類。設計中針對用戶合法性,采用認證服務器網關配置IP校驗、發送授權代碼許可、憑據許可、刷新令牌等多重加固方式,實現客戶端及用戶身份安全認證[5-6]。數據安全性針對服務注冊信息的訪問控制,配置授權用戶對服務及數據使用權限,降低非法用戶盜取數據的風險。
4 系統應用
在江蘇農業執法系統(一期)應用成果基礎上,通過繼承吸收前期系統開發技術[7],針對目前及未來業務擴展的需求,研究構建了面向微服務的江蘇省農業行政執法信息系統(圖4)。運用Spring Boot服務組件開發、Docker封裝、Jenkins集成、分布式集群等技術并結合大數據分析,進一步拓展和豐富了原有系統功能,涵蓋基礎數據、執法檢查目錄、執法檢查、執法抽檢、督辦協辦、投訴舉報、處罰案件、法律法規、統計報表、公告管理、執法動態等模塊。豐富擴展了管理品種對象,將管理范圍從農藥、肥料、種子等主要農資逐步擴展到飼料添加劑、獸藥、轉基因等品類。優化了雙隨機執法檢查計劃生成、任務管理及行政案件辦理程序,為現場執法帶來便利。增設了案件一般程序管理模塊,通過電子檔案“時間戳”技術,嚴格規范了督辦協辦、通報登記、處罰等案件管理程序。進一步擴充管理對象、執法機構、產品、法律法規四類數據庫,同時針對執法數據分析的不足,優化各類執法數據統計報表功能,直觀展現精細化統計數據,服務于任務調度、績效考核評價、預測決策等執法工作管理。
農業行政執法信息系統作為近2年江蘇省農業委員會重點建設工作,通過推進建設和優化完善,使農業執法規范化、標準化、信息化提升到了新高度。系統應用覆蓋了全省農業行政執法領域現有業務范圍,在省、市、縣、鎮4級全部農業執法機構、質量檢測機構中得到了應用普及,成為全省100余家各級農業執法部門、600余家質檢單位及800余名執法人員應用于日常工作實時、動態和科學的管理手段,實現了真正意義上的江蘇省農業行政執法業務數字化、移動化和智能化,受到省內外同行、國內知名專家的高度評價。
參考文獻
[1] NEWMAN S.Building microservices[M].Sebastopol:OReilly Media,Inc.,2015.
[2] 黃勇.輕量級微服務架構:上冊[M].北京:電子工業出版社,2016.
[3] 王磊.微服務架構與實踐[M].北京:電子工業出版社,2016.
[4] 李林鋒.分布式服務框架原理與實踐[M].北京:電子工業出版社,2016.
[5] REN ENRQUEZ,ANDRS,SALAZAR S.RESTful Java Web Services Security[M].Birmingham:Packt Publishing,2014.
[6] SHARMA S.Mastering Microservices with Java[M].Birmingham:Packt Publishing,2016.
[7] 閔玉涓.農業行政執法信息系統的設計與開發[D].揚州:揚州大學,2017.