鄭之光ZHENG Zhi-guang
(四川曠谷信息工程有限公司,成都 610036)
隨著經(jīng)濟的發(fā)展和各種工程建設(shè)的開展,我國在工程建設(shè)領(lǐng)域取得了長足的進步,安全是工程建設(shè)領(lǐng)域的重要課題,為確保工程質(zhì)量和施工安全,工程建設(shè)的任意階段幾乎都離不開結(jié)構(gòu)計算,結(jié)構(gòu)計算的流程常常會歷經(jīng)建模-分析-評審等一系列流程,但現(xiàn)階段大多均采用本地計算分析,計算書送審的形式。這樣的流程會產(chǎn)生許多問題,例如模型共享、數(shù)據(jù)丟失、重復(fù)工作等問題。
結(jié)構(gòu)計算采用的矩陣位移法、有限元法[1]等都屬于資源密集型任務(wù),如果采用云計算的方式進行結(jié)構(gòu)計算,只需要云端具有足夠資源處理這些資源密集型任務(wù),那么客戶端就不會有特定的配置要求。這使得通過平板、手機等設(shè)備使用結(jié)構(gòu)計算相關(guān)的各種服務(wù)成為了可能,能夠促進用戶隨時隨地使用這些功能,提高工作效率;另一方面,由于每個用戶的數(shù)據(jù)都存儲在云端,數(shù)據(jù)和文檔的共享會更方便,這意味著共享文件并不意味著傳輸文件,僅需要對文檔的訪問權(quán)進行授權(quán)即可;由于數(shù)據(jù)都存儲在云端,這為結(jié)構(gòu)并行計算、結(jié)構(gòu)計算會審評審系統(tǒng)、施工期數(shù)據(jù)挖掘等功能提供了有利條件;數(shù)據(jù)存儲在云端比存儲在本地更加安全,云端數(shù)據(jù)庫和存儲設(shè)計會進行故障安全設(shè)計,防止數(shù)據(jù)意外丟失。
工程建設(shè)中為確保施工安全,需要對各式各樣的臨時工程進行結(jié)構(gòu)計算以快速驗證臨時結(jié)構(gòu)是否滿足相關(guān)規(guī)范要求,因此存在工作量大,重復(fù)性高的特點,整個過程又需要經(jīng)過建模、計算和評審等信息流轉(zhuǎn)的過程,尚不存在系統(tǒng)化的平臺對其進行管理。
因此,為滿足大量用戶共同使用同一平臺,實現(xiàn)建模、計算、分析、模型信息存儲、計算書生成、結(jié)果評審等一體化流程,在進行系統(tǒng)架構(gòu)設(shè)計時,要注意可擴展性、可靠性、高性能和安全性。
系統(tǒng)整體分為前端架構(gòu)和后端架構(gòu),前后端數(shù)據(jù)通信通過定義API 的方式進行,實現(xiàn)前后端完全分離:前端采用HTML 進行數(shù)據(jù)呈現(xiàn);后端采用微服務(wù)架構(gòu)進行模塊化開發(fā),并采用Maven 進行多模塊管理,微服務(wù)獨立部署在Web 服務(wù)器上,并通過Nginx 反向代理到相應(yīng)服務(wù)器,實現(xiàn)負載均衡;前后端通信采用定義API 的方式進行,所有API 服務(wù)均會被微服務(wù)網(wǎng)關(guān)攔截,攔截的API 請求通過負載均衡策略路由到注冊的服務(wù)集群,待認(rèn)證與授權(quán)通過后才能放行。
如圖1 所示,系統(tǒng)分為了應(yīng)用層、網(wǎng)關(guān)層、注冊中心、服務(wù)層、組件服務(wù)層、存儲層和自動構(gòu)建層,通過由下及上的七個層級。各層級具體說明如下:
應(yīng)用層:為結(jié)構(gòu)計算平臺的前端資源部分,被部署在Nginx 中,該部分包含圖片資源、JS 腳本、CSS 樣式文件等內(nèi)容。其中Nginx 負責(zé)流量分發(fā)的邏輯和策略,將請求下發(fā)到網(wǎng)關(guān)層。
網(wǎng)關(guān)層:實現(xiàn)對進入微服務(wù)注冊中心的外部請求進行篩選,辨別其是否為惡意攻擊業(yè)務(wù)服務(wù)。通過進行嚴(yán)格的清洗與過濾,防止系統(tǒng)遭受攻擊。同時網(wǎng)關(guān)層還具備用戶鑒權(quán)等功能,能有效防止如偽造請求等一系列非法請求對系統(tǒng)進行侵害。
注冊中心:負責(zé)管理、記錄服務(wù)提供者的信息。服務(wù)調(diào)用者將需求提供至注冊中心,注冊中心將符合需求的服務(wù)進行反饋。同時服務(wù)提供方與注冊中心之間通過“心跳”機制進行監(jiān)控,當(dāng)某個服務(wù)提供方出現(xiàn)問題,注冊中心將其從服務(wù)列表中剔除。
服務(wù)層:是結(jié)構(gòu)計算平臺承上啟下的核心部分,微服務(wù)主要包括基礎(chǔ)微服務(wù)和業(yè)務(wù)微服務(wù)?;A(chǔ)微服務(wù)作為結(jié)構(gòu)計算平臺底層支撐框架,主要包括微服務(wù)注冊、認(rèn)證、配置和網(wǎng)關(guān)等。業(yè)務(wù)微服務(wù)主要將當(dāng)前結(jié)構(gòu)計算平臺功能按業(yè)務(wù)領(lǐng)域拆分為項目管理、用戶管理、計算、統(tǒng)計分析、消息中心等幾部分服務(wù),提高系統(tǒng)整體運行穩(wěn)定性和冗余性。
組件服務(wù)層:主要由RabbitMQ、OSS、Redis 等組成,提供消息服務(wù)、文件存儲、容錯機制、信息調(diào)度和傳輸?shù)韧ㄓ梅?wù)至上層應(yīng)用系統(tǒng),從而實現(xiàn)層級間的通信。
存儲層:采用主從方式對數(shù)據(jù)進行緩存,通過OSS 對項目中的文件進行集中式存儲和管理。開發(fā)及運維人員通過ELK 對于存儲層的活動進行收集并形成日志,當(dāng)有需求時可進行檢索追溯。
自動構(gòu)建層:主要基于Gitlab 的持續(xù)集成與部署,在開發(fā)人員提交了新代碼之后,即可實現(xiàn)單元的構(gòu)建和測試。開發(fā)人員可根據(jù)測試結(jié)果判斷集成的正確性,并可根據(jù)異常信息進行問題追蹤定位。
如圖2 數(shù)據(jù)架構(gòu)圖所示,通過結(jié)構(gòu)計算云平臺進行結(jié)構(gòu)建模,利用個人空間管理結(jié)構(gòu)計算工程項目,期間產(chǎn)生的數(shù)據(jù)均經(jīng)過存儲中心,后期利用大數(shù)據(jù)技術(shù)分析過濾后形成數(shù)據(jù)資產(chǎn)。存儲數(shù)據(jù)資產(chǎn)可為后續(xù)的結(jié)構(gòu)分析、結(jié)構(gòu)評審、共享模型市場等提供數(shù)據(jù)支撐。
系統(tǒng)數(shù)據(jù)主要包含文件數(shù)據(jù)、業(yè)務(wù)數(shù)據(jù)、日志數(shù)據(jù)三個方面,文件數(shù)據(jù)主要指用戶提交的結(jié)構(gòu)計算平臺的計算模型,再由計算中心計算產(chǎn)生的計算結(jié)果文件。業(yè)務(wù)數(shù)據(jù)主要包含個人空間的操作以及權(quán)限控制數(shù)據(jù),日志數(shù)據(jù)是系統(tǒng)產(chǎn)生的過程性事件記錄數(shù)據(jù),通過查看日志數(shù)據(jù),可以了解到具體哪個用戶、在具體什么時間、在哪臺設(shè)備上或者什么應(yīng)用服務(wù)中、做了什么具體的操作。
引入日志收集與分析系統(tǒng)(ELK + Filebeat),其目標(biāo)是解決日志定位以及收集問題[2]。組件中Filebeat 為采集部分,Logstash 為管道傳輸部分,Elasticsearch 為存儲和搜索部分,Kibana 為可視化日志應(yīng)用系統(tǒng)。此架構(gòu)由Filebeat 分布于各個節(jié)點上搜集相關(guān)日志、數(shù)據(jù),并經(jīng)過分析、過濾后通過Logstash 發(fā)送給遠端服務(wù)器上的Elasticsearch 進行存儲。Elasticsearch 將數(shù)據(jù)以分片的形式壓縮存儲并提供多種API 供用戶查詢,操作。用戶可以更直觀的通過配置Kibana Web 方便的對日志查詢,并根據(jù)數(shù)據(jù)生成報表。日志收集系統(tǒng)架構(gòu)圖如圖3。
如圖3 所示,當(dāng)開啟Filebeat 程序的時候,它會啟動一個或多個探測器去檢測指定的日志目錄或文件,對于探測器找出的每一個日志文件,F(xiàn)ilebeat 會啟動收集進程,每一個收集進程讀取一個日志文件的內(nèi)容,然后將這些日志數(shù)據(jù)發(fā)送到后臺處理程序,后臺處理程序?qū)@些事件進行整合,最后發(fā)送整合后的數(shù)據(jù)到存儲服務(wù)器,完成日志收集流程。后續(xù),研發(fā)人員或者維護人員通過Kibana Web 查看運行日志,分析用戶行為等操作。
系統(tǒng)需要保證高可用、高性能,在可擴展的同時需要滿足數(shù)據(jù)的一致性。因此數(shù)據(jù)庫架構(gòu)采用主備架構(gòu),只有主庫提供讀寫服務(wù),備庫冗余作故障轉(zhuǎn)移。
采用集群方式部署微服務(wù),產(chǎn)生資源文件的集中化處理難度將大大增加,雖然可以采取FTP、MQ 發(fā)布訂閱等其他文件同步的方式解決,但是文件同步的問題將造成系統(tǒng)的不一致,存在可用性缺陷。因此文件存儲需要設(shè)計獨立的分布式文件存儲系統(tǒng),將平臺產(chǎn)生的文件存儲在獨立的文件系統(tǒng)中,服務(wù)直接從文件系統(tǒng)獲取資源。
文件存儲采用單主機多硬盤模式,在一臺服務(wù)器上搭建服務(wù),但數(shù)據(jù)分散在多塊(大于4 塊)磁盤上,在解決不一致性的基礎(chǔ)上也提供了數(shù)據(jù)上的安全保障,增加了抗風(fēng)險能力,在后期文件服務(wù)器負載壓力提高時,也可以在多臺服務(wù)器上搭建服務(wù)便于擴展。文件存儲系統(tǒng)架構(gòu)圖如圖4。
采用上述方式在多臺服務(wù)器上搭建文件存儲服務(wù),且數(shù)據(jù)分散在多塊磁盤上,提供了較為強大的數(shù)據(jù)冗余機制,同時也解決了MginIO 服務(wù)存在單點故障問題[3]。
①結(jié)構(gòu)安全,結(jié)構(gòu)安全方面,軟件前端應(yīng)用在外部服務(wù)網(wǎng)部署,后端服務(wù)及數(shù)據(jù)庫在內(nèi)部服務(wù)網(wǎng)應(yīng)用類服務(wù)區(qū)部署;按照互聯(lián)網(wǎng)接入?yún)^(qū)、應(yīng)用類服務(wù)區(qū)等進行網(wǎng)絡(luò)區(qū)域劃分。利用內(nèi)部服務(wù)網(wǎng)和外部服務(wù)網(wǎng)構(gòu)建安全網(wǎng)絡(luò)結(jié)點,以及各網(wǎng)絡(luò)區(qū)域之間的安全防護措施,形成縱深的安全防護結(jié)構(gòu)。
②邊界安全,安全邊界包括互聯(lián)網(wǎng)邊界、內(nèi)外部服務(wù)網(wǎng)邊界、與其他相關(guān)應(yīng)用系統(tǒng)邊界。對不同安全域邊界采取相應(yīng)的安全措施,重點保障邊界接入安全。
③安全審計與集中管控,利用安全審計系統(tǒng),統(tǒng)一收集網(wǎng)絡(luò)安全信息,定期開展安全審計。系統(tǒng)采用集中認(rèn)證授權(quán)等技術(shù)手段,實現(xiàn)集中管控與關(guān)鍵操作記錄。
通過對操作系統(tǒng)進行安全加固并進行功能擴充,加入身份認(rèn)證、系統(tǒng)安全審計、系統(tǒng)惡意代碼查殺等功能。
系統(tǒng)提供備份與高可用安全方案,系統(tǒng)運行維護過程中系統(tǒng)提供在線增量備份,同時根據(jù)安全管理制度定期離線備份。采取相應(yīng)措施保證數(shù)據(jù)傳輸、使用、管理安全。
本系統(tǒng)通過登錄申領(lǐng)訪問token,防止用戶身份被冒用、竊取,保證登錄用戶身份的安全鑒別。系統(tǒng)采用數(shù)字證書認(rèn)證技術(shù)實現(xiàn)對業(yè)務(wù)數(shù)據(jù)的保密、業(yè)務(wù)數(shù)據(jù)的防篡改和業(yè)務(wù)往來的抗抵賴,同時進行訪問控制、軟件容錯和資源控制設(shè)計。
目前工程結(jié)構(gòu)計算領(lǐng)域中,云計算所包含的各種可能性并沒有完全被利用,結(jié)構(gòu)分析和設(shè)計軟件還處于傳統(tǒng)的客戶端模式。通過云計算技術(shù),可以為行業(yè)帶來許多新的機會,用戶的工程建設(shè)結(jié)構(gòu)設(shè)計體驗會更加友好,并且云計算和并行計算技術(shù)的結(jié)合可以為超高、超長、大跨度復(fù)雜建筑工程計算問題提供高效能計算的可能[4]。
基于云服務(wù)的工程建設(shè)結(jié)構(gòu)云平臺架構(gòu),能夠有效應(yīng)對使用過程中遇到的擴展性、可靠性、高性能以及安全性問題;采用云服務(wù)和并行計算技術(shù),可以有效提高工程建設(shè)中結(jié)構(gòu)計算的效率;通過對各種計算數(shù)據(jù)的存儲和信息化管理,為后續(xù)數(shù)據(jù)挖掘和分析提供了數(shù)據(jù)支撐,最終實現(xiàn)結(jié)構(gòu)計算數(shù)字化,提高安全性和效率。