高 靜,安創鋒,劉 歡,田 迪
(1.中海石油(中國)有限公司秦皇島32-6/渤中作業公司,天津 300452;2.中海油能源發展股份有限公司工程技術分公司,天津 300452)
為引領第四次工業革命,數字化、智能化戰略已經上升至重要國際戰略,中國海洋石油有限公司提出大力發展數字化、智能化指導思想。中海油某智能油田建設過程中緊密集合目前最新的IT 技術,同時遵循中海油生產云平臺應用建設規范要求,目標實現了油藏、注采和設備設施的智能化管理以及遠程操控管理,進而實現海上油田無人化少人化、油藏研究可視化、生產運營協同化和戰略決策科學化管理,推動生產方式轉變和管理流程優化,構建一種“智能、安全、高效”的新型海上油氣開采運行模式,并通過智能油田綜合管理系統將研究建設成果進行可視化展示。
因此本文將重點介紹通過微服務架構設計,完成項目分層微服務架構設計在海上智能油田綜合管理系統的實踐。一方面實現大型能源行業綜合業務系統設計,另一方面闡述一種成果積累的微服務設計方法。
該文所設計的智能油田綜合管理系統包含陸地云端服務系統和邊緣端服務兩個區域的功能應用,其中邊緣端服務負責對海上19 套生產監測系統進行實時高頻的數據采集、匯聚及回傳至陸地服務器與邊緣視覺識別計算,云端服務系統負責對海上平臺各類生產數據進行綜合多樣計算與可視化展示。
智能油田綜合管理系統云端微服務通過前期的需求分析調研與結合各專業工程師日常工作流程進行梳理,最終確定9 項功能應用模塊,包含遠程監控、生產管理、油藏管理、注采管理、設備設施管理、調度管理、能耗管理、安全管理和報表管理,如圖1 所示。根據領域模型DDD 微服務拆分最佳實踐,對9 項功能模塊的后端服務進行服務拆分,最終形成8 個服務領域,包含油藏中心、設施中心、作業中心、設備中心、支持中心、用戶中心、人員中心和算法中心,通過領域的劃分能夠對服務進行業務域的統一管理,統一業務的數據服務,此種設計方法目標可避免數據服務的重復性建設。

圖1 云端微服務設計
智能油田綜合管理系統邊緣端微服務通過在海上平臺架設多協議接入邊緣計算一體機設備,負責為海上生產監測設備提供硬件、軟件接入服務和邊緣計算資源,并實現邊緣數據階段性數據緩存,避免網絡中斷導致數據丟失,再通過數據匯聚程序實現數據的清洗與轉化,形成數據輸出接口服務,如圖2 所示。目前,邊緣一體機中部署的對接服務可實現對接MODBUS、OPC、HTTP、MQTT 和ONVIF 等協議數據。

圖2 邊緣端微服務設計
服務劃分是微服務架構設計中重要一環,是架構合理性的關鍵,不但影響到系統的穩定和性能,還會對將來的全局業務監控、鏈路分析和服務治理的效果產生巨大影響,而且會對系統靈活性和組織溝通效率也產生深遠的影響。系統的服務劃分可以遵循以下幾個原則,如圖3 所示。

圖3 微服務設計實踐原則圖
服務的最小完備性:服務所提供的能力應該是完整的,能夠滿足基本的業務目標,同時避免添加不必要的能力。
自我履行的原則:服務自身能夠決定自己能夠做什么,不屬于服務本身的職責,應該轉給其他服務完成。
穩定的能力空間:減少其他服務變化對本服務的影響。
易用性的原則:使用服務使用者專業領域內有意義的名稱,優先選用業務概念而不是技術概念。
可被重用、可被組合原則:服務可重復使用相同或相似場景,可與其他服務組合使用。
歸屬清晰:服務的業務歸屬應當清晰,服務的分層應當清晰。
智能油田建設項目在微服務拆分之前,由架構設計團隊對項目微服務架構進行技術路線設計,項目采用4 層架構設計,充分考慮業務流程解耦,提高系統程序的靈活性與可拓展性:由前端服務層完成系統界面展示,做到前后端分離;聚合服務層完成負責業務過程組合與交互,用于支撐多變的前端需求;基礎服務層負責整合并提供基礎業務,用于持續基礎能力沉底;數據層進行數據分類存儲,如圖4 所示。

