王震宇,趙興偉,付功云
(1. 中鐵第六勘察設(shè)計(jì)院集團(tuán)有限公司,天津 300308;2. 中鐵大連地鐵五號(hào)線有限公司,大連 116011)
當(dāng)前軌道交通工程BIM 技術(shù)應(yīng)用主要為BIM 建模及模型應(yīng)用、BIM 方案展示、BIM 協(xié)同設(shè)計(jì)等,隨著5G、大數(shù)據(jù)、物聯(lián)網(wǎng)、云計(jì)算、移動(dòng)應(yīng)用等技術(shù)水平的提高,結(jié)合軌道交通工程線網(wǎng)狀特點(diǎn),并以GIS 為骨架進(jìn)行整合,二維平面抽象的信息化管理向BIM+GIS 云平臺(tái)可視化管理升級(jí)已成為必然趨勢(shì)[1]。
軌道交通工程BIM+GIS 云平臺(tái)需承載大量BIM模型、GIS 瓦片數(shù)據(jù)、過(guò)程信息及文檔等,同時(shí),需滿足大量模型導(dǎo)入與操作的流暢性服務(wù)需求[2]。單體服務(wù)架構(gòu)的BIM+GIS 云平臺(tái)較難滿足多用戶并發(fā)訪問(wèn)、加載、操作BIM 與GIS 數(shù)據(jù)時(shí)的快速響應(yīng),且會(huì)帶來(lái)耦合度高、可靠性低、維護(hù)難度大、擴(kuò)展困難、阻礙技術(shù)創(chuàng)新等諸多不利因素,不滿足軌道交通工程BIM+GIS 云平臺(tái)應(yīng)用要求。
為解決在單體服務(wù)架構(gòu)下各類系統(tǒng)存在的問(wèn)題,眾多研究人員展開(kāi)了研究。靳磊采用微服務(wù)架構(gòu)改造中國(guó)國(guó)家鐵路集團(tuán)有限公司調(diào)度系統(tǒng),使其滿足業(yè)務(wù)需求、解決復(fù)雜問(wèn)題、加速交付過(guò)程、提高系統(tǒng)擴(kuò)展性[3];王雪峰等人從需求分析、關(guān)鍵技術(shù)、系統(tǒng)架構(gòu)和實(shí)現(xiàn)方法等幾個(gè)方面論證微服務(wù)架構(gòu)優(yōu)勢(shì),并采用Spring Cloud 作為微服務(wù)基礎(chǔ)框架集合,保證系統(tǒng)的可靠性和可擴(kuò)展性[4]。陶承提出基于微服務(wù)架構(gòu)的招標(biāo)采購(gòu)管理系統(tǒng)技術(shù)方案,為鐵路貨物、工程、服務(wù)相關(guān)的采購(gòu)行為的規(guī)范化、信息化管理提供技術(shù)支撐[5]。因此,本文引入微服務(wù)架構(gòu)設(shè)計(jì)軌道交通工程BIM+GIS 云平臺(tái),在實(shí)現(xiàn)三維可視化管理應(yīng)用的基礎(chǔ)上,合理利用硬件及網(wǎng)絡(luò)資源,提供更流暢的加載、瀏覽、管理等服務(wù)。
微服務(wù)架構(gòu)將單體服務(wù)程序拆分為一組小型服務(wù),每個(gè)小型服務(wù)運(yùn)行在獨(dú)立進(jìn)程中,小型服務(wù)間的通信采用REST API 輕量級(jí)HTTP 通信接口機(jī)制,如圖1 所示。研發(fā)人員可圍繞業(yè)務(wù)功能模塊構(gòu)建小型服務(wù)集,不同的小型服務(wù)相對(duì)獨(dú)立,可采用不同的服務(wù)器、編程語(yǔ)言、數(shù)據(jù)庫(kù)、存儲(chǔ)方式等,但會(huì)產(chǎn)生一些額外要求,例如:需制定微服務(wù)間的通信機(jī)制和解決跨服務(wù)器網(wǎng)絡(luò)連接穩(wěn)定性問(wèn)題。
圖1 微服務(wù)架構(gòu)模式示意
微服務(wù)架構(gòu)在軌道交通工程BIM+GIS 云平臺(tái)中應(yīng)用的優(yōu)點(diǎn):(1)易于開(kāi)發(fā)與維護(hù),松耦合模式、專注于單一服務(wù)、邊界清晰、復(fù)雜度低;(2)容錯(cuò)度高,故障針對(duì)單一微服務(wù),可通過(guò)重試、平穩(wěn)退化等機(jī)制實(shí)現(xiàn)應(yīng)用層容錯(cuò);(3)易于擴(kuò)展,每個(gè)微服務(wù)可獨(dú)立擴(kuò)展;(4)易于創(chuàng)新,技術(shù)選型靈活、去中心化,各團(tuán)隊(duì)可自由選擇合適的技術(shù)路線,技術(shù)升級(jí)重構(gòu)風(fēng)險(xiǎn)低,不影響整體研發(fā)進(jìn)度[6]。
目前市場(chǎng)上主流的微服務(wù)架構(gòu)框架有Apache Dubbo、Spring Boot/Cloud[7]、Thrift、Motan、gRPC等,主要分為HTTP、RPC 通信協(xié)議兩類,如表1 所示。
本文研發(fā)的軌道交通工程BIM+GIS 云平臺(tái),后端采用Spring MVC Framework 與MyBatis 持久化組件,數(shù)據(jù)庫(kù)采用MySQL 與MongoDB,前端采用Vue.js。根據(jù)BIM+GIS 云平臺(tái)主要技術(shù)路線,對(duì)比多種開(kāi)源框架,選擇與軌道交通工程特點(diǎn)契合度高的SpringBoot/Cloud 框架實(shí)現(xiàn)微服務(wù)架構(gòu)。
表1 微服務(wù)框架一覽表
本文依據(jù)單一職責(zé)、服務(wù)自治、輕量級(jí)通信、接口明確的原則,將軌道交通工程BIM+GIS 云平臺(tái)從一個(gè)單體服務(wù)拆分為多個(gè)微服務(wù),如圖2 所示,包括監(jiān)控量測(cè)、風(fēng)險(xiǎn)源、報(bào)表服務(wù)、整改處置、進(jìn)度管理、預(yù)警巡查、文件服務(wù)、盾構(gòu)機(jī)服務(wù)等。拆分后的微服務(wù)通過(guò)注冊(cè)中心統(tǒng)一管理,網(wǎng)關(guān)認(rèn)證鑒定后分發(fā),對(duì)外提供網(wǎng)頁(yè)訪問(wèn)服務(wù)。
軌道交通工程BIM+GIS 云平臺(tái)微服務(wù)架構(gòu)設(shè)計(jì)需考慮多方面因素。
(1)統(tǒng)一API 網(wǎng)關(guān),實(shí)現(xiàn)內(nèi)部服務(wù)的統(tǒng)一認(rèn)證與鑒權(quán),避免監(jiān)控量測(cè)、報(bào)表服務(wù)、盾構(gòu)機(jī)服務(wù)等內(nèi)部服務(wù)重復(fù)認(rèn)證與鑒權(quán),提高資源利用效率。
圖2 軌道交通工程BIM+GIS 云平臺(tái)微服務(wù)拆分
(2)數(shù)據(jù)庫(kù)橫向擴(kuò)展,BIM+GIS 云平臺(tái)采用關(guān)系型MySQL 主數(shù)據(jù)庫(kù),分布式部署,數(shù)據(jù)庫(kù)節(jié)點(diǎn)可隨需求的增加而隨時(shí)增加。
(3)有層次的緩存,針對(duì)靜態(tài)數(shù)據(jù)如GIS 瓦片數(shù)據(jù)、軌道交通工程BIM 模型等,平臺(tái)通過(guò)CDN 將數(shù)據(jù)緩存在距離客戶端最近的節(jié)點(diǎn),就近加載;針對(duì)動(dòng)態(tài)數(shù)據(jù),如盾構(gòu)機(jī)實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)、風(fēng)險(xiǎn)源狀態(tài)數(shù)據(jù)、實(shí)時(shí)進(jìn)度數(shù)據(jù)等,平臺(tái)采用Redis 緩存,使大部分服務(wù)請(qǐng)求可讀取Redis 緩存數(shù)據(jù),減輕數(shù)據(jù)庫(kù)壓力。
(4)服務(wù)編排管理依賴關(guān)系,將服務(wù)部署代碼化,實(shí)現(xiàn)服務(wù)發(fā)布、更新、追溯、彈性收縮等功能,增加服務(wù)的可追溯性、易管理性和自動(dòng)化能力。
(5)統(tǒng)一配置中心,管理所有微服務(wù)環(huán)境,進(jìn)行集中配置,保障云平臺(tái)底層支撐與對(duì)外服務(wù)連接通暢。
(6)統(tǒng)一日志服務(wù),所有微服務(wù)遵守統(tǒng)一日志規(guī)范,便于查詢分析。
(7)服務(wù)具備熔斷、限流、降級(jí)能力,繁忙、線程池滿、連接池滿則及時(shí)熔斷,超時(shí)則返回,負(fù)載過(guò)高則對(duì)部分服務(wù)限流、降級(jí)以保障核心服務(wù)。
綜合考慮以上7 方面因素,軌道交通工程BIM+GIS 云平臺(tái)微服務(wù)架構(gòu),如圖3 所示,應(yīng)用SpringBoot/Cloud 框架支撐、監(jiān)控服務(wù)治理,結(jié)合底層數(shù)據(jù)(數(shù)據(jù)庫(kù)、文件)的讀寫操作權(quán)限,部署監(jiān)控量測(cè)、報(bào)表服務(wù)、盾構(gòu)機(jī)服務(wù)等微服務(wù)應(yīng)用,實(shí)現(xiàn)終端用戶鑒權(quán)認(rèn)證后的業(yè)務(wù)管理。
圖3 軌道交通工程BIM+GIS 云平臺(tái)微服務(wù)架構(gòu)
SpringBoot/Cloud 框架主要包含:Spring Cloud Eureka 用于服務(wù)注冊(cè)和發(fā)現(xiàn)、斷路器Netflix Hystrix用于熔斷保護(hù)、Spring Cloud Ribbon 用于負(fù)載均衡、聲明式REST 客戶端Feign 調(diào)用遠(yuǎn)端HTTP 服務(wù)、Netflix Zuul 用于智能路由和過(guò)濾、SpringCloud Config用于配置中心、Spring Cloud Sleuth 用于鏈路跟蹤,同時(shí)每個(gè)微服務(wù)單獨(dú)連接數(shù)據(jù)庫(kù)[8]。
軌道交通工程BIM+GIS 云平臺(tái)微服務(wù)架構(gòu),可對(duì)網(wǎng)關(guān)、注冊(cè)中心、微服務(wù)進(jìn)行集群配置與發(fā)布,如圖4 所示。隨著軌道交通工程線網(wǎng)統(tǒng)一管理需求的深化,數(shù)據(jù)量、訪問(wèn)量急劇增加,為縮短平臺(tái)響應(yīng)時(shí)間,提高并發(fā)請(qǐng)求數(shù),可在微服務(wù)架構(gòu)的業(yè)務(wù)集群中增加主機(jī)擴(kuò)展節(jié)點(diǎn)并配置到相應(yīng)的注冊(cè)中心,以應(yīng)對(duì)軌道交通工程BIM+GIS 管理需求的增長(zhǎng)。
本文基于微服務(wù)架構(gòu)的軌道交通工程BIM+GIS云平臺(tái)實(shí)現(xiàn)工程建設(shè)全生命周期管理,包括設(shè)計(jì)階段的協(xié)同工作、文檔管理、三維瀏覽,施工階段的質(zhì)量管理、安全管理、進(jìn)度管理,運(yùn)營(yíng)維護(hù)階段的資產(chǎn)管理、巡檢管理、應(yīng)急管理等。設(shè)計(jì)單位、施工單位、監(jiān)理單位、設(shè)備單位等可基于軌道交通工程BIM+GIS 云平臺(tái)實(shí)現(xiàn)數(shù)字化交付與協(xié)同建設(shè)運(yùn)營(yíng)維護(hù)管理[9],如圖5所示。
圖4 軌道交通工程BIM+GIS 云平臺(tái)微服務(wù)架構(gòu)集群設(shè)計(jì)
圖5 基于微服務(wù)架構(gòu)的軌道交通工程BIM+GIS 云平臺(tái)應(yīng)用
目前,基于微服務(wù)架構(gòu)的軌道交通工程BIM+GIS 云平臺(tái)已在大連地鐵5 號(hào)線火梭區(qū)間海底盾構(gòu)隧道施工過(guò)程中試運(yùn)行?,F(xiàn)場(chǎng)實(shí)踐應(yīng)用表明,相較于單體架構(gòu)的BIM+GIS 平臺(tái),在同等數(shù)據(jù)規(guī)模和訪問(wèn)量的情況下,平臺(tái)內(nèi)存占用從1.4 GB 左右降低至500 MB,原始場(chǎng)景加載從10 s 降低至3 s,操作流暢度增加100%,并消除卡頓現(xiàn)象,盾構(gòu)機(jī)等實(shí)時(shí)大量數(shù)據(jù)經(jīng)Redis 緩存后導(dǎo)入MySQL,使效率提高80%,服務(wù)穩(wěn)定性提高200%以上。較好地滿足現(xiàn)階段單個(gè)工點(diǎn)、單條軌道交通工程線路,以及未來(lái)擴(kuò)展多條軌道交通工程線路的管理需求。
本文研究分析單體服務(wù)架構(gòu)缺陷和微服務(wù)架構(gòu)優(yōu)勢(shì),在制定微服務(wù)拆分方式和設(shè)計(jì)原則的基礎(chǔ)上,實(shí)現(xiàn)了軌道交通工程BIM+GIS云平臺(tái)的微服務(wù)架構(gòu)設(shè)計(jì)。并在大連地鐵5號(hào)線火梭區(qū)間海底盾構(gòu)隧道施工中進(jìn)行應(yīng)用。實(shí)踐表明,基于微服務(wù)架構(gòu)的軌道交通工程BIM+GIS 云平臺(tái)性能、承載能力、用戶體驗(yàn)度大幅度提高。微服務(wù)架構(gòu)的應(yīng)用,為BIM+GIS軌道交通工程云平臺(tái)進(jìn)一步深化研發(fā)及多領(lǐng)域應(yīng)用提供技術(shù)支撐。