(上海市政工程設(shè)計(jì)研究總院(集團(tuán))有限公司,上海 200092)
目前,在建筑以及市政工程項(xiàng)目領(lǐng)域,建筑信息模型技術(shù)(Building Information Modeling,簡(jiǎn)稱BIM)作為建設(shè)以及運(yùn)維項(xiàng)目管理工作過(guò)程中的信息化管理工具,得到了廣泛的應(yīng)用。它借助前沿的計(jì)算機(jī)技術(shù)以及信息技術(shù),對(duì)現(xiàn)實(shí)世界進(jìn)行虛擬世界的模擬和呈現(xiàn),并進(jìn)行信息集成,基于此對(duì)工程項(xiàng)目進(jìn)行多角度、多方位的協(xié)同管理,助力工程項(xiàng)目的質(zhì)量與工期保障、成本節(jié)約以及智慧化運(yùn)維管理,助力實(shí)現(xiàn)項(xiàng)目的設(shè)計(jì)、施工和運(yùn)維的一體化全生命周期管理。
而城市信息模型(City Information Modeling,簡(jiǎn)稱CIM)的概念基于建筑信息模型(BIM)技術(shù)而興起,它將BIM對(duì)建筑完整信息數(shù)字化建模,用于設(shè)計(jì)、施工、使用、維護(hù)全生命周期管理的概念,擴(kuò)展到了城市領(lǐng)域[1],提供各個(gè)BIM單體之間連接網(wǎng)絡(luò)管理能力、空間分析能力以及大規(guī)模建筑群的BIM數(shù)據(jù)管理能力[2],并以城市信息數(shù)據(jù)為基礎(chǔ),建立起三維城市空間模型和城市信息的有機(jī)綜合體[3]。它期望提供一種有效的方法,以組織描述城市的信息[4]。建設(shè)基于CIM的新型智慧城市管理平臺(tái)的目的在于,打通傳統(tǒng)城市中各部門的數(shù)據(jù)孤島和信息煙囪,減少溝通成本和平臺(tái)的重復(fù)建設(shè),建立在城市管理中實(shí)現(xiàn)政府各機(jī)構(gòu)與社會(huì)業(yè)務(wù)協(xié)同的關(guān)系網(wǎng),支持城市規(guī)劃、設(shè)計(jì)、運(yùn)行、管理等多部門多領(lǐng)域的信息互聯(lián)互通與協(xié)同工作管理需求的滿足,支持監(jiān)督、檢查、調(diào)度、分析、預(yù)測(cè)與決策等需求的實(shí)現(xiàn),全面提高政府的公共服務(wù)能力和城市治理模式[5]。
當(dāng)前,在積極推動(dòng)智慧城市建設(shè)的國(guó)家政策背景下,基于CIM的新型智慧城市管理平臺(tái)的建設(shè)尚處于起步階段,因此,在此類平臺(tái)架構(gòu)頂層設(shè)計(jì)層面需要根據(jù)業(yè)務(wù)特點(diǎn)具備前瞻性和預(yù)見性,才能有效滿足平臺(tái)后期可擴(kuò)展、可復(fù)用、可維護(hù)性、可持續(xù)發(fā)展的需求,真正避免重復(fù)建設(shè),使平臺(tái)有效服務(wù)于城市治理,并提供有效城市信息價(jià)值。然而,目前國(guó)內(nèi)外對(duì)于此類平臺(tái)的建設(shè)方式尚缺乏深入的研究,多數(shù)停留在對(duì)于相關(guān)概念的描述以及對(duì)于相關(guān)技術(shù)的羅列上,鮮有對(duì)于具體所面臨的細(xì)節(jié)問(wèn)題進(jìn)行探討的文章。本文就此類平臺(tái)建設(shè)過(guò)程中的可擴(kuò)展性方面進(jìn)行探討,并嘗試提出解決方案,供平臺(tái)建設(shè)的一線工作人員以及城市管理決策者、相關(guān)部門參考。
軟件架構(gòu)的可擴(kuò)展性,從廣義上講,是指降低因平臺(tái)為實(shí)現(xiàn)新的需求進(jìn)行的修改而對(duì)平臺(tái)已有其他功能的影響。對(duì)于隨著時(shí)間規(guī)模會(huì)不斷增長(zhǎng)、數(shù)據(jù)體量不斷增大、業(yè)務(wù)復(fù)雜度不斷提高的軟件平臺(tái)而言,需要首先考慮的主要有數(shù)據(jù)存儲(chǔ)、并發(fā)等容量和性能方面的問(wèn)題,以及業(yè)務(wù)復(fù)雜性方面的問(wèn)題等,如果在頂層架構(gòu)設(shè)計(jì)之初沒(méi)有對(duì)這些問(wèn)題進(jìn)行充分考慮,會(huì)影響到業(yè)務(wù)的交付能力,使重構(gòu)變成常態(tài),浪費(fèi)大量人力物力財(cái)力。
可擴(kuò)展性作為制定軟件架構(gòu)設(shè)計(jì)的重要指標(biāo)之一,是平臺(tái)業(yè)務(wù)增長(zhǎng)時(shí)對(duì)于增加系統(tǒng)負(fù)載問(wèn)題的必要解決方案。理想的情況下,一個(gè)高可擴(kuò)展性的軟件平臺(tái),資源的使用應(yīng)該隨著負(fù)載線性增加,而不是呈指數(shù)型增加[6]。可擴(kuò)展性主要包括應(yīng)付以下三方面的增長(zhǎng):不斷增長(zhǎng)的數(shù)據(jù)管理需求、不斷增長(zhǎng)的終端用戶需求和不斷增長(zhǎng)的功能類型需求[7]。要提高一個(gè)軟件平臺(tái)的可擴(kuò)展性,需要在了解業(yè)務(wù)需求與特點(diǎn)的基礎(chǔ)上,選擇適應(yīng)于當(dāng)前軟件平臺(tái)業(yè)務(wù)特點(diǎn)的最佳方案。
基于CIM的新型智慧城市管理平臺(tái)作為服務(wù)于政府的大型三維可視化管理平臺(tái),在考慮其可擴(kuò)展性設(shè)計(jì)時(shí),所需要考慮的屬于此類型平臺(tái)的專有特點(diǎn)以及相應(yīng)的需求如下:
(1)業(yè)務(wù)鏈條復(fù)雜、繁多且長(zhǎng)。平臺(tái)在頂層設(shè)計(jì)之初需要將業(yè)務(wù)鏈條梳理清晰,支持各有關(guān)部門單位進(jìn)行在線協(xié)商、意見跟蹤、信息共享與矛盾協(xié)調(diào),并對(duì)未來(lái)的業(yè)務(wù)擴(kuò)展需求進(jìn)行前瞻性考慮,并在平臺(tái)軟件設(shè)計(jì)上對(duì)此納入考慮、預(yù)留接口,并考慮到并發(fā)需求的承載力。
(2)所管理的物理空間跨度和廣度大,所需存儲(chǔ)的數(shù)據(jù)種類繁多、總量巨大,并有多種具有實(shí)時(shí)更新需求的數(shù)據(jù)種類,例如物聯(lián)網(wǎng)(IoT)監(jiān)測(cè)數(shù)據(jù)等。因此平臺(tái)需要對(duì)海量多維數(shù)據(jù)能夠進(jìn)行有效的存儲(chǔ)與歸類分析,面對(duì)高并發(fā)的海量I/O需求呈現(xiàn)出穩(wěn)定的數(shù)據(jù)承載及調(diào)度能力; 同時(shí),要選取優(yōu)秀的大片區(qū)三維渲染引擎,展現(xiàn)流暢清晰的虛擬空間顯示界面,提高平臺(tái)的服務(wù)質(zhì)量。
(3)所對(duì)接的口徑多,尤其是法律法規(guī)標(biāo)準(zhǔn)、管理指標(biāo)口徑多; 現(xiàn)有各部門數(shù)據(jù)孤島、信息煙囪林立。因此相關(guān)業(yè)務(wù)數(shù)據(jù)交付標(biāo)準(zhǔn)的制定、數(shù)據(jù)清洗的工具的開發(fā)和完善、與現(xiàn)有的平臺(tái)系統(tǒng)的對(duì)接與取舍迫在眉睫,需要各單位的多方協(xié)調(diào)工作,為平臺(tái)的數(shù)據(jù)庫(kù)設(shè)計(jì)和業(yè)務(wù)流程標(biāo)準(zhǔn)化做出鋪墊性工作。
在以上的三類需求中,設(shè)計(jì)出合理的軟件可擴(kuò)展性架構(gòu)是滿足前兩類需求的必要不充分條件。下面,本文將對(duì)如何進(jìn)行針對(duì)此類平臺(tái)的可擴(kuò)展性架構(gòu)設(shè)計(jì)做出探討與分析。
基于CIM的智慧城市管理平臺(tái)需要支持多管理部門、多種類、復(fù)雜流程的長(zhǎng)鏈條業(yè)務(wù)類型,例如廣州的CIM試點(diǎn)平臺(tái)中[8],擬開發(fā)的應(yīng)用包括房屋管理應(yīng)用、建設(shè)工程消防設(shè)計(jì)審查和驗(yàn)收應(yīng)用、城市更新領(lǐng)域應(yīng)用、公共設(shè)施應(yīng)用、美麗鄉(xiāng)村應(yīng)用、建筑行業(yè)應(yīng)用、城市體檢應(yīng)用、建筑能耗監(jiān)測(cè)應(yīng)用與和其他系統(tǒng)(例如BIM施工圖三維數(shù)字化審查系統(tǒng)、基于BIM的施工質(zhì)量安全管理和竣工圖數(shù)字化備案系統(tǒng)等)的對(duì)接等。其中每一領(lǐng)域的應(yīng)用都有一系列的業(yè)務(wù),并且會(huì)隨著時(shí)間的推移不斷擴(kuò)展。
除此之外,平臺(tái)的業(yè)務(wù)還涉及多個(gè)階段的模型及屬性信息的入庫(kù)、查詢、分析等基本功能,作為以上各領(lǐng)域應(yīng)用的前提條件和基礎(chǔ)支撐,這些業(yè)務(wù)在操作的時(shí)候,需要相應(yīng)的數(shù)據(jù)庫(kù)具有穩(wěn)定安全的存儲(chǔ)能力,并且其響應(yīng)速度應(yīng)該在用戶的接受范圍之內(nèi); 同時(shí)平臺(tái)業(yè)務(wù)中還可能涉及多個(gè)審批流程,隨著時(shí)間的變化,平臺(tái)可能需要根據(jù)政策的改變靈活地設(shè)置相應(yīng)的報(bào)批審批步驟等。
在進(jìn)行以上業(yè)務(wù)的時(shí)候,流暢、清晰、豐富、多種風(fēng)格的三維展示效果是平臺(tái)等通用性需求,因此平臺(tái)需要選取卓越的三維圖形引擎作為承載。
平臺(tái)用戶的典型操作主要包括:各相關(guān)單位、部門的數(shù)據(jù)管理員或平臺(tái)操作員、規(guī)劃建設(shè)研究人員進(jìn)行數(shù)據(jù)一體化入庫(kù)與數(shù)據(jù)更新、數(shù)據(jù)查詢分析、審批流程操作、自動(dòng)導(dǎo)出所需信息和報(bào)告、城市模擬仿真等操作,以及有關(guān)單位的領(lǐng)導(dǎo)與管理人員對(duì)三維數(shù)據(jù)及分析數(shù)據(jù)的瀏覽與查看; 后期還會(huì)有公眾用戶對(duì)平臺(tái)進(jìn)行瀏覽操作等。
一般而言,軟件平臺(tái)的性能包括容錯(cuò)性和高性能兩方面,不同類型的平臺(tái)對(duì)這兩方面有不同的程度的側(cè)重。
(1)對(duì)于平臺(tái)性能要求而言,軟件平臺(tái)的容錯(cuò)性包括兩方面,其一是因軟件平臺(tái)的內(nèi)部錯(cuò)誤而發(fā)生錯(cuò)誤時(shí),仍然能夠在一定程度上完成用戶操作指定的預(yù)期功能; 其二能夠在一定程度上,從錯(cuò)誤的狀態(tài)自動(dòng)恢復(fù)到正確的狀態(tài)?;贑IM的智慧城市管理平臺(tái)作為多用戶多部門單位協(xié)同操作的平臺(tái),需要具有較高的容錯(cuò)性,使單人操作造成的錯(cuò)誤不至于頻繁的影響到平臺(tái)其他功能以及其他部門人員的使用,減輕平臺(tái)運(yùn)維工作人員的工作復(fù)雜度。
(2)對(duì)于軟件平臺(tái)的高性能要求而言,關(guān)注的指標(biāo)包括響應(yīng)時(shí)間、TPS、服務(wù)器資源利用率(CPU使用)、系統(tǒng)響應(yīng)時(shí)間和應(yīng)用延遲時(shí)間、吞吐量、并發(fā)用戶數(shù)等。對(duì)于該平臺(tái)而言,對(duì)服務(wù)器資源利用率和吞吐量的要求較高,對(duì)于響應(yīng)時(shí)間、TPS、系統(tǒng)響應(yīng)時(shí)間和應(yīng)用延遲時(shí)間的要求中等,但也不能夠過(guò)于卡頓,而并發(fā)用戶數(shù)會(huì)隨著時(shí)間而緩慢增長(zhǎng)。
平臺(tái)容易出現(xiàn)的性能瓶頸包括三維引擎承載力瓶頸、業(yè)務(wù)穩(wěn)定性與安全性瓶頸、數(shù)據(jù)計(jì)算速度瓶頸、以及海量多維數(shù)據(jù)錄入、存儲(chǔ)、查詢與I/O瓶頸等。
根據(jù)以上的分析,基于CIM的智慧城市管理平臺(tái)的可擴(kuò)展性架構(gòu)需求有如下幾類,見表1。
表1 基于CIM的智慧城市管理平臺(tái)的可擴(kuò)展性架構(gòu)需求
為了滿足基于CIM的智慧城市管理平臺(tái)的可擴(kuò)展性架構(gòu)需求,在總體原則上,需要開發(fā)以模塊化、松耦合、可擴(kuò)展、易升級(jí)、開放式、粗粒度為特征,通過(guò)標(biāo)準(zhǔn)化接口連接形成的開放、有機(jī)整體的平臺(tái)。針對(duì)上文所提到的平臺(tái)可擴(kuò)展性架構(gòu)需求,從平臺(tái)服務(wù)的組織方式和數(shù)據(jù)存儲(chǔ)兩方面進(jìn)行重點(diǎn)分析,并對(duì)不同架構(gòu)形式進(jìn)行優(yōu)缺點(diǎn)比較,為后面選取合適軟件架構(gòu)提供參考依據(jù)。
根據(jù)文獻(xiàn)[9]所提出的可擴(kuò)展模型——AKF可擴(kuò)展立方(Scalability Cube)理論,在上文提到的面對(duì)多種而復(fù)雜的業(yè)務(wù)類型、平臺(tái)高性能要求和高容錯(cuò)性需求等方面,可擴(kuò)展性的架構(gòu)設(shè)計(jì)常用的設(shè)計(jì)方法是對(duì)于服務(wù)進(jìn)行拆分與重組,具體參考以下三個(gè)維度的方法:
(1)對(duì)服務(wù)或數(shù)據(jù)進(jìn)行無(wú)差別的復(fù)制
該方法主要關(guān)注數(shù)據(jù)和服務(wù)克隆,即通過(guò)絕對(duì)平等地復(fù)制服務(wù)與數(shù)據(jù)并且無(wú)偏向地將工作任務(wù)分配給它們,以解決容量和可用性的問(wèn)題,其中各個(gè)復(fù)制品之間不共享任何工作內(nèi)容。完成這個(gè)方案的主要技術(shù)方法有兩個(gè),其一為負(fù)載均衡,即通過(guò)負(fù)載均衡器將用戶的訪問(wèn)請(qǐng)求均衡分配給“復(fù)制品”集群,如果某一復(fù)制品出現(xiàn)故障,則將工作任務(wù)分配給其他復(fù)制品。其中涉及到的具體技術(shù)點(diǎn)包括反向代理、DNS輪詢、哈希負(fù)載均衡算法(一致性哈希)、動(dòng)態(tài)節(jié)點(diǎn)負(fù)載均衡(如按CPU,I/O)等,這種方法可以在某種程度上提高服務(wù)的穩(wěn)定性和用戶請(qǐng)求處理效率; 其二為數(shù)據(jù)復(fù)制,這種方式主要是為了解決存儲(chǔ)層I/O瓶頸以及可用性的問(wèn)題,因而對(duì)數(shù)據(jù)存儲(chǔ)層進(jìn)行平等的數(shù)據(jù)遷移。分布式數(shù)據(jù)庫(kù)系統(tǒng)的三個(gè)特性:一致性、可用性和分區(qū)容差是不能被同時(shí)滿足的,需要根據(jù)業(yè)務(wù)的具體特點(diǎn)來(lái)進(jìn)行取舍。
(2)根據(jù)職責(zé)與功能對(duì)服務(wù)進(jìn)行拆分
該方法關(guān)注應(yīng)用中職責(zé)的劃分,即為了提高服務(wù)的工作效率將一個(gè)服務(wù)拆分成一組服務(wù),使每一個(gè)子服務(wù)的工作更簡(jiǎn)單純粹,效率更高。其中在工作中最常見的方法為運(yùn)用微服務(wù)架構(gòu)SOA,旨在利用松耦合的服務(wù)帶來(lái)業(yè)務(wù)重用。
對(duì)于本平臺(tái)可考慮的SOA架構(gòu)有兩種方式[10]:
1)ESB企業(yè)服務(wù)總線模式,這種模式本質(zhì)上是為了解決異構(gòu)系統(tǒng)的交互問(wèn)題,采用集群部署的方式進(jìn)行壓力分擔(dān)。這種模式能夠改善服務(wù)調(diào)用關(guān)系和服務(wù)管理,但缺點(diǎn)是每次企業(yè)服務(wù)總線的擴(kuò)容都會(huì)帶來(lái)在軟件授權(quán)和硬件資源上的不小投入,當(dāng)超過(guò)承載量的用戶并發(fā)操作時(shí)易造成“雪崩”。
2)“去中心化”服務(wù)架構(gòu)模式。這種模式主要解決系統(tǒng)擴(kuò)展性問(wèn)題,更快進(jìn)行業(yè)務(wù)響應(yīng)、支持業(yè)務(wù)創(chuàng)新,服務(wù)提供者和服務(wù)調(diào)用者之間在進(jìn)行服務(wù)交互的時(shí)候無(wú)需通過(guò)任何服務(wù)路由中介,避免因?yàn)椤爸行狞c(diǎn)”帶來(lái)平臺(tái)能力難以擴(kuò)展以及“雪崩”影響,但缺點(diǎn)是可能帶來(lái)服務(wù)調(diào)用關(guān)系與數(shù)量上的混亂。這種服務(wù)調(diào)用模式一般運(yùn)行在企業(yè)內(nèi)部網(wǎng)絡(luò)環(huán)境中,基于統(tǒng)一技術(shù)接口標(biāo)準(zhǔn)、網(wǎng)絡(luò)協(xié)議、規(guī)范進(jìn)行交互。
另外,SOA架構(gòu)中包含有日志和監(jiān)控機(jī)制,能夠盡快檢測(cè)故障、恢復(fù)故障,滿足平臺(tái)的容錯(cuò)性性能需求[11]。
(3)根據(jù)服務(wù)或數(shù)據(jù)的優(yōu)先級(jí)對(duì)服務(wù)進(jìn)行劃分。該方法關(guān)注服務(wù)和數(shù)據(jù)的優(yōu)先級(jí)劃分,即基于服務(wù)請(qǐng)求者獨(dú)特的需求進(jìn)行系統(tǒng)劃分,并使得劃分出來(lái)的子系統(tǒng)是相互隔離但又是完整的,它是以上兩種服務(wù)拆分方法的組合。其實(shí)現(xiàn)技術(shù)方法主要有單元化架構(gòu)、數(shù)據(jù)分區(qū),而數(shù)據(jù)分區(qū)在帶來(lái)好處的同時(shí)也有代價(jià),它將增加數(shù)據(jù)運(yùn)維的難度和關(guān)聯(lián)搜索的復(fù)雜度。
上文提到的海量多維數(shù)據(jù)存儲(chǔ)、查詢、分析等需求,可以通過(guò)選取合適的數(shù)據(jù)存儲(chǔ)與查詢方式得到滿足,平臺(tái)高性能要求和高容錯(cuò)性等方面,同樣依托于合適的數(shù)據(jù)存儲(chǔ)與查詢方式。
傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),例如MySQL、Microsoft SQL Server數(shù)據(jù)庫(kù)、Oracle數(shù)據(jù)庫(kù)等,一般由單個(gè)的服務(wù)器提供,當(dāng)數(shù)據(jù)量增大時(shí)采取分區(qū)方式,將數(shù)據(jù)分到不同的機(jī)器上,這樣的方式增加了方案的復(fù)雜度、不支持動(dòng)態(tài)擴(kuò)展、查詢速度慢、且故障率高,不適宜海量數(shù)據(jù)的存儲(chǔ)。
新興的非關(guān)系型數(shù)據(jù)庫(kù),例如Hbase、HDFS、MongoDB、Elasticsearch等,為分布式數(shù)據(jù)存儲(chǔ)系統(tǒng),能夠在普通PC上搭建大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群,為海量多維空間數(shù)據(jù)存儲(chǔ)提供底層平臺(tái),成為了平臺(tái)的可參考數(shù)據(jù)庫(kù)選擇。而不同種類的分布式數(shù)據(jù)庫(kù)在性能上各有千秋,其中最主要的性能關(guān)注點(diǎn)主要是存儲(chǔ)和查詢的速度。一般而言,存儲(chǔ)和查詢的速度不能被同時(shí)兼顧,需要根據(jù)業(yè)務(wù)的特點(diǎn)做出取舍,選擇合適的數(shù)據(jù)庫(kù)。例如,對(duì)于諸如物聯(lián)網(wǎng)大數(shù)據(jù)等海量多維數(shù)據(jù)需要數(shù)據(jù)庫(kù)擁有足夠的寫入速度,以滿足它的實(shí)時(shí)存儲(chǔ)需求,同時(shí),如果要對(duì)物聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行實(shí)時(shí)的分析和可視化展現(xiàn),則需要數(shù)據(jù)庫(kù)在復(fù)雜查詢檢索方面也表現(xiàn)出色; 而對(duì)于城市三維空間數(shù)據(jù)、城市基礎(chǔ)底圖數(shù)據(jù)等而言,數(shù)據(jù)庫(kù)的寫入速度并不是第一重要的考慮因素,而數(shù)據(jù)庫(kù)的讀取速度則是非常重要的,用以滿足用戶對(duì)城市三維空間的流暢瀏覽需求。
在以上幾種數(shù)據(jù)庫(kù)中,HBase引擎最大的優(yōu)點(diǎn)是存儲(chǔ)容量大、擴(kuò)展能力強(qiáng),能夠把巨大的表分布到很多臺(tái)機(jī)器上面,對(duì)于海量的數(shù)據(jù)進(jìn)行支持,具有高性能、可彈性伸縮及分布式特性,支持PB級(jí)大數(shù)據(jù)存儲(chǔ),滿足千萬(wàn)級(jí)并發(fā),適合于實(shí)現(xiàn)對(duì)海量城市空間大數(shù)據(jù)的存儲(chǔ); 但缺點(diǎn)是對(duì)于數(shù)據(jù)的讀取局限性非常大,不能夠支持復(fù)雜的查詢功能。MongoDB是文檔數(shù)據(jù)庫(kù)的典型代表,數(shù)據(jù)庫(kù)中的每一行數(shù)據(jù)只是簡(jiǎn)單的被轉(zhuǎn)化成Json格式后存儲(chǔ),表結(jié)構(gòu)靈活可變,字段類型可以隨時(shí)修改,對(duì)于大數(shù)據(jù)規(guī)模的查詢和存儲(chǔ)均表現(xiàn)優(yōu)良,但缺點(diǎn)是不適合多表查詢、復(fù)雜事務(wù)等高級(jí)操作,它能夠滿足對(duì)柵格瓦片、矢量瓦片和三維瓦片等城市基礎(chǔ)底圖的存儲(chǔ)支持,也能夠支持無(wú)需進(jìn)行復(fù)雜查詢的海量靜態(tài)數(shù)據(jù)的存儲(chǔ)。 Elasticsearch是會(huì)自動(dòng)對(duì)所有字段建立索引,以實(shí)現(xiàn)高性能的復(fù)雜聚合查詢,但它的短處在于字段類型無(wú)法修改、寫入和存儲(chǔ)的速度和性能較低和高硬件資源消耗; 而HDFS引擎是為以流式數(shù)據(jù)訪問(wèn)模式存儲(chǔ)超大文件而設(shè)計(jì)的文件系統(tǒng),適用于大文件的存儲(chǔ)和流式讀取的方式,支持非結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ),也提供了數(shù)據(jù)的空間化能力和空間索引技術(shù),適合寫入一次、讀取多次的應(yīng)用場(chǎng)景,但缺點(diǎn)是不適用于大量小文件的存儲(chǔ)和隨機(jī)性強(qiáng)的寫入和修改數(shù)據(jù)。它適用于大量城市矢量靜態(tài)數(shù)據(jù)的存儲(chǔ)[12]。在平臺(tái)的搭建過(guò)程中,可以將不同類型的數(shù)據(jù)分類,根據(jù)所儲(chǔ)存的數(shù)據(jù)特征和實(shí)際業(yè)務(wù)需求,分別選擇合適的數(shù)據(jù)庫(kù)服務(wù)對(duì)其進(jìn)行存儲(chǔ),作為平臺(tái)的支撐。
根據(jù)以上對(duì)可擴(kuò)展性架構(gòu)設(shè)計(jì)方法的分析,本章結(jié)合平臺(tái)的需求選取適宜的技術(shù)方法,以滿足平臺(tái)的可擴(kuò)展性需求,具體如下:
對(duì)于平臺(tái)的服務(wù)的組織方式而言,對(duì)于服務(wù)的拆分主要是為了滿足平臺(tái)多種且復(fù)雜的不斷增加的業(yè)務(wù)類型、高服務(wù)器資源利用率和高吞吐量、用戶能夠接受的程序相應(yīng)時(shí)間、逐漸增長(zhǎng)的服務(wù)并發(fā)數(shù)量和一定的容錯(cuò)性。因此,根據(jù)3.3章節(jié)的分析,本文認(rèn)為,平臺(tái)內(nèi)的組件之間可以根據(jù)需求通過(guò)標(biāo)準(zhǔn)化的接口以“去中心化”SOA服務(wù)架構(gòu)進(jìn)行分布式部署、組合和使用,在具體的部署上,宜采取建立數(shù)字中臺(tái)的模式,以模塊化、松耦合、粗粒度為特征,運(yùn)用服務(wù)編排的技術(shù)通過(guò)標(biāo)準(zhǔn)化接口對(duì)于平臺(tái)的業(yè)務(wù)進(jìn)行部署,提高其業(yè)務(wù)的擴(kuò)展承載能力。而對(duì)于在使用中會(huì)被頻繁調(diào)用的子服務(wù),宜采取服務(wù)克隆的方式來(lái)提高該子服務(wù)的承載能力,并通過(guò)負(fù)載均衡器將任務(wù)平均分配給各克隆服務(wù),達(dá)到負(fù)載均衡的目的。這樣的架構(gòu)設(shè)計(jì)方式可以有效地解決系統(tǒng)擴(kuò)展性問(wèn)題,實(shí)現(xiàn)更快進(jìn)行業(yè)務(wù)響應(yīng)、支持業(yè)務(wù)創(chuàng)新,避免因?yàn)椤爸行狞c(diǎn)”帶來(lái)平臺(tái)能力難以擴(kuò)展以及“雪崩”影響。
對(duì)于數(shù)據(jù)的存儲(chǔ)而言,合理的存儲(chǔ)方式應(yīng)考慮到平臺(tái)中不同類型的數(shù)據(jù)存儲(chǔ)查詢的需求,以及不同業(yè)務(wù)類型分別選取不同的數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)?;谇拔膶?duì)Hbase、HDFS、MongoDB、Elasticsearch這四種數(shù)據(jù)庫(kù)性能的分析和比較,本文認(rèn)為,用MongoDB引擎來(lái)存取柵格瓦片、矢量瓦片和三維瓦片等城市基礎(chǔ)底圖數(shù)據(jù),用HDFS或者HBase來(lái)存取海量的城市矢量靜態(tài)數(shù)據(jù)以及無(wú)需進(jìn)行復(fù)雜查詢的城市空間大數(shù)據(jù)是不錯(cuò)的選擇,而涉及到海量數(shù)據(jù)復(fù)雜查詢的業(yè)務(wù),用Elasticsearch引擎是不錯(cuò)的選擇,但是由于Elasticsearch引擎較慢的數(shù)據(jù)寫入速度,涉及到海量數(shù)據(jù)復(fù)雜查詢的數(shù)據(jù)存儲(chǔ)需要Elasticsearch引擎與HDFS或者HBase配合使用; 綜上所述,選取HBase、MongoDB和Elasticsearch三種分布式數(shù)據(jù)庫(kù)的組合或者HDFS、MongoDB和Elasticsearch的組合能夠很好的覆蓋到基于CIM的新型智慧城市管理平臺(tái)對(duì)于海量城市基礎(chǔ)地圖、城市矢量靜態(tài)數(shù)據(jù)和物聯(lián)網(wǎng)的實(shí)時(shí)數(shù)據(jù)的存儲(chǔ)需求。
根據(jù)以上對(duì)于架構(gòu)方式的選擇,本文得出了平臺(tái)的可擴(kuò)展性架構(gòu)設(shè)計(jì),如圖1。
圖1 基于CIM的新型智慧城市管理平臺(tái)的 可擴(kuò)展性架構(gòu)設(shè)計(jì)圖
綜上所述,經(jīng)過(guò)對(duì)基于CIM的新型智慧城市管理平臺(tái)的基本特點(diǎn)和需求的分析,以及對(duì)于可擴(kuò)展性架構(gòu)設(shè)計(jì)的方法分析,本文從對(duì)服務(wù)的拆分與組織的方式選擇、數(shù)據(jù)的存儲(chǔ)兩方面選取了適用于該平臺(tái)可擴(kuò)展性架構(gòu)的設(shè)計(jì)方式,供城市管理決策者、相關(guān)部門以及一線的平臺(tái)開發(fā)建設(shè)工作人員參考。具體如下:
(1)對(duì)服務(wù)的拆分與組織的方式選擇
在服務(wù)的組織方式方面,服務(wù)之間宜根據(jù)需求通過(guò)標(biāo)準(zhǔn)化的接口以“去中心化”SOA服務(wù)架構(gòu)進(jìn)行分布式部署、組合和使用,以提高業(yè)務(wù)的擴(kuò)展承載能力; 其中,在使用中被頻繁調(diào)用的服務(wù)宜采取對(duì)其進(jìn)行服務(wù)克隆的方式來(lái)提高該服務(wù)的承載能力,并通過(guò)負(fù)載均衡器將任務(wù)平均分配給各克隆服務(wù),達(dá)到負(fù)載均衡的目的,形成一個(gè)集廣泛信息采集、多維統(tǒng)計(jì)分析、智慧應(yīng)用操作與展示等功能于一體的城市運(yùn)行管理與服務(wù)系統(tǒng)。
(2)數(shù)據(jù)的存儲(chǔ)
而在數(shù)據(jù)存儲(chǔ)方面,宜選取HBase、MongoDB和Elasticsearch三種分布式數(shù)據(jù)庫(kù)的組合或者HDFS、MongoDB和Elasticsearch的組合方式,作為數(shù)據(jù)存儲(chǔ)的有力支撐。其中,HDFS引擎或者HBase引擎用來(lái)存取海量的城市矢量靜態(tài)數(shù)據(jù)以及無(wú)需進(jìn)行復(fù)雜查詢的城市空間大數(shù)據(jù),MongoDB引擎用來(lái)存取柵格瓦片、矢量瓦片和三維瓦片等城市基礎(chǔ)底圖數(shù)據(jù),Elasticsearch引擎與HDFS或者HBase配合使用,來(lái)對(duì)海量數(shù)據(jù)復(fù)雜查詢進(jìn)行存儲(chǔ)和查詢。通過(guò)采取上述的架構(gòu)設(shè)計(jì)方法,基于CIM的新型智慧城市管理平臺(tái)可擴(kuò)展性需求可以在一定程度上得到滿足。
設(shè)計(jì)合理的可擴(kuò)展性軟件架構(gòu)是構(gòu)建以數(shù)字中臺(tái)為代表的新型基礎(chǔ)設(shè)施建設(shè)的基礎(chǔ),目的是為業(yè)務(wù)應(yīng)用提供規(guī)范化的可復(fù)用組件和服務(wù)資源,滿足平臺(tái)可擴(kuò)展、可復(fù)用、可維護(hù)性、可持續(xù)發(fā)展的需求,避免平臺(tái)的重復(fù)建設(shè),促進(jìn)政府部門的現(xiàn)有IT建設(shè)成果向資產(chǎn)化、服務(wù)化、云化(或微服務(wù)化)的方向發(fā)展,提升其治理能力和服務(wù)水平。
本文所選取的軟件工程技術(shù)方法并非唯一可行方式,意見僅作參考。在實(shí)際開發(fā)建設(shè)過(guò)程中,尚需對(duì)于具體工作細(xì)節(jié)進(jìn)行更深入的探究,才能將可擴(kuò)展性架構(gòu)運(yùn)用到平臺(tái)建設(shè)的實(shí)踐中。后續(xù)可以從平臺(tái)的物理架構(gòu)以及實(shí)現(xiàn)平臺(tái)架構(gòu)的具體技術(shù)細(xì)節(jié)等角度出發(fā),進(jìn)行進(jìn)一步的研究。