胡健坤,陳志堅
(中國能源建設集團廣東省電力設計研究院有限公司,廣州 510663)
“互聯網+”智慧能源是國內對能源互聯網的詮釋,旨在將互聯網平臺、信息通信技術與能源生產、傳輸、存儲、消費及市場交易各環節進行深度融合,為傳統的能源產業賦能,建設縱向“源網荷”協調互動、橫向多能協同互補的新型能源生態系統。為推進能源互聯網建設,國家發改委發布了《關于推進“互聯網+”智慧能源發展的指導意見》并在全國范圍內組織開展能源互聯網示范項目建設。國內能源企業都希望通過“互聯網+”找到創新發展的新支點,其中兩大電網公司都做出了重大的發展戰略調整,加快向綜合能源服務商轉型的步伐:國家電網公司提出按照“一主四翼”的總體布局建設中國特色國際領先的能源互聯網企業;南方電網公司確立數字化轉型發展戰略,圍繞數字電網建設具有數字化、智能化、互聯網化特性的新型能源生態系統?!皟删W”的轉型計劃中都將應用互聯網思維和技術,構建開放、共享能源信息服務平臺,打造共贏、共享能源互聯網生態圈列為重要任務,同時積極開展相關探索。例如已經建成的蘇州工業園區智慧能源管理系統和廣州中新知識城的智慧用能服務平臺。智慧能源服務平臺是能源生態圈各方參與互動的最便捷途徑,也是能源互聯網價值變現的高效工具。然而,智慧能源服務平臺是面向互聯網的創新業務平臺,在擴展性、靈活性,可靠性方面相比傳統企業信息管理系統要求更高。本文應用互聯網業界流行的微服務架構,對平臺進行設計和實現,提升平臺對未來能源業務需求的快速響應能力。
智慧能源服務平臺是充分結合“大云物移”等IT新技術,面向能源生態圈用戶構建的互動、開放互聯網平臺。平臺提供綠色、安全、經濟、高效、增值的智慧能源服務,例如支持能源企業開展需求側管理業務,支撐售能公司管理售能業務,輔助能源服務商開展能源增值業務,為微網、能源運營商提供多能協同優化分析,為分布式能源擁有者、工商業用戶提供設備運行監測服務等。
平臺的定位決定其具有擴展速度快、需求多變、可靠性要求高等特點:(1)擴展速度快體現在平臺用戶數量的快速增長。傳統行業企業級管理系統的用戶群體主要是內部員工、合作伙伴或訪問頻次有限的公眾用戶。智慧能源服務平臺用戶包括了能源生態圈中數量眾多的各類市場參與主體和廣大的能源消費者,且業務功能豐富,隨著平臺用戶越來越多,平臺的訪問量將會迅速增加,因此,平臺規模需要具備橫向快速擴展的能力;(2)需求多變體現在綜合能源商業模式的不確定以及市場主體的不成熟?!盎ヂ摼W+”智慧能源是隨著國家能源革命、電力體制改革等背景下發展出來的能源新業態,一方面不可避免地受到政策、經濟、社會、技術等多方面因素影響,例如分布式發電交易缺少政策文件支持,冷熱電互聯受到傳統行業壁壘的限制、能源交易市場尚未建立等;其二,能源互聯網生態圈尚處在發展初期,部分市場主體尚未發展成熟,例如能源整合商、代理售能公司等。業務需求不穩定必然導致系統功能的經常性調整,因此平臺需要具備快速響應新需求的靈活調整能力;(3)可靠性要求高體現在平臺具備向用戶提供不間斷服務的能力。用戶通過平臺開展日常業務,平臺的服務中斷將會降低用戶體驗,甚至嚴重影響用戶工作,尤其是涉及能源交易及實時監控等敏感業務。因此,平臺需要具備高可靠的、不間斷服務能力。
目前大多傳統行業的信息管理系統均采用單體式架構,用單體式架構開發的系統通常被打包成一個獨立單元,并部署在同一臺機器的同一進程中運行。單體式架構系統存在以下缺點:(1)靈活擴展能力差:系統只能通過負載均衡進行整體水平擴展,不能針對系統的局部功能模塊進行按需擴展,且會浪費較多的軟硬件資源;(2)開發周期長:隨著系統的不斷升級和功能的增加,模塊間的耦合會越發嚴重,復雜的內部關系會嚴重影響系統的可維護性,任何微小的系統改動都需要對整體進行重新部署,耗費大量時間。強耦合模塊的開發人員離職甚至會導致整體系統無法繼續升級;(3)可靠性差:單體部署的系統由于用同一個進程,當某個模塊出現異常時,會導致整個系統崩潰和服務中斷。
單體架構系統還存在與外部系統集成困難的問題,SOA架構的引入一定程度解決了系統間的標準化集成困難,但在高并發、高實時的情況下,依然無法實現服務負載的簡便調整以及系統靈活部署。
微服務的設計理念是將龐大的業務系統劃分為獨立的微服務,每個微服務包含從數據存儲到業務邏輯的完整結構。各個微服務是高度“自治”的,體現在:每個微服務內部都可以按需采用不同的技術實現架構和數據存儲技術;每個微服務都可以獨立部署和維護,擁有獨立的生命周期和服務邊界;微服務之間從開發、部署到運行都不存在依賴關系,只通過輕量級接口調用進行數據交換。微服務架構實現單個服務的高內聚,各個服務間低耦合的效果,更有利于系統的局部靈活變動和部署。
微服務應用“分治”思想,按大系統劃分為獨立、松耦合的細小模塊,在大型的、復雜多變的互聯網應用中有明顯的優勢:(1)更好的擴展性:根據業務或功能邊界對整體系統進行拆分,結合良好的設計可以降解整體系統的復雜度,降低代碼問題的排查難度。實現單個模塊高內聚以及模塊間松耦合,有助于提升開發的專注度和效率,總體降低系統變更及成本;(2)部署更靈活:微服務可以分別部署在不同的容器環境,對微服務更新部署不會影響到其他微服務的正常運行,實現系統局部模塊的在線迭代發布;(3)更好技術開放性:與傳統單體架構必須采用統一技術路線開發不同,微服務架構允許不同微服務采用不同技術路線實現,開發團隊可以自由選擇熟悉或合適的開發語言和工具,從而提高效率和可靠性。
微服務帶來上述好處同時,也帶來一些問題:(1)微服務設計復雜。微服務拆分實際是將部分模塊間的關系從代碼級別提升到接口級別,服務之間的接口調用關系復雜,微服務的劃分對設計人員要求較高;(2)微服務數據庫架構更復雜。對于涉及更新多個業務對象的事務,單體架構系統只存在一個數據庫,實現相對簡單,微服務業務對象可能分散在多個數據庫,需要保證各個庫數據一致性,對開發人員的要求較高;(3)管理維護成本高。與單體架構系統整體一次性部署不同,微服務架構系統擁有大量服務,每個服務均要部署并且要進行獨立配置,工作量巨大。所幸的是,這些問題通過良好的設計規劃,以及借助微服務框架治理,自動化部署等工具都可以得到有效解決。
“互聯網+”智慧能源服務平臺采用“微服務+容器云”技術構建,確保了平臺業務功能具備橫向彈性擴展能力和迭代更新的靈活性,同時引入大數據能力組件,用于支撐平臺的數據分析業務。總體架構如圖1所示。