圖4 微服務架構設計思路圖
在智能油田建設項目微服務設計工作中,按照微服務設計最佳實踐進行本項目的微服務設計。整個過程以真實業務為輸入,經過業務模型梳理、用例模型梳理、序列圖設計、服務梳理、服務設計5 個階段,輸出智能油田建設項目微服務設計,實現可指導研發階段的服務落地的目的。如圖5 所示。

圖5 微服務架構設計流程圖
(1)微服務設計過程通過需求矩陣分析與工作流程分析等方式獲取系統建設范圍,明確項目需要解決的問題與需要實現的優化功能。通過需求分析過程確定用戶角色、業務描述、需求描述、數據描述和運行環境要求,形成業務需求功能點設計矩陣。通過需求功能點矩陣將需求明細轉化為軟件服務動作。
(2)梳理服務動作,結合中海油集團公司數據湖項目提供的統一數據源,由業務人員輔助確定服務的數據源,將數據源進行匹配對比,在數據源符合性達到60%的服務,進行針對性的服務分析,將相似或者相同的動作進行通用性設計。
在過程一方面形成的是共性服務動作,如文件上傳、下載、消息服務、郵件服務等技術服務組件,此類服務通常市面上具有成型的技術組件,項目組只需按照項目特定場景選擇合適技術棧開展優化即可。
上文提到,本項目將采用聚合服務與基礎服務解耦的架構設計,所以在業務服務聚合的過程需要充分考慮服務的輸入源特征,如服務動作由多個服務聚合才能形成最終的結果,并且此序列動作與系統界面展示強相關(序列輸出與展示內容一致),那么將此服務抽離形成聚合服務。如序列動作主要為操作實體對象與數據源強相關,那么將此服務抽離形成基礎服務,通過此過程實現頁面與數據層的高內聚與低耦合,如圖6 所示。

圖6 前后端調研關系圖
(3)此設計方法在推廣過程中充分考慮各用戶對相同業務在界面展示的不同需求,針對此情況開發人員只需要對聚合服務與前端界面服務進行調整,無需修改基礎服務。同時如果在數據源模型發生優化的情況下,開發人員修訂基礎服務即可完成程序修訂,無需對多個聚合服務進行修訂。
實時數據采集與遠傳程序支持通過ModbusRTU、Http、OPC、WebService、ONVIF、數據庫連接等多種方式從在線監測系統中采集實時數據,獲取到實時數據后,再通過MQTT 協議將數據遠傳到海油PaaS 云平臺。云端數據匯集程序將實時數據存儲到kudu 數據庫,文件類數據存儲到MinIO 文檔庫,如圖7 所示。

圖7 邊緣端數據采集架構圖
其中數據采集服務包含采集配置,通過協議接口配置、數據采集頻率配置、點表配置、緩存配置、斷點續傳和傳輸加密等實現對多協議的數據進行采集;為方便數據采集統計,設計按平臺、設備類別、時間對采集的實時數據進行統計;由于采集服務部署于海上平臺環境,IT 人員配備不足,通過采集報警實現系統自動對數據采集異常進行報警,并將報警信息推送給管理員。
實時數據甄別服務是在實時數據采集的基礎上,實時對數據質量進行監測,按照定義的數據甄別規則診斷出假、啞、空等問題數據。
數據緩存服務是通過采集服務獲取數據后,并行將數據緩存至數據庫,在網絡情況中斷情況下保證數據傳輸不丟失,確保數據的完整性。數據回傳服務采用物聯網MQTT 協議對數據進行加密回傳。如圖8 所示。

圖8 消息傳輸架構圖
本系統在實施10 個月后完成全部軟件功能開發、系統測試、和上線試運行工作,目前系統已正常運行,并在油田內部進行正常運行使用。系統建設成果中的微服務,可在中海油其他油田進行成果復用。
在本文中,對目前海上油田業務需求以及智能化功能需求進行架構設計,研究了針對業務復雜度較高的微服務劃分思路及方法,提出了實踐方案,通過此微服務劃分方式支持中海油智能油田系統的建設,保證建設成果的可復用性,做到一次建設,多處使用,可極大地降低投資與建設成本。