陳 青 趙俊三,,3* 王 濤 江新飛 秦 睿
1(昆明理工大學(xué)國土資源工程學(xué)院 云南 昆明 650093) 2(云南云金地科技有限公司 云南 昆明 650102) 3(智慧礦山地理空間信息集成創(chuàng)新重點實驗室 云南 昆明 650093)
實現(xiàn)第三次全國國土調(diào)查大量數(shù)據(jù)成果的信息化管理與共享是滿足生態(tài)文明建設(shè)、自然資源管理體制改革和國土空間規(guī)劃體系建設(shè)[1]等的重要手段。因此,優(yōu)化海量數(shù)據(jù)處理效率,建成一個操作方便、功能強大、伸縮性強的數(shù)據(jù)共享管理平臺,提供第三次全國國土調(diào)查成果快速共享服務(wù),是圓滿完成三調(diào)工作的迫切需要。然而,大數(shù)據(jù)時代下,傳統(tǒng)單體架構(gòu)的管理平臺在數(shù)據(jù)管理、分析和共享方面還有著一定的發(fā)展空間。戎愷等[2]設(shè)計實現(xiàn)了基于SOA技術(shù)的信息數(shù)據(jù)管理和共享平臺;謝小剛[3]在設(shè)計研究了SAR數(shù)據(jù)管理與共享交互平臺后提出在數(shù)據(jù)查詢和瀏覽響應(yīng)時間上的不足;朱麗娟[4]也指出了在功能設(shè)計、時間效率和網(wǎng)絡(luò)安全性能方面的改進空間;劉茲恒等[5]對我國高校科研數(shù)據(jù)管理與共享平臺調(diào)研發(fā)現(xiàn)只有少數(shù)平臺可以供用戶直接通過平臺創(chuàng)建、上傳和管理數(shù)據(jù)集,為用戶設(shè)置角色和訪問控制權(quán)限等,反映了當(dāng)前數(shù)據(jù)共享管理平臺的服務(wù)能力和共享水平還比較低的現(xiàn)實情況[6]。
本文提出基于微服務(wù)的軟件設(shè)計理念、數(shù)據(jù)分布式存儲與管理模式、異步多任務(wù)分析調(diào)度機制以及基于Token認證的數(shù)據(jù)共享技術(shù),可有效解決共享管理平臺中服務(wù)部署困難、可擴展性差、海量數(shù)據(jù)管理復(fù)雜、多任務(wù)分析速度慢、不同層級間數(shù)據(jù)共享和數(shù)據(jù)安全等問題。
本文研究參考“自頂向下”的設(shè)計思路以及大數(shù)據(jù)平臺架構(gòu)設(shè)計方法。以實現(xiàn)系統(tǒng)整體效果優(yōu)為目的,分析平臺實現(xiàn)的需求,從軟件系統(tǒng)開發(fā)的角度考慮系統(tǒng)的每個元素和子系統(tǒng)的功能、行為及成本,然后根據(jù)各元素之間的協(xié)調(diào)關(guān)系,將其連接成接口輕便實用、關(guān)系穩(wěn)定的子系統(tǒng),得到總體結(jié)構(gòu)。接著進行邏輯設(shè)計,把結(jié)構(gòu)轉(zhuǎn)化為規(guī)則的邏輯結(jié)構(gòu)或采用已經(jīng)經(jīng)過驗證的邏輯單元或模塊。最后,選擇合適的數(shù)據(jù)庫管理、緩存、服務(wù)部署等技術(shù)實完成系統(tǒng)總體架構(gòu)的搭建。系統(tǒng)在國家相關(guān)的政策法律法規(guī)下,按照行業(yè)規(guī)范和標(biāo)準(zhǔn),邏輯設(shè)計分成了四層,其功能和整體架構(gòu)如圖1所示。

