李高潮
(廣州全成多維信息技術(shù)有限公司, 廣東 廣州 511458)
為切實貫徹國家在新時期作出的關(guān)于工程建設(shè)項目審批制度改革的重要決策,各地陸續(xù)開展工程建設(shè)項目審批的多測合一信息管理平臺建設(shè)。構(gòu)建全流程、全覆蓋的工程建設(shè)項目審批和管理體系,平臺需開展海量數(shù)據(jù)共享交換、多項測繪業(yè)務(wù)整合、審批流程重構(gòu)優(yōu)化以及對外應(yīng)用系統(tǒng)集成等工作。因此,在平臺搭建時要充分考慮跨平臺服務(wù)接口的兼容性、服務(wù)的動態(tài)可擴展性以及訪問的高并發(fā)性,而當下流行的微服務(wù)架構(gòu)恰好能夠解決這些問題。微服務(wù)架構(gòu)是在面向服務(wù)架構(gòu)(service-oriented architecture,SOA)上進行升級,可將獨立的功能組件拆分為多個小型的微服務(wù),每個小型的微服務(wù)可以解決一項業(yè)務(wù)功能,并且由于微服務(wù)體量小、結(jié)構(gòu)單一,便于開發(fā)和維護,讓開發(fā)部署工作變得更加簡化和高效。本文根據(jù)實際需求,設(shè)計并開發(fā)了基于分布式微服務(wù)架構(gòu)的多測合一信息管理平臺,提高了平臺的穩(wěn)定性、安全性、可靠性和可擴展性。平臺采用領(lǐng)域驅(qū)動設(shè)計方法,將工程建設(shè)項目審批流程、成果共享管理以及對外集成管理等功能劃分成細粒度的微服務(wù),從而實現(xiàn)服務(wù)間的高耦合性,讓平臺更加靈活和可拓展。
松耦合是指在不修改平臺的其他部分的前提下,能夠獨立部署或修改某一單個服務(wù)。服務(wù)之間都盡可能少知道對方的服務(wù)信息。緊內(nèi)聚是指將相似行為的服務(wù)都聚集一起,不相似行為的服務(wù)放到其他位置,這樣可以實現(xiàn)當需要修改和刪除某個服務(wù)時,只需修改一個位置即可,大大提高了平臺開發(fā)的效率。
領(lǐng)域驅(qū)動設(shè)計方法是基于領(lǐng)域模型對大型復(fù)雜平臺業(yè)務(wù)對象進行建模和分析。它是為了解決平臺業(yè)務(wù)規(guī)則和概念轉(zhuǎn)換成軟件系統(tǒng)類型屬性和類型行為,以此降低平臺業(yè)務(wù)的復(fù)雜性,讓平臺更具擴展性。領(lǐng)域模型是對平臺需求分析業(yè)務(wù)進行分解和邊界劃分,形成“高內(nèi)聚低耦合”的業(yè)務(wù)子域的過程。
為了解決微服務(wù)間過渡通信導(dǎo)致緊耦合,從而影響平臺性能問題,需減少微服務(wù)間的數(shù)據(jù)流量和調(diào)用,通常限制在2個服務(wù)間進行調(diào)用。
微服務(wù)架構(gòu)中服務(wù)之間是端到端訂閱方式,具有獨立的業(yè)務(wù)邏輯和可擴展部署機制,其他微服務(wù)或客戶端可通過服務(wù)接口調(diào)用該服務(wù),從而實現(xiàn)微服務(wù)的分布管理。微服務(wù)架構(gòu)的最大優(yōu)勢是可以提高平臺的伸縮性,實現(xiàn)業(yè)務(wù)服務(wù)的動態(tài)部署和擴展。多測合一信息管理微服務(wù)平臺是基于開源的OpenShift容器平臺的基礎(chǔ)上,進行開發(fā)和設(shè)計。平臺微服務(wù)框架結(jié)構(gòu)包括五大核心層:支撐層、數(shù)據(jù)資源層、微服務(wù)層、應(yīng)用層以及表現(xiàn)層。兩側(cè)是保障平臺安全穩(wěn)定運行的法律法規(guī)、標準規(guī)范體系和信息安全、運維保障體系。微服務(wù)框架設(shè)計示意圖如圖1所示。
圖1 微服務(wù)框架設(shè)計示意圖
(1)支撐層是依托市級自然資源云提供的計算資源、存儲資源以及安全資源,在此基礎(chǔ)上部署平臺的軟件系統(tǒng),在自然資源內(nèi)網(wǎng)、政務(wù)網(wǎng)以及互聯(lián)網(wǎng)上進行運行,同時內(nèi)網(wǎng)和其他網(wǎng)絡(luò)物理隔離,確保數(shù)據(jù)安全。
(2)數(shù)據(jù)資源層是平臺運行數(shù)據(jù)支撐,其中地理信息數(shù)據(jù)庫是通過服務(wù)調(diào)用的方式,接入地形圖數(shù)據(jù)、影像圖數(shù)據(jù)以及地名地址數(shù)據(jù)等。測繪數(shù)據(jù)是工程建設(shè)項目在規(guī)劃選址、許可、施工以及驗收等階段產(chǎn)生的測繪數(shù)據(jù)。工程建設(shè)項目數(shù)據(jù)庫是指涉及項目本身和管理數(shù)據(jù)。測繪共享數(shù)據(jù)庫是多測合一業(yè)務(wù)審批流程中產(chǎn)生和需要提供的數(shù)據(jù)。多媒體數(shù)據(jù)庫主要包括文檔、照片以及視頻等數(shù)據(jù)。Redis緩存數(shù)據(jù)庫是用來存儲常重復(fù)使用的緩存數(shù)據(jù)。六大核心庫共同構(gòu)建了多測合一數(shù)據(jù)資源庫,為應(yīng)用層提供數(shù)據(jù)支撐。
(3)微服務(wù)層向上提供統(tǒng)一的數(shù)據(jù)操作接口,向下通過微服務(wù)數(shù)據(jù)讀取接口實現(xiàn)數(shù)據(jù)的讀寫操作,同時還利用領(lǐng)域驅(qū)動設(shè)計方法,將業(yè)務(wù)功能分解成細粒度服務(wù),并部署在服務(wù)器Nginx中,實現(xiàn)微服務(wù)集群。
(4)應(yīng)用層是平臺應(yīng)用窗口,通過應(yīng)用程序接口(application programming interface,API)網(wǎng)關(guān)實現(xiàn)微服務(wù)和前端客戶端連接,從而實現(xiàn)相應(yīng)的業(yè)務(wù)功能,如,網(wǎng)上服務(wù)大廳、成果展示、業(yè)務(wù)管理以及共享交換管理等。
(5)表現(xiàn)層是為自然資源部門、不動產(chǎn)部門、消防部門、測繪單位以及公眾等用戶提供不同形式的表現(xiàn)端窗口,主要包括桌面PC機、平板電腦以及智能手機等。
微服務(wù)框架詳細設(shè)計包括數(shù)據(jù)庫設(shè)計、領(lǐng)域驅(qū)動設(shè)計、微服務(wù)接口設(shè)計、服務(wù)注冊中心設(shè)計以及網(wǎng)關(guān)設(shè)計等。這里以領(lǐng)域驅(qū)動設(shè)計和微服務(wù)接口設(shè)計為例進行描述。
2.2.1
領(lǐng)域驅(qū)動設(shè)計領(lǐng)域驅(qū)動設(shè)計流程主要包括如下幾方面內(nèi)容:第一,調(diào)研多測合一管理的業(yè)務(wù)需求,獲得業(yè)務(wù)領(lǐng)域事件;第二,尋找完成業(yè)務(wù)領(lǐng)域事件的命令和角色;最后,圍繞業(yè)務(wù)領(lǐng)域事件確定領(lǐng)域邊界的上下文,并構(gòu)建領(lǐng)域模型,以便后期業(yè)務(wù)擴展。在多測合一工程建設(shè)項目審批業(yè)務(wù)上,項目測繪業(yè)務(wù)申報和受理是一個領(lǐng)域事件。建設(shè)單位向窗口工作人員提交測繪業(yè)務(wù)申請,窗口工作人員根據(jù)申請的內(nèi)容進行受理,并將受理的結(jié)果反饋給建設(shè)單位,由此確定了一個聚合。聚合可以發(fā)布測繪項目申請、受理、審核等領(lǐng)域事件,并且根據(jù)不同領(lǐng)域事件,確定界限上下文并建立映射關(guān)系,最終構(gòu)建平臺的領(lǐng)域模型。
2.2.2
微服務(wù)接口設(shè)計微服務(wù)接口實現(xiàn)方式包括表述性狀態(tài)轉(zhuǎn)移(representational state transfer,REST)、簡單對象訪問協(xié)議(simple object access protocol,SOAP)以及遠程過程調(diào)用(remote procedure cal,RPC)等,本文采用REST方式實現(xiàn)微服務(wù)接口,它是微服務(wù)架構(gòu)中最為成熟和最常用的接口設(shè)計方式。根據(jù)業(yè)務(wù)需求,本文設(shè)計了4種微服務(wù)接口模式。一是數(shù)據(jù)共享設(shè)計模式。多測合一成果共享服務(wù)接口采用該設(shè)計模式。二是聚合器設(shè)計模式。業(yè)務(wù)查詢和統(tǒng)計服務(wù)接口采用該設(shè)計模式。三是處理局部失敗設(shè)計模式。主要針對平臺交互過程中出現(xiàn)局部失敗問題的處理模式,如網(wǎng)絡(luò)超時、請求限制次數(shù)、提示信息回滾等服務(wù)。四是異步消息設(shè)計模式。工程建設(shè)項目進度查詢和測繪成果報告信息推送服務(wù)接口則采用該設(shè)計模式。多測合一業(yè)務(wù)統(tǒng)計聚合器設(shè)計模式示意圖如圖2所示。
圖2 多測合一業(yè)務(wù)統(tǒng)計聚合器設(shè)計模式示意圖
為了確保平臺功能滿足多測合一業(yè)務(wù)需求,首先,對業(yè)務(wù)流程進行分析,多測合一審批管理流程主要包括工程建設(shè)單位發(fā)出委托測繪申請、自然資源測繪管理部門對業(yè)務(wù)進行審批、測繪服務(wù)單位作業(yè)和提交成果以及成果入庫并在相關(guān)政府部門間共享應(yīng)用;其次,總結(jié)業(yè)務(wù)流程中,常使用的功能服務(wù)模塊;最后對常用功能進行微服務(wù)化。
平臺功能微服務(wù)化是功能模塊按照領(lǐng)域大小進行拆分,形成多個單一功能且具有獨立數(shù)據(jù)庫的小型服務(wù)。在功能微服務(wù)化中要注意過度零散的微服務(wù)化容易增加服務(wù)間網(wǎng)絡(luò)通信開銷,增加服務(wù)部署和管理的難度。平臺以多測合一成果展示、共享以及業(yè)務(wù)審批管理為目標,以地理信息數(shù)據(jù)、多測合一測繪數(shù)據(jù)、工程建設(shè)項目數(shù)據(jù)等為信息來源,實現(xiàn)多測合一數(shù)據(jù)“一張圖”展示、業(yè)務(wù)全過程管理、移動監(jiān)督管理和多測合一成果共享管理等,按照領(lǐng)域驅(qū)動設(shè)計方法,對平臺的業(yè)務(wù)領(lǐng)域進行微服務(wù)化拆分。本文以“一張圖”展示功能模塊微服務(wù)化和業(yè)務(wù)全過程管理功能模塊微服務(wù)化為例,介紹功能微服務(wù)化的實現(xiàn)過程。平臺功能微服務(wù)化結(jié)構(gòu)示意圖如圖3所示。
圖3 平臺功能微服務(wù)化結(jié)構(gòu)示意圖
“一張圖”展示功能模塊微服務(wù)化有地圖服務(wù)展示微服務(wù)群和空間查詢統(tǒng)計微服務(wù)群,包含的領(lǐng)域有地形圖數(shù)據(jù)、影像圖數(shù)據(jù)、專題圖數(shù)據(jù)以及空間查詢統(tǒng)計等,根據(jù)領(lǐng)域模型設(shè)計要求和業(yè)務(wù)界限上下文劃分,主要包括了地形圖管理微服務(wù)、影像圖管理微服務(wù)、專題圖管理微服務(wù)、空間查詢微服務(wù)以及空間統(tǒng)計報表微服務(wù)?!耙粡垐D”展示功能模塊微服務(wù)化示意圖如圖4所示。
業(yè)務(wù)全過程管理功能模塊微服務(wù)化有業(yè)務(wù)審批微服務(wù)群、業(yè)務(wù)查詢統(tǒng)計微服務(wù)群以及業(yè)務(wù)成果管理微服務(wù)群,包含的領(lǐng)域有項目數(shù)據(jù)、審批數(shù)據(jù)、匯交數(shù)據(jù)以及業(yè)務(wù)受理、業(yè)務(wù)審批、業(yè)務(wù)查詢統(tǒng)計以及成果審核等,根據(jù)領(lǐng)域模型設(shè)計要求和業(yè)務(wù)界限上下文劃分,主要包括工程項目管理微服務(wù)、項目審批管理微服務(wù)以及任務(wù)查詢、統(tǒng)計微服務(wù)等。業(yè)務(wù)全過程管理功能模塊微服務(wù)化示意圖如圖5所示。
圖4 “一張圖”展示功能模塊微服務(wù)化示意圖
圖5 業(yè)務(wù)全過程管理功能模塊微服務(wù)化示意圖
基于OpenShift的多測合一信息管理平臺部署主要包括兩部分內(nèi)容,一部分是主控節(jié)點部署,另一部分是業(yè)務(wù)節(jié)點部署。平臺部署結(jié)構(gòu)示意圖如圖6所示。
圖6 平臺部署結(jié)構(gòu)示意圖
4.1.1
主控節(jié)點部署主控節(jié)點包含了OpenShift集群的所有管理組件,負責集群的配置和維護工作,在主控節(jié)點運行的服務(wù)組件包括以下幾類:Web 控制臺、API Server、域名系統(tǒng)、調(diào)度控制器以及復(fù)制控制器。
4.1.2
業(yè)務(wù)節(jié)點部署業(yè)務(wù)節(jié)點主要接收主控節(jié)點指令,為OpenShift容器提供運行時環(huán)境。業(yè)務(wù)節(jié)點可以根據(jù)需要部署若干個,每個節(jié)點對應(yīng)不同應(yīng)用服務(wù)。本平臺部署主要包括主控節(jié)點和若干個業(yè)務(wù)節(jié)點,其中多測合一數(shù)據(jù)方面展示、查詢統(tǒng)計微服務(wù)以集群的方式部署2個節(jié)點,業(yè)務(wù)處理微服務(wù)部署2個節(jié)點,后期業(yè)務(wù)節(jié)點可以負載情況動態(tài)調(diào)整或擴展節(jié)點,從而滿足業(yè)務(wù)增長的需求。
“一張圖”展示實現(xiàn)地理信息、工程建設(shè)項目信息在統(tǒng)一坐標下疊加顯示、二三維一體化顯示以及時空顯示,還可以進行點選查詢、空間查詢統(tǒng)計等,結(jié)果以柱狀圖、散點圖等的方式進行動態(tài)展示。網(wǎng)上服務(wù)大廳為公眾提供工程建設(shè)項目多測合一業(yè)務(wù)辦理工作,可以通過電腦端和智能手機端兩種方式辦理,實現(xiàn)了測繪服務(wù)查詢、項目委托以及網(wǎng)上繳費等功能。業(yè)務(wù)全過程管理主要實現(xiàn)了工程建設(shè)項目多測合一業(yè)務(wù)的審批、作業(yè)以及匯交管理。審批管理是對提交申請的內(nèi)容進行核實,并將任務(wù)下發(fā)給測繪服務(wù)單位。作業(yè)管理是測繪服務(wù)單位根據(jù)自然資源部門下達的測繪任務(wù),進行測繪,形成測繪成果和報告。匯交管理是將測繪成果匯交給職責涉及的部門進行審批,審批完成后,提交給自然資源部門。成果共享管理是通過內(nèi)網(wǎng)將測繪成果推送至成果共享數(shù)據(jù)池,為不動產(chǎn)測繪、人防測繪、消防測繪等審批提供數(shù)據(jù)支撐,從而避免重復(fù)測繪,提高審批效率。運維管理是平臺運行的后臺維護,主要實現(xiàn)了用戶管理、權(quán)限控制以及日志管理等功能。
本文基于微服務(wù)框架搭建了多測合一信息管理平臺,探討了微服務(wù)構(gòu)建的原則和框架設(shè)計,并詳細闡述了功能微服務(wù)化實現(xiàn),并將微服務(wù)單獨部署和運行在各自容器中。微服務(wù)間的通信和數(shù)據(jù)交換采用REST服務(wù)接口,對數(shù)據(jù)存取、業(yè)務(wù)處理以及共享交換等功能采用多節(jié)點集群的方式,提高服務(wù)的穩(wěn)定性、計算性以及高并發(fā)性,有效提高了平臺的擴展需求。同時也存在幾處難點,一是業(yè)務(wù)功能微服務(wù)化邊界判斷的復(fù)雜性;二是在提升平臺性能、縮短交付周期的同時,平臺集成開發(fā)和調(diào)試的難度大大加大。下一步平臺將重點研究微服務(wù)間通信能力強化和優(yōu)化多測合一基于領(lǐng)域模型的業(yè)務(wù)流程設(shè)計等問題,進一步提高業(yè)務(wù)審批效率,為工程建設(shè)項目審批改革提供技術(shù)保障。