雷 濤,郭 亮,侯忠發(fā),王 路,張 念
(1.四川華電金川水電開(kāi)發(fā)有限公司,成都 610041; 2.武漢長(zhǎng)江科創(chuàng)科技發(fā)展有限公司,武漢 430010)
隨著科學(xué)技術(shù)飛速發(fā)展,水工建筑數(shù)字化是水利行業(yè)發(fā)展的必然趨勢(shì),促進(jìn)建造過(guò)程向信息化、智能化的轉(zhuǎn)型,是新時(shí)代綠色水利建設(shè)的基本要求。由于水利行業(yè)實(shí)施終身追責(zé)制度,其對(duì)數(shù)據(jù)真實(shí)性和完整性極其重視,同時(shí)建造過(guò)程產(chǎn)生的海量數(shù)據(jù)需要實(shí)時(shí)處理,所以構(gòu)建一套適用的灌漿信息系統(tǒng)對(duì)灌漿過(guò)程數(shù)據(jù)進(jìn)行精細(xì)管理成為各大中型水電站管理灌漿工程的關(guān)鍵手段。近年來(lái)各個(gè)大型水電站灌漿信息系統(tǒng)的發(fā)展方向主要有2種:一種是向著全周期灌漿數(shù)據(jù)進(jìn)行管理,力求獲得最全面的數(shù)據(jù);一種是朝著基于數(shù)值模擬的各類灌漿質(zhì)量的表現(xiàn)方法,力求進(jìn)行最深入的分析。這兩種發(fā)展方向確實(shí)提高了大型水電工程的建設(shè)質(zhì)量管理水平,但是對(duì)于流域內(nèi)的中小型電站并沒(méi)有足夠的預(yù)算去建立完善的信息系統(tǒng)或進(jìn)行深入的數(shù)據(jù)分析,所以如何快速部署一套適用中小型電站建設(shè)管理,同時(shí)又能快速集成多個(gè)應(yīng)用系統(tǒng)和數(shù)據(jù)管理方法是需要在實(shí)踐中重點(diǎn)解決的問(wèn)題。
紅衛(wèi)橋水電站系俄日河干流水電規(guī)劃“一庫(kù)四級(jí)”自上而下的最后一級(jí),坐落于四川省阿壩藏族羌族自治州金川縣境內(nèi),由四川華電金川水電開(kāi)發(fā)有限公司開(kāi)發(fā)建設(shè)[1]。項(xiàng)目工程基礎(chǔ)圍巖為三疊系中統(tǒng)雜谷腦組上段(T2z2)變質(zhì)砂巖夾少量板巖,巖石致密堅(jiān)硬,存在若干條隨機(jī)發(fā)育裂隙圍巖,部分裂隙張開(kāi),圍巖主要為Ⅲ類,為滿足設(shè)計(jì)要求,需要對(duì)多個(gè)部位進(jìn)行灌漿施工,其中引水隧洞工程為施工的難點(diǎn),紅衛(wèi)橋電站引水隧洞長(zhǎng)度為19.39 km,其中Ⅳ類圍巖3 530 m(占總長(zhǎng)18.21%),Ⅴ類圍巖3 686.09 m(占總長(zhǎng)19.01%)[2]。灌漿施工具有隱蔽性強(qiáng),灌漿過(guò)程難以控制,灌漿質(zhì)量難以評(píng)價(jià)等工程特點(diǎn)。灌漿工程資料中包含了灌漿施工全過(guò)程的記錄,這些灌漿過(guò)程記錄是灌漿效果最直觀、全面的反映,為灌漿效果分析提供數(shù)據(jù)來(lái)源,是評(píng)價(jià)灌漿施工質(zhì)量和灌漿效果、工程款結(jié)算的直接依據(jù)。同時(shí),灌漿過(guò)程數(shù)據(jù)真實(shí)地反映了灌漿施工過(guò)程,是進(jìn)行灌漿質(zhì)量控制的重要參考依據(jù)。
Docker是PaaS提供商dotCloud開(kāi)源的一個(gè)基于Linux系統(tǒng)容器的高級(jí)容器引擎[3],源代碼托管在Github上, 基于go語(yǔ)言并遵從Apache2.0協(xié)議開(kāi)源。Docker使用輕量級(jí)的容器虛擬化平臺(tái),并且結(jié)合系統(tǒng)自帶的工作流和應(yīng)用工具,對(duì)需要的應(yīng)用程序進(jìn)行部署和管理。Docker能夠讓用戶需要的配置和程序在一個(gè)安全、隔離的容器中運(yùn)行,且不額外開(kāi)銷系統(tǒng)資源。Docker的系統(tǒng)原理如圖1所示。
Docker包括3個(gè)基本要素:鏡像、容器、倉(cāng)庫(kù)[4]。
Docker的鏡像是一個(gè)標(biāo)準(zhǔn)化工具,它是一個(gè)帶有獨(dú)立的文件系統(tǒng)的只讀模板,且包括了運(yùn)行容器所需的數(shù)據(jù)。鏡像可以通過(guò)Docker的屬性Docker文件的創(chuàng)建功能構(gòu)建,Docker文件作用是一個(gè)描述文件,包含了Docker鏡像里系統(tǒng)運(yùn)行的各種材料,這些材料通過(guò)Docker文件對(duì)基礎(chǔ)文件系統(tǒng)創(chuàng)建合適的層次結(jié)構(gòu)。
Docker的容器是軟件穩(wěn)定的運(yùn)行的環(huán)境。Docker容器類似虛擬機(jī),可以支持運(yùn)行軟件的啟動(dòng)、停止、刪除等操作。每個(gè)容器間是相互隔離的。容器中會(huì)運(yùn)行特定的應(yīng)用,包含特定應(yīng)用的代碼及所需的依賴文件,這些是由Docker的鏡像的運(yùn)行功能創(chuàng)建的運(yùn)行的。
Docker文件面向用戶開(kāi)發(fā),Docker鏡像為交付標(biāo)準(zhǔn),Docker容器涉及運(yùn)行和部署,三者密不可分,是Docker體系的基石[5]。
Docker倉(cāng)庫(kù)相當(dāng)于一個(gè)本地系統(tǒng)外的代碼庫(kù)。Docker倉(cāng)庫(kù)是用來(lái)包含鏡像的位置,Docker可以通過(guò)入庫(kù)功能提交到倉(cāng)庫(kù),也可以從指定倉(cāng)庫(kù)出庫(kù)功能拉取鏡像到本地。簡(jiǎn)言之鏡像相當(dāng)于貨物,容器相當(dāng)于集裝箱,倉(cāng)庫(kù)相當(dāng)于碼頭,將貨物放入與之匹配的集裝箱內(nèi),才能將倉(cāng)庫(kù)內(nèi)的貨物從一個(gè)碼頭發(fā)往另一個(gè)碼頭。
容器技術(shù)已經(jīng)有成熟的應(yīng)用,科技巨頭IBM一直在使用容器[6]。單獨(dú)就Docker容器而言,其與VMS代表的虛擬機(jī)技術(shù)的顯著區(qū)別見(jiàn)圖2。
圖2 Docker和VMS的區(qū)別示意圖
Docker可把應(yīng)用軟件裝載在容器內(nèi),通過(guò)容器技術(shù)把應(yīng)用軟件變?yōu)橐环N標(biāo)準(zhǔn)化、可移植和自管理的組件,Docker組織的這種組件可在其他環(huán)境下進(jìn)行應(yīng)用軟件的開(kāi)發(fā)、測(cè)試和運(yùn)行,同時(shí)也可非常方便的將該組件運(yùn)行在生產(chǎn)環(huán)境下面。因此,對(duì)于開(kāi)發(fā)者來(lái)說(shuō)Docker可用來(lái)構(gòu)建隔離的標(biāo)準(zhǔn)化的運(yùn)行環(huán)境,提供了可移植的標(biāo)準(zhǔn)化的部署過(guò)程,Docker可輕松的完成規(guī)?;?、自動(dòng)化的部署工作;對(duì)于廣大開(kāi)發(fā)者來(lái)說(shuō),Docker的映像創(chuàng)建、共享等數(shù)據(jù)管理功能,其實(shí)是提供了一套開(kāi)發(fā)環(huán)境的管理方法,并且是一種能夠跨平臺(tái)持續(xù)集成的開(kāi)發(fā)環(huán)境。
Docker的優(yōu)點(diǎn)總結(jié)如下:
(1)啟動(dòng)速度快并且占用資源少。
(2)軟件搬家方便、快速部署和自動(dòng)部署。
(3)具有持續(xù)集成的能力。
目前,灌漿信息系統(tǒng)成為各大電站進(jìn)行過(guò)程管理和質(zhì)量管控的關(guān)鍵技術(shù)抓手,傳統(tǒng)的灌漿信息系統(tǒng)基本結(jié)構(gòu)如圖3所示。
圖3 傳統(tǒng)灌漿信息系統(tǒng)結(jié)構(gòu)
灌漿信息系統(tǒng)一般集成了數(shù)據(jù)庫(kù)、應(yīng)用服務(wù)、用戶界面,并將三者有機(jī)結(jié)合在一起,形成采集,處理,監(jiān)控三位一體的采集數(shù)據(jù)管理方案。第一時(shí)間采集,第一時(shí)間統(tǒng)計(jì),第一實(shí)踐展現(xiàn),使得現(xiàn)場(chǎng)的管理效率大為提升[7]。一般而言,對(duì)于灌漿信息系統(tǒng)的開(kāi)發(fā)和部署在需求溝通明確的條件下需要3個(gè)月。紅衛(wèi)橋電站基本灌漿施工計(jì)劃如表1所示。
表1 紅衛(wèi)橋某部位基礎(chǔ)灌漿施工安排計(jì)劃
根據(jù)現(xiàn)場(chǎng)管理需求,灌漿信息系統(tǒng)需要在1個(gè)月內(nèi)完成部署開(kāi)發(fā),否則就會(huì)影響到現(xiàn)場(chǎng)的灌漿施工的管控。由于疫情因素,我方無(wú)法向現(xiàn)場(chǎng)安排軟件工程師。為了快速響應(yīng)工程管理者對(duì)現(xiàn)場(chǎng)施工的管理要求,本項(xiàng)目制定了一套基于Docker的系統(tǒng)部署方案,能夠?qū)崿F(xiàn)遠(yuǎn)程快速部署應(yīng)用的計(jì)算機(jī)技術(shù)。
為了完成部署,項(xiàng)目需要3套計(jì)算機(jī),需求見(jiàn)表2。
表2 Docker部署服務(wù)基本需求
本地服務(wù)器是指位于長(zhǎng)江科學(xué)院內(nèi)網(wǎng)的服務(wù)器,遠(yuǎn)程服務(wù)器是位于公網(wǎng)上的云服務(wù)器,現(xiàn)地服務(wù)器是紅衛(wèi)橋現(xiàn)場(chǎng)將要部署的內(nèi)網(wǎng)服務(wù)器,整個(gè)系統(tǒng)的架構(gòu)如圖4所示。
圖4 紅衛(wèi)橋服務(wù)器遠(yuǎn)程部署架構(gòu)
本地服務(wù)器A中具有一套多種應(yīng)用服務(wù)以及應(yīng)用服務(wù)的環(huán)境的灌漿信息系統(tǒng),位于局域網(wǎng)1中,現(xiàn)需要將其部署在位于局域網(wǎng)2中的現(xiàn)地服務(wù)器C,由于網(wǎng)絡(luò)安全因素,局域網(wǎng)中的服務(wù)器A、C不能直接連接,需要借用公網(wǎng)云服務(wù)器進(jìn)行中轉(zhuǎn)。傳統(tǒng)情況下,由于服務(wù)器C不具備運(yùn)行多種應(yīng)用服務(wù)的環(huán)境,所以服務(wù)器A中的應(yīng)用無(wú)法直接在現(xiàn)地服務(wù)器C中部署,需進(jìn)行現(xiàn)地的服務(wù)環(huán)境,應(yīng)用兼容,網(wǎng)絡(luò)安全等進(jìn)行全面的測(cè)試,工作量大時(shí)間長(zhǎng)。但是借用Docker服務(wù)器A中的應(yīng)用服務(wù)以及應(yīng)用服務(wù)的環(huán)境可以通過(guò)鏡像和容器進(jìn)行虛擬化,達(dá)到快速在現(xiàn)地服務(wù)器C中運(yùn)行的目的,這就是Docker技術(shù)應(yīng)用的核心。整個(gè)過(guò)程可以分為4步:
(1)準(zhǔn)備一臺(tái)本地的Linux服務(wù)器A,遠(yuǎn)程Linux服務(wù)器B。Docker軟件包已經(jīng)包含在了默認(rèn)的CentOS.Extras軟件源里,它是開(kāi)源且免費(fèi)的。
運(yùn)行:
#yum install docker
#systemctl start docker.service
至此則完成Docker環(huán)境的安裝與啟動(dòng);
(2)在該Docker中安裝并調(diào)試應(yīng)用服務(wù)的環(huán)境即容器,
#docker run-P 5000:5000 registry
建立應(yīng)用服務(wù)的若干個(gè)鏡像images;將做好的Docker鏡像images上傳到遠(yuǎn)程Linux服務(wù)器B中建立好的數(shù)據(jù)倉(cāng)庫(kù)中,并在遠(yuǎn)端的根目錄下建立images的映射關(guān)系。
#docker run -P 5000:5000 -V app/localregistry:/app-e
STORAGE_PATH=/app registryconf
(3)利用push上傳鏡像文件,至此完成了Docker鏡像的制作和上傳,實(shí)現(xiàn)了應(yīng)用服務(wù),應(yīng)用服務(wù)的環(huán)境和系統(tǒng)的分離。
(4)在紅衛(wèi)橋網(wǎng)絡(luò)信息中心辦公室,布置一套現(xiàn)場(chǎng)Linux服務(wù)器C,通過(guò)pull操作下載鏡像app,
#docker pull:5000/app
然后在紅衛(wèi)橋內(nèi)網(wǎng)服務(wù)器的docker中啟動(dòng)應(yīng)用服務(wù)的容器,利用run操作就可以直接啟動(dòng)放在鏡像中的服務(wù),通過(guò)這樣可以部署所有需要的應(yīng)用和服務(wù)到現(xiàn)地服務(wù)器C中。整個(gè)系統(tǒng)的安全性通過(guò)網(wǎng)關(guān)前的企業(yè)級(jí)防火墻以及局域網(wǎng)內(nèi)的安全設(shè)置進(jìn)行保障。
紅衛(wèi)橋灌漿管理信息系統(tǒng)應(yīng)用于主帷幕廊道施工管理,通過(guò)Docker部署了灌漿數(shù)據(jù)記錄,實(shí)時(shí)參數(shù)曲線功能和壓力報(bào)警功能。并通過(guò)形象化展示進(jìn)行呈現(xiàn),呈現(xiàn)效果和傳統(tǒng)部署方式并無(wú)兩樣。
2.3.1 實(shí)現(xiàn)了灌漿記錄表的同步展現(xiàn)
灌漿記錄表反映現(xiàn)場(chǎng)灌漿生產(chǎn)最原始的基礎(chǔ)數(shù)據(jù),現(xiàn)場(chǎng)灌漿記錄表同工程管理者信息網(wǎng)絡(luò)端同步展現(xiàn)(圖5),即可確認(rèn)現(xiàn)場(chǎng)的施工情況,又可以和現(xiàn)場(chǎng)紙質(zhì)灌漿資料進(jìn)行驗(yàn)證,確保原始數(shù)據(jù)的完備性和真實(shí)性,是工程管理者實(shí)現(xiàn)現(xiàn)場(chǎng)管理的重要手段[8]。
圖5 網(wǎng)絡(luò)端灌漿記錄
2.3.2 灌漿參數(shù)的分析
壓力是灌漿生產(chǎn)作業(yè)的控制性關(guān)鍵參數(shù),系統(tǒng)部署了壓力監(jiān)控服務(wù)。系統(tǒng)能對(duì)每天產(chǎn)生的壓力瞬時(shí)超限和超限壓力范圍分布情況進(jìn)行柱狀圖顯示,根據(jù)數(shù)據(jù)反饋督促施工單位進(jìn)行施工過(guò)程持續(xù)管理和優(yōu)化,實(shí)現(xiàn)了施工過(guò)程的反饋管理。見(jiàn)圖6。
圖6 灌漿壓力日?qǐng)?bào)警統(tǒng)計(jì)柱狀圖和分布直方圖
2.3.3 數(shù)據(jù)現(xiàn)場(chǎng)二維碼現(xiàn)場(chǎng)驗(yàn)證
灌漿信息系統(tǒng)支持的灌漿記錄表,能夠顯示二維碼,通過(guò)對(duì)小程序?qū)ΧS碼掃描,可以獲取灌漿作業(yè)基本信息,以及灌漿資料的真?zhèn)?有效反映了過(guò)程數(shù)據(jù)和現(xiàn)場(chǎng)過(guò)程的對(duì)應(yīng)關(guān)系,防止現(xiàn)場(chǎng)進(jìn)行虛假灌漿,確保灌漿質(zhì)量。小程序信息驗(yàn)證見(jiàn)圖7。
圖7 小程序信息驗(yàn)證
隨著施工的深入展開(kāi),4#—6#洞地質(zhì)缺陷逐步暴露,部分試驗(yàn)生產(chǎn)段出現(xiàn)1 000 kg/m的超大灌量,工程管理者通過(guò)組織專家咨詢后,提出定制報(bào)警功能,以便對(duì)施工過(guò)程進(jìn)行合理控制。對(duì)灌漿參數(shù)分析后,提出固結(jié)灌漿量控制報(bào)警指標(biāo)為200 kg/m,回填量控制報(bào)警指標(biāo)為100 kg/m2。經(jīng)過(guò)制定灌漿信息系統(tǒng)報(bào)警功能,督促施工單位改進(jìn)施工工序,加強(qiáng)對(duì)施工作業(yè)面嵌縫堵漏后,4#洞下游、5#洞上游、5#洞下游—6#洞上游、6#洞下游—7#洞上游、7#洞下游—8#洞上游等施工部位單位注漿量顯著下降,為工程管理的投資和質(zhì)量平衡提供了技術(shù)抓手。引水隧端賴回填灌漿和固結(jié)灌漿統(tǒng)計(jì)見(jiàn)表3、表 4。
表3 引水隧洞回填灌漿統(tǒng)計(jì)
表4 引水隧洞固結(jié)灌漿統(tǒng)計(jì)
新冠疫情雖然對(duì)勞動(dòng)力密集型產(chǎn)業(yè)產(chǎn)生沖擊,但運(yùn)用灌漿信息系統(tǒng)有效提高了現(xiàn)場(chǎng)監(jiān)管的效率,降低了疫情對(duì)行業(yè)監(jiān)管的沖擊。利用Docker技術(shù)實(shí)現(xiàn)了快速部署和遠(yuǎn)程開(kāi)發(fā),縮短了軟件開(kāi)發(fā)的溝通成本,降低了信息系統(tǒng)應(yīng)用門(mén)檻;提高了數(shù)據(jù)在生產(chǎn)實(shí)踐中的指導(dǎo)作用。
在此情況下,通過(guò)技術(shù)應(yīng)用灌漿過(guò)程監(jiān)管率達(dá)到90%以上;灌漿過(guò)程數(shù)據(jù)有效性達(dá)到85%以上;灌漿資料合格率達(dá)到100%,灌漿質(zhì)量合格率達(dá)100%。
“十四五”期間,水電開(kāi)發(fā)的重點(diǎn)地區(qū)在四川、云南、西藏地區(qū),這些地區(qū)地處偏遠(yuǎn),建設(shè)條件艱苦,人口稀少,對(duì)電站的建設(shè)管庫(kù)提出了前所未有的挑戰(zhàn)。對(duì)于基礎(chǔ)灌漿這樣具有隱蔽性的并且分散的施工作業(yè),通過(guò)信息系統(tǒng)可以將分散的作業(yè)面進(jìn)行集中管理。由于中小型電站的預(yù)算有限,時(shí)間也有限,不太可能有太多資源用于灌漿信息系統(tǒng)軟件開(kāi)發(fā)。采用docker技術(shù),由于環(huán)境部署方便,兼容性強(qiáng),新功能的開(kāi)發(fā)再使用中僅以鏡像更新包的形式更新即可,幾乎不影響使用,已開(kāi)發(fā)的應(yīng)用可以放入工程管理者的流域建設(shè)管理的企業(yè)云倉(cāng)庫(kù)中,便于流域中其他中小型電站都可免費(fèi)使用這種應(yīng)用服務(wù)[9]。
在“水利工程補(bǔ)短板、水利行業(yè)強(qiáng)監(jiān)管”的背景下,對(duì)于流域開(kāi)發(fā)而言,提高中小型水利工程的監(jiān)管水平是提高整體流域施工監(jiān)管水平的關(guān)鍵,而基于Docker技術(shù)灌漿信息系統(tǒng)的部署是一種可輕量化持續(xù)集成的開(kāi)發(fā)部署。Docker遠(yuǎn)程技術(shù)與本地技術(shù)構(gòu)建信息系統(tǒng)相比較,Docker遠(yuǎn)程技術(shù)的應(yīng)用將系統(tǒng)部署時(shí)間提高了近10倍,具有傳統(tǒng)服務(wù)器部署方式無(wú)法比擬的優(yōu)勢(shì)。利用Docker技術(shù)部署灌漿信息管理系統(tǒng)提升軟件服務(wù)質(zhì)量同時(shí),也提高了資源利用率,降低了部署成本,可以將更多精力放在軟件的適應(yīng)性開(kāi)發(fā)上,是在國(guó)家“十四五”流域規(guī)劃建設(shè)中,適合中小電站信息系統(tǒng)部署的一項(xiàng)具有廣闊前景的應(yīng)用技術(shù)。