圖1 整體架構(gòu)圖
通過數(shù)據(jù)中心、專題數(shù)據(jù)綜合應(yīng)用和系統(tǒng)管理三大子系統(tǒng)構(gòu)建系統(tǒng)整體架構(gòu)。在共享服務(wù)管理模塊管理著系統(tǒng)中所有的數(shù)據(jù)共享服務(wù)和接口,以微服務(wù)的形式將所有的地圖發(fā)布、訪問接口、附件目錄、數(shù)據(jù)瀏覽、分析等服務(wù)集成為一個模塊子系統(tǒng),在子系統(tǒng)中統(tǒng)一管理,保證數(shù)據(jù)訪問的一致性。各微服務(wù)以及數(shù)據(jù)集部署在不同的服務(wù)器上,服務(wù)間采用輕量級通信機制,搭建了系統(tǒng)的整體功能模塊。
微服務(wù)架構(gòu)不僅是一個系統(tǒng),而且還是一個概念,作為當(dāng)前系統(tǒng)開發(fā)領(lǐng)域的熱點技術(shù)之一,該架構(gòu)將傳統(tǒng)的重量級且緊密耦合的應(yīng)用程序系統(tǒng)分解為輕量級和松散耦合的微型應(yīng)用程序,每個微型服務(wù)都運行在自己的進程中并相互協(xié)同,以減少相互依存和移植,服務(wù)間采用HTTP、API這樣輕量級的通信機制使標(biāo)準(zhǔn)化對接變得容易,能夠有效解決單體應(yīng)用部署、配置、維護的復(fù)雜性問題。所有的微服務(wù)共同構(gòu)建起整個系統(tǒng),易于開發(fā)和維護、業(yè)務(wù)模塊技術(shù)不受限制、穩(wěn)定性高、可伸縮性強,充分體現(xiàn)了高內(nèi)聚、低耦合的軟件設(shè)計理念[7]。這些微服務(wù)圍繞業(yè)務(wù)功能進行構(gòu)建,可以使用不同的語言來編寫,并且可以使用不同的數(shù)據(jù)存儲技術(shù)。
Spring Cloud是當(dāng)前微服務(wù)主流的開發(fā)框架,具備開箱即用的特性,可極大提高開發(fā)效率,為微服務(wù)架構(gòu)提供了整套的解決方案[7]。微服務(wù)不強行依賴于運行平臺,可根據(jù)需求通過Docker、Tomcat等容器部署在本地服務(wù)器、阿里云及百度云等服務(wù)平臺。
與傳統(tǒng)的單體架構(gòu)相比,本文提出的基于微服務(wù)的前后端分離的架構(gòu)設(shè)計開發(fā)方式在用戶訪問量密集的情況下,或者高并發(fā)的普查大數(shù)據(jù)系統(tǒng)中,可以發(fā)揮出巨大的優(yōu)勢。并且由于系統(tǒng)拆分、分庫分表、讀寫分離等特點,當(dāng)某個微服務(wù)需要修改調(diào)試時,只需重新部署該微服務(wù)或針對性地對該微服務(wù)進行增加內(nèi)存、升級CPU或增加節(jié)點等操作即可方便地解決問題。系統(tǒng)搭建的架構(gòu)如圖2所示。

圖2 基于微服務(wù)理念的系統(tǒng)架構(gòu)圖
前端采用的是Nginx框架來實現(xiàn)控制層和視圖層,采用jQuery對應(yīng)用層進行服務(wù)請求。使用者通過特定的URL訪問平臺,而平臺利用SSO單點登錄來對用戶的權(quán)限進行控制。用戶只需要在一個頁面登錄就能夠獲取到系統(tǒng)內(nèi)各個服務(wù)模塊的授權(quán)使用,后續(xù)擴展應(yīng)用模塊也可以快速地接入到現(xiàn)有的統(tǒng)一服務(wù)中。平臺不同微服務(wù)之間使用輕量級的通信機制RESTful API以實現(xiàn)交互,它的數(shù)據(jù)輸出格式支持包括JSON、XML等。平臺服務(wù)層使用Nacos組件實現(xiàn)微服務(wù)的注冊和發(fā)現(xiàn)、身份認證和動態(tài)路由。配置中心采用Spring Cloud Config實現(xiàn)統(tǒng)一配置管理,并且基于微服務(wù)的特性,利用Tomcat服務(wù)集群作為容器。在數(shù)據(jù)資源層使用MyBatis框架,提出分布式方式分布在不同的服務(wù)器中對數(shù)據(jù)進行分析管理,當(dāng)前登錄的用戶信息儲存在Redis數(shù)據(jù)庫,其他入庫及成果附件、更新數(shù)據(jù)存儲在PostgreSQL數(shù)據(jù)庫中,空間數(shù)據(jù)則可以通過分布式存儲引擎存儲在不同的數(shù)據(jù)庫中。系統(tǒng)整體集群邏輯如圖3所示。