圖1 “互聯網+”智慧能源服務平臺總體架構Fig.1 The overallarchitecture of the"Internet plus"smart energy service platform
1)能源生態圈用戶可以通過門戶、APP等方式接入平臺,服務層由眾多相互獨立、可拓展的微服務構成,根據功能特性和可重用程度,可以將微服務劃分為專業微服務、共享業務微服務和技術微服務三大類。每個微服務采用獨立或共享數據庫,按照數據特征(如結構化數據、非結構化數據、空間數據等),選擇不同的數據庫存儲和應用,如使用MySql、Redis、PostgreSQL等數據庫進行數據持久化或緩存。
2)平臺層主要由微服務設施、容器云、大數據組件等組成。微服務設施為平臺微服務提供運行監控、服務治理等基礎組件,實現負載均衡、服務注冊發現、調用鏈跟蹤、日志監控等功能;容器云采用Kubernetes+Docker技術框架搭建,實現容器鏡像的管理和自動化部署,以及容器級的自動擴容和縮容能力,支持微服務規模的彈性伸縮。大數據組件采用主流的大數據計算分析和存儲組件搭建,實現能源數據的存儲、融合及分析計算,計算結果存儲于關系型數據庫,并構建數據微服務,為應用提供數據分析服務。
3)基礎資源層實現將服務器、存儲、網絡等物理設備虛擬化,向上層提供云平臺的虛擬化IT資源,包括計算資源、存儲資源和網絡資源等。
智慧能源服務平臺核心部分采用SpringCloud微服務開發框架搭建,并根據微服務運行和管理需求拓展了日志管理等組件,平臺微服務技術架構如圖2所示。

