肖朋林
(上海市建筑科學研究院有限公司 上海市 201108)
自2007年起,為推進建筑能效管理,我國逐步探索推廣了公共建筑分項計量監測應用。從2010年起,上海市作為第三批建筑能耗監測系統建設試點城市[1],開始了建筑能源計量的快速推廣,截至2020年底上海全市已有超過2000 棟建筑實現了電、水、氣等能源資源的實時監測。當前建筑能效管理系統主要以單系統的形式部署在建筑內。隨著建筑能耗及各類運行過程數據的增加,系統的運行性效率和性能將不斷降低,導致用戶體驗不好;同時系統缺少及時的交互性的反饋,導致了大部分樓宇業主新需求無法獲得,進而導致能耗監測不能達到預期效果。且升級后的系統無法快速的將原有服務進行替換,且全部替換的成本過大,致使最新功能服務無法第一時間交付用戶使用。
為了更好的為建筑業主提供便捷高效的建筑能效管理服務,傳統的基于單體式服務的平臺架構體系不能支撐系統持續穩和高效的運行,各類差異化的用戶功能和性能需求也不能得到及時的滿足。為此本文設計了一種基于微服務的建筑能效管理SaaS云平臺架構,通過微服務的方式為平臺提供技術保障,保障平臺的性能和可擴展性,基于SaaS 的服務模式構建靈活、標準、可配置的平臺功能服務,最大限度的提高平臺的價值。
微服務架構的概念由MartinFowler 在2014年3月發表[2],因具有較好靈活性和可擴展性,使其逐漸為主流軟件架構方案。微服務架構是將功能模塊按照不同分類拆分成多個小模塊服務,各服務獨立開發、測試、部署,各服務之間使用輕量級通信規范進行相互通信、數據傳遞和協作,例如通過Restful 風格的API 接口、RPC遠程過程調用等,極大地降低了服務之間的耦合性[3]。
微服務技術棧的優點包含以下幾個方面[3]:
(1)服務功能開發和部署速度快:微服務是將復雜項目,按照不用的業務功能差分成一個個微小功能,每個小功能只關注一個功能點,使得此服務的具有較少的代碼,因此編碼開發相對比較快速。針對小服務的部署也是可以依托熱部署的技術,快速的替換部署環境內的全部服務,部署后的服務可以快速地支撐系統的運行。
(2)需求變更影響小且上線快:一般需求的變更是針對某個具體的業務功能,由于微服務模式下已經將各個功能進行了服務劃分,因此只要修改對應服務的代碼邏輯即可,修改后僅需對此部分邏輯進行測試,保障符合需求就即可上線;上線部署也無需更好整個系統的服務,只需要替換對應修改的服務即可,且在上線過程極短,極大的降低了功能修改后,系統重新部署對用戶使用的影響。
(3)各微服務技術棧不受限制:由于各個服務相互獨立,通過標準的協議進行通信,因此各個服務可以采用不同的語言和技術棧進行開發。

圖1:平臺總體架構
(4)易于服務實例的擴展:當某個功能服務的需求量增加時,僅需增加此功能服務的實例即可,不需要增加整個系統的服務,極大的節省了服務器資源。
SaaS 是指軟件即服務的意思,是Software-as-a-service 的簡寫。SaaS 模式是軟件交付模式,是指軟件部署在供應商服務器端,使用者通過客戶端上的瀏覽器訪問,以此獲取功能[4,5]。SaaS 模式的軟件具有如下優點[6]。
(1)服務商早期投入的開發成本和基礎資源成本較大,但使用者的成本將大大的降低,這樣降低了系統推廣的難度,使得軟件有更多的人使用,以此獲得更多的回報,從而達到盈利的目的。
(2)SaaS 模式的軟件具有快速部署,使用者第一時間獲得新功能的優點。因為軟件均部署在服務器端,只要服務器端更新,所有用戶將即時獲取到最新功能服務。

圖2:微服務技術架構圖
(3)SaaS 模式的軟件具有跨平臺性。基于SaaS 模式的軟件基本是通過Web 瀏覽器為用戶提供服務,與操作系統和終端無關,只要軟件服務的適配做好即可實現用戶通過PC 或者移動終端隨時訪問使用軟件服務。
基于上述研究,本文提出了基于微服務的建筑能效管理SaaS云平臺架構,通過結合微服務技術架構與SaaS 模式,解決當前單體服務架構系統的性能、快速部署的難題。圖1 展示了本文設計平臺的架構。
平臺基于微服務架構和SaaS 模式共設計了九個層級,分別是數據感知層、采集傳輸層、集成服務層、存儲服務層、數據服務層、業務服務層、功能模塊層、SaaS 服務層、租賃用戶層。其中數據感知層、采集傳輸層是屬于數據基礎層,主要在建筑端完成,租賃用戶層是平臺的服務對象層。其余層級根據特點分別歸納到微服務架構體系和SaaS 模式體系中。下面分別介紹下平臺主要層級的具體設計內容。
(1)集成服務層:通過部署MQTT 服務、TCP 服務接收數據,并通過Kafka 消息中間和ignite 內存數據庫對數據進行緩存,以提高數據接收的性能。
(2)存儲服務層:通過存儲服務、匯總服務、指標計算服務等將數據原始數據存儲到數據庫,并匯總計算得到用來數據。并將匯總計算后的數據存儲到分布式TiDB 數據庫。
(3)數據服務層:此層是將各類數據操作封裝成不同的服務,為業務服務層提供服務,并按照微服務方式部署,以提高服務性能和可擴展性。
(4)業務服務層:此層是將各類業務功能分解成不同的服務,比如實時監測服務、數據統計服務、配置管理服務、權限服務等,以此為功能模塊提供各類服務。
(5)功能模塊層:此層是功能界面展示實現層,根據不同的功能需求調用不同的業務層服接口;所有的調用都通過網關統一處理,實現權限驗證和負載分配。
(6)SaaS 服務層:此層是通過配置將功能組合成不同的服務場景,服務于不同的用戶類型。
SaaS 服務模式有四個等級的成熟度[6],依此是:
(1)定制開發級:此級的SaaS 模式與傳統軟件模式的區別主要在于商業模式的不同,在部署方式和功能開發上基本一致。
(2)可配置級:此級的SaaS 模式創新在于通過實例配置為用戶提供服務,但是針對不同的用戶還是進行獨立的部署。
(3)高性能多租戶架構級:此級的SaaS 模式創新在于僅部署一個實例,通過配置的方式為全部用戶提供服務,這樣規避了以上2 級的缺點,但此級的模式還不能達到最優化,因為當用戶量和使用量增加時,單一實例的部署將無法為用戶提供可靠的性能保障。
(4)可伸縮多租戶架構級:此級的SaaS 模式創新在于通過負載均衡的方式部署多個相同的實例,以此來彌補單個實例部署的性能不足問題。
本文設計架構采用第四級可伸縮多租戶架構級,結合微服務理念,不僅部署多個實例,而且將實例分解成多個服務,最大限度的發揮微服務技術和SaaS 模式的融合優勢。
目前微服務技術體系架構主要有Dubbo、.Net Core、Dubbogo、Spring Cloud 等。通過對比,本文所設計平臺架構的微服務技術體系選擇阿里巴巴公司在Spring Cloud 基礎上擴展的Spring Cloud Alibaba 技術棧,圖2 展示了此技術棧的主要技術內容。
此技術架構體系采用的主要技術介紹如下:
(1)Web 服務:采用Nginx 為應用提供Web 服務。Nginx 具有占用系統內存少,運行穩定性高等特性,是目前世界上使用最多的Web 服務器;負載均衡也是其提供基礎功能之一,它將為應用提供分流的功能。
(2)服務網關與驗證:設計采用Spring Cloud Gateway 網關作為統一的服務接口請求入庫,并采用OAuth2 對請求接口進行驗證,以此完成服務請求的驗證與分發。
(3)服務注冊發現:設計采用Nacos 作為此技術體系的服務注冊發現技術。通過Nacos 我們可以簡單的實現服務的動態發現,配置和流量管理。
(4)熔斷限流:設計采用Sentinel 作為熔斷限流技術。
本文提出一種基于微服務的建筑能效管理SaaS 云平臺架構設計。采用微服務架構體系使得平臺的性能具有可擴展性,保障了在建筑能耗及系統運行數據不斷增長的情況下,始終提供高性能服務。采用融合了微服務技術的可伸縮多租戶架構模,保障了功能需求的多樣性和需求變化的快速響應。按此設計實現的建筑能效管理云平臺,彌補了采用傳統架構體系單體系統的不足,具有性能可擴展、功能可擴展性、資源可擴展等特性,極大提高了建筑能效管理的水平和平臺價值。