圖3 系統(tǒng)分布式集群圖
在數(shù)據(jù)的采集調(diào)查以及今后的統(tǒng)一時點更新工作開展結(jié)束后,形成的數(shù)據(jù)、圖件、文字和數(shù)據(jù)庫成果從大類上劃分可以分為三類:空間數(shù)據(jù)、舉證成果和成果文檔資料。這些數(shù)據(jù)的管理與共享成了亟待解決的問題,從穩(wěn)定性、可擴展性、開源等幾個方面考慮,平臺選用GeoJSON、PostgreSQL、GeoSever、OpenLayers、SSO單點登錄等數(shù)據(jù)標(biāo)準(zhǔn)和關(guān)鍵技術(shù),通過數(shù)據(jù)管理服務(wù)、數(shù)據(jù)分析服務(wù)和數(shù)據(jù)授權(quán)服務(wù)完成數(shù)據(jù)共享模式的實現(xiàn)。
數(shù)據(jù)管理模塊主要針對空間數(shù)據(jù)進行管理。空間數(shù)據(jù)指影像和矢量地圖,包含了人們能夠見到的所有地物的抽象要素,將通過質(zhì)量檢查后的三調(diào)矢量數(shù)據(jù)放置到平臺空間數(shù)據(jù)庫進行管理,包括數(shù)據(jù)入庫、數(shù)據(jù)發(fā)布、數(shù)據(jù)更新等。
(1) 數(shù)據(jù)入庫。平臺通過提供數(shù)據(jù)入庫的接口,以統(tǒng)一的GeoJSON格式的數(shù)據(jù)標(biāo)準(zhǔn)入庫,并采用PostgreSQL+PostGIS技術(shù)存儲和管理數(shù)據(jù)。
(2) 數(shù)據(jù)發(fā)布。本平臺使用GeoSever管理和發(fā)布數(shù)據(jù),OpenLayers技術(shù)展示數(shù)據(jù)。通過在B/S端操作,對數(shù)據(jù)做一站式發(fā)布和切片管理,將這些數(shù)據(jù)發(fā)布為服務(wù),提供其他的地方使用,以實現(xiàn)地圖數(shù)據(jù)的發(fā)布和共享。并且系統(tǒng)可以針對不同用戶權(quán)限,發(fā)布不同的數(shù)據(jù),提供不同的接口。
(3) 數(shù)據(jù)更新。數(shù)據(jù)的更新機制分為增量數(shù)據(jù)更新和整庫數(shù)據(jù)更新。可以直接在B/S端進行操作,實現(xiàn)數(shù)據(jù)的版本更新,更新保留以前數(shù)據(jù)的版本記錄。同時,數(shù)據(jù)管理模塊可以對所有的使用數(shù)據(jù)進行監(jiān)控,如數(shù)據(jù)的總量是多少、完成的總量是多少、附加總量、各服務(wù)的訪問總量等,這些數(shù)據(jù)會在數(shù)據(jù)監(jiān)控模塊中以圖表的形式呈現(xiàn),以便于更直觀地了解數(shù)據(jù)的狀態(tài)。
本文提出了異步多任務(wù)分析模式提高分析效率,待分析完成后將數(shù)據(jù)結(jié)果返回給用戶。具體流程如圖4所示。

圖4 后臺分析調(diào)度服務(wù)流程
在分析調(diào)度過程中,首先確定了統(tǒng)一的分析結(jié)果數(shù)據(jù)結(jié)構(gòu)及傳遞的參數(shù)格式和結(jié)果存儲方式,包括JSON、XML等。通過已確定的分析結(jié)果數(shù)據(jù)結(jié)構(gòu)進行存儲數(shù)據(jù),然后按照結(jié)果數(shù)據(jù)結(jié)構(gòu),編寫調(diào)用數(shù)據(jù)的服務(wù)入口規(guī)范文檔。這樣,在前端做數(shù)據(jù)分析的時候,數(shù)據(jù)通過調(diào)度服務(wù)入口傳入?yún)?shù),通過后臺分析調(diào)度服務(wù)(Background Analysis Scheduling Service,BASS)程序傳入系統(tǒng)空間庫,在大量數(shù)據(jù)區(qū)域中抓取所需數(shù)據(jù),進行如:數(shù)據(jù)入庫、占地分析、流量分析、統(tǒng)計分析、數(shù)據(jù)更新等操作,得到分片數(shù)據(jù)。最后調(diào)用服務(wù)接口以獲得按確定格式輸出的分析結(jié)果、進度數(shù)據(jù)或錯誤日志數(shù)據(jù),將數(shù)據(jù)進行解析并通過HTML超文本規(guī)范進行前端數(shù)據(jù)展示,前端可同時展示多個分析窗口。至此,分析調(diào)度服務(wù)完成。
數(shù)據(jù)權(quán)限管理是通過SSO單點登錄技術(shù),在平臺使用者申請平臺使用權(quán)限時,管理員針對權(quán)限不同的使用者可以訪問、查看哪些數(shù)據(jù)做出了相關(guān)的配置。同時,服務(wù)器自動賦予使用者相應(yīng)的opentoken,在每個共享服務(wù)請求時,對該使用者的opentoken進行校驗,校驗時間有效性、權(quán)限有效性和請求服務(wù)的正確性等以實現(xiàn)權(quán)限的檢查和過濾。
對于數(shù)據(jù)和模塊的授權(quán)服務(wù)是不同的,雖然都是通過opentoken進行攔截,但是對于模塊的授權(quán)管理是在客戶端請求后,SSO服務(wù)在其訪問應(yīng)用層之前進行攔截,檢查其是否有訪問模塊功能的權(quán)限。在平臺使用者對各個模塊進行操作分析后,想要返回所需數(shù)據(jù),也必須通過SSO服務(wù)檢查過濾其權(quán)限才能得到其權(quán)限內(nèi)的數(shù)據(jù)。服務(wù)授權(quán)和調(diào)用流程如圖5、圖6所示。