圖2 “互聯網+”智慧能源服務平臺微服務技術架構Fig.2 The microservice technology architecture of"Internet plus"smart energy service platform
微服務設計遵循前后端分離、動靜分離的原則,并實現負載均衡,前后端的解耦使得平臺模塊修改更靈活,頁面和后臺服務升級更新互不影響,有助于提升系統開發效率和用戶體驗;后端微服務接入統一網關,實現微服務的動態路由、服務的訪問權限安全校驗,對服務請求進行監控,實現服務的負載、熔斷、降級和限流等功能;Eureka服務注冊與發現、Config配置組件實現服務注冊與發現、心跳檢測及所有服務配置的集中管理和配置熱部署;Hvstrix熔斷器是微服務的容錯管理工具,可通過熔斷機制控制服務和第三方庫的節點連接,從而對延遲和故障提供容錯能力;Sleuth服務調用跟蹤、ELK日志中心等,實現服務之間調用關系、調用時間等信息跟蹤記錄,輔助運維人員開展平臺微服務的日常運維;部署消息隊列,與Kafka實現無縫集成,為分布式事務處理機制時提供可靠性消息服務,確保存儲在不同微服務的相關數據一致性。
微服務架構的優勢發揮與微服務劃分設計息息相關,拆分粒度過細會導致平臺因服務數量多,相互依賴關系復雜而變得難于管理維護,應以拆分到可以通過自由編排服務來獲取所需組合服務為宜。然而,微服務劃分不是一蹴而就的工作,成熟的微服務需要業務的不斷滋潤、細化并沉淀。初次設計可以參考以下原則:(1)對于業務完整、職責單一的應用功能單元應當拆分為獨立微服務;(2)具有重用性特點的公共功能應當拆分為獨立微服務;(3)對于訪問量較大、資源消耗較大、耗時較長的功能,應拆分為獨立微服務;(4)對于強關聯數據對象的新增、刪除、修改操作,合并為一個微服務;(5)對于耦合性強、具有事務強一致性要求的業務,盡量在一個微服務中實現。
經過調研能源生態圈各類用戶的需求,結合上述劃分原則,“互聯網+”智慧能源服務平臺微服務劃分如圖3所示。

圖3 “互聯網+”智慧能源服務平臺微服務劃分Fig.3 The microservice division of"Internet plus"smart energy service platform
專業微服務是面向特定業務需求的定制化服務,一般不具備重用性,例如需求響應微服務、多能協同管理微服務、能源交易微服務等。共享業務微服務實現如訂單、合同、支付等通用業務功能,同時可以為多個專業微服務提供諸如用戶信息管理、權限訪問控制公共信息服務。技術微服務提供用于支撐平臺機制的基礎能力,如分布式業務管理、短信發送、文件管理等。
對平臺的微服務治理重點從服務注冊與發現、服務調用跟蹤以及日志監控三個方面考慮。設計中采用Eureka組件實現,每當微服務啟動時,都會向Eureka發送自身地址信息,Eureka維護所有微服務的地址,并定時發送心跳消息更新微服務狀態,微服務通過Eureka獲取其他服務調用地址;服務調用跟蹤及日志監控應用Sleuth+ELK組件實現,Sleuth可以記錄眾多的微服務之間互相調用,清晰地記錄服務的調用鏈路,ELK(Elasticsearch+Logstash+Kibana),通過實時數據采集引擎Logstash和日志框架Log4j對微服務運行日志進行收集并存儲,應用搜索服務器Elasticsearch及可視化分析平臺Kibana實現日志的查詢、分析,極大地方便運維人員對微服務調用失敗的故障分析與快速定位。
微服務本質是一種分布式架構,高并發情況下會采用異步的消息機制作為微服務之間的通信方式,因此必須解決分布式事務處理問題。按照基于可靠性消息模型的思想進行設計,主服務與從服務之間不會直接交互,兩個服務的狀態通過消息中間件進行傳遞,根據對側狀態消息決定本側事務繼續或回滾,整個過程中消息中間件要對主從服務的執行狀態進行監控并更新狀態信號。假設主服務A事務需要和從服務B事務同步,基于可靠消息模型的處理流程如圖4所示。

圖4 微服務間基于可靠性消息模型的事務一致性處理流程Fig.4 Transaction consistency processing flow based on reliability message modelbetween microservices
智慧能源服務平臺涉及業務廣泛,組織了多專業、龐大的團隊進行開發。在傳統單體架構模式下,功能開發、測試、部署都需要協同,無法在項目要求時間內完成。應用微服務開發模式,將平臺劃分為眾多微服務,相應將整個團隊分為多個小組,不同小組獨立負責一個或多個相關微服務開發、測試和部署,小組間只需溝通少量的交互接口設計,保證了各組可以同步開展工作并在集成期間無縫銜接。通過前后端分離技術,小組內部不同開發人員也能明確分工,獨立開發,且更專注質量。這樣大大降低了開發的相互依賴性,提升集成和聯調效率,確保了項目按時完成。
平臺采用微服務架構使得不同開發小組選擇不同開發技術成為可能。建設中負責多能協同管理微服務開發小組擅長Java開發,需要與由科研團隊提供的用Matlab開發的調度優化算法模塊,以及用Python開發的負荷預測模塊進行集成。Matlab和Python在多目標求解、機器學習算法等方面具有優勢,而Java重寫則相當困難且費時。通過對算法模塊的微服務封裝,順利實現了算法集成,屏蔽了底層技術的差異性,實現“黑盒”調用,節約了大量開發與調試時間。此外,不同微服務可以根據業務特點應用不同類型數據庫,例如分布式資源管理微服務主要涉及結構化數據的操作,可采用MySQL等傳統結構化數據庫,而多能協同微服務側重對能源網絡拓撲數據操作,則使用PostgreSQL等擅長空間數據處理的數據庫,發揮不同數據庫針對不同類型數據應用的技術優勢。
微服務架構的應用使得平臺能夠便捷地發布測試并實現持續集成。平臺建設過程中,隨著微服務陸續完成并具備部署測試條件,依靠微服務架構實現了單個微服務的更新上線不影響其他微服務,大大提高了部署的靈活性。在服務調試過程中,需求響應微服務發生問題并崩潰,得益于微服務架構和前后端分離技術,平臺的門戶、能源交易、多能協同等模塊依然正常運行。在運維階段,對需求響應微服務的升級,不需整體服務關停,只需更新單個微服務,既提升了更新部署的靈活性,也提升了平臺運行可靠性,真正實現系統的不間斷服務。
通過應用微服務+容器云的開發技術,使得平臺具備服務級的橫向擴展能力,并提升了資源的利用效率。在開展多能協同管理微服務性能測試時,發現某工單查詢頁面對應的一組后臺微服務存在瓶頸,在200并發持續5 min的情況下,存在CPU過載的情況。通過Kubernetes復制了該微服務對應的Docker實例,并通過微服務網關的負載均衡機制,解決了高并發下的性能瓶頸問題。此外,還可以通過增加微服務的硬件資源,如服務器內存、使用高性能CPU等手段解決性能擴展問題,應對智慧能源服務平臺用戶的快速擴展。
選取2個功能場景測試平臺運行性能:“巡視工單查詢”代表簡單查詢類業務,“合同電量統計”代表復雜統計類服務。測試環境為2臺8核、16 G虛擬機,一臺部署微服務Docker,另一臺部署Mysql數據庫,100 M網絡帶寬連接,用LoadRunner軟件。平臺性能測試中,200個虛擬用戶外部用戶并發執行“巡視工單查詢”功能,持續5 min,事務平均響應時間為0.269 s,成功率100%,對應的2臺服務器CPU使用率分別為9.27%、12.22%,其他資源使用率正常;100個虛擬用戶外部用戶并發執行“合同電量統計”,持續5 min,事務平均響應時間為0.879 s,成功率100%,對應的2臺服務器CPU使用率為10.13%、12.97%,其他資源使用率正常。結果顯示,按微服務架構設計開發的智慧能源服務平臺,根據業界性能測試“2-5-8原則”,平臺功能的性能表現良好。
本文闡述了“互聯網+”智慧能源服務平臺的建設背景、需求特點,分析了傳統單體架構用于開發需求多變的互聯網平臺的局限性,介紹了微服務架構的理念以及優點和可能遇到的問題,然后詳細說明了基于微服務架構的“互聯網+”智慧能源服務平臺的總體架構、技術及設計要點,最后基于微服務架構進行了“互聯網+”智慧能源服務平臺實踐,證明了平臺在實現擴展性、可靠性以及部署靈活性的同時,可以達到良好的性能。
目前微服務架構在傳統能源行業的應用仍然處于起步階,隨著能源革命的不斷推進以及能源生態圈的逐步形成,是平臺未來發展的技術方向,“互聯網+”能源的商業模式將更加豐富多樣,微服務架構將有更大的應用發展空間。本文提出的基于“互聯網+”智慧能源服務平臺設計思路與實現方法,旨在探索互聯網新型IT架構在能源行業中的應用,為行業內建設能源互聯網服務平臺提供參考。