圖5 微服務(wù)授權(quán)流程

圖6 微服務(wù)調(diào)用流程
系統(tǒng)內(nèi)部使用角色權(quán)限管理進行數(shù)據(jù)接口控制。用戶在平臺界面注冊賬戶,聯(lián)系管理員說明需要的模塊功能或者數(shù)據(jù),管理員則在系統(tǒng)管理子系統(tǒng)的權(quán)限管理中將對應(yīng)的角色分配給該用戶,即服務(wù)器生成相應(yīng)權(quán)限的opentoken參數(shù)賦予該用戶,同時還可以設(shè)置該權(quán)限的有效日期。例如系統(tǒng)用戶想要對地圖數(shù)據(jù)進行分析,則聯(lián)系管理員分配其專題數(shù)據(jù)綜合應(yīng)用管理員的角色,該系統(tǒng)用戶就能對專題數(shù)據(jù)綜合應(yīng)用子系統(tǒng)進行操作,使用該子系統(tǒng)中的空間數(shù)據(jù)分析、附件管理和專題圖瀏覽查詢等功能。用戶瀏覽舉證成果時,舉證位置、方位、圖像及其他信息的界面如圖7所示。

圖7 舉證“一張圖”界面
系統(tǒng)的外部使用微服務(wù)授權(quán),管理員設(shè)置opentoken的數(shù)據(jù)訪問過濾條件。在共享用戶申請使用某些微服務(wù)接口時,管理員在數(shù)據(jù)中心子系統(tǒng)的共享服務(wù)管理處新增用戶所需接口的URL地址和參數(shù)等信息,可共享的接口有:組件服務(wù)、數(shù)據(jù)服務(wù)和地圖服務(wù)。
管理員在新增接口后,應(yīng)在服務(wù)授權(quán)管理模塊對該用戶進行服務(wù)授權(quán),操作完成后,用戶可以得到相應(yīng)的opentoken。這樣,不同需求的用戶就可以在不同的平臺上通過對應(yīng)的方式調(diào)用接口地址以及傳入相應(yīng)的參數(shù)和opentoken就可以在其他平臺上使用該接口的功能。如網(wǎng)頁用戶可以通過post請求該接口的URL和opentoken在網(wǎng)頁端使用該接口。
在對數(shù)據(jù)和模塊的授權(quán)服務(wù)中,管理員同樣通過權(quán)限管理找到被授權(quán)用戶的信息,對其進行編輯角色或編輯模塊功能的操作,以實現(xiàn)對用戶的數(shù)據(jù)和功能模塊訪問權(quán)限的管理。這樣,不同角色的用戶可訪問的數(shù)據(jù)和模塊功能不同。例如要對某數(shù)據(jù)中心管理員的功能模塊的權(quán)限進行限制,設(shè)置界面如圖8所示。

圖8 功能模塊權(quán)限設(shè)置界面
本文介紹了三調(diào)數(shù)據(jù)共享管理平臺實現(xiàn)的關(guān)鍵技術(shù)。在第三次全國國土調(diào)查采集的大量數(shù)據(jù)成果的基礎(chǔ)上,提出了基于微服務(wù)設(shè)計理念的架構(gòu)體系,利用異步多任務(wù)分析調(diào)度機制、ArcEngine和PostGIS技術(shù)處理、分析和統(tǒng)計地理信息數(shù)據(jù),SSO單點登錄技術(shù)驗證平臺使用者的信息,GeoServer技術(shù)發(fā)布和共享地圖數(shù)據(jù),OpenLayers技術(shù)來展示地圖,并通過PostgreSQL數(shù)據(jù)庫集群存儲和管理空間數(shù)據(jù)。平臺具有低耦合、高可用、可擴展等特點,能夠很好地完成數(shù)據(jù)的管理應(yīng)用、統(tǒng)計分析、更新維護、接收上報和數(shù)據(jù)備份等功能,可適應(yīng)高并發(fā)條件下的多任務(wù)數(shù)據(jù)分析、展示等操作,具備分布式處理能力,也保證了在管理、操作數(shù)據(jù)方面的安全性問題,有效地解決了傳統(tǒng)共享管理平臺服務(wù)間關(guān)系復(fù)雜、分析效率低、容錯性差等問題,可適用于不同州市級三調(diào)成果數(shù)據(jù)共享服務(wù)平臺,對該領(lǐng)域相關(guān)問題具有較好的參考價值。