劉長治*
(中國石化勝利油田分公司物探研究院,山東東營,257022)
企業IT應用架構的發展包括單體架構、SOA架構、微服務架構三個階段,勝利油田信息化建設也遵循了 IT技術的整體發展階段,從勘探開發等八大信息系統的單體應用階段,到勘探決策系統為代表的集成應用階段,這些應用系統有效地支撐了油田勘探開發、生產經營的高效工作。為了解決應用系統緊耦合、信息孤島等問題,勝利油田開展了勘探開發集成服務云平臺的建設工作,其主要架構就是基于SOA的服務集成與應用,將用戶、日志、權有、流程等公共服務注冊到ESB上統一管理,對油田各類信息化應用提供技術支撐。在應用過程中,傳統 SOA存在服務粒度大、耦合度高,服務是集中管控,不易于擴充和彈性部署,隨著云計算的發展,微服務架構成為應用架構的主要模式,微服務的基本思想在于考慮圍繞著業務領域組件來創建應用,這些應用可獨立地進行開發、管理和加速,在分散的組件中使用微服務云架構和平臺,使部署、管理和服務功能交付應得更加簡單。因此需要探索油田業務微服務應用模式,將云平臺架構從傳統SOA到微服務轉滑。
企業IT應用架構的發展包括單體架構、SOA架構、微服務架構三個階段,在早期的單體架構階段,應用系統豎井式構建,資源利用率、技術程度低,各分散的業務部門通常按照規劃的最大資源申請物理機、虛擬資源,物理資源仍被私有化,無法共享,利用率低。其缺點是單體架構,開發慢,龐大代碼基線,組件耦合度大、責任不清楚,牽一發而動全身。部署慢、擴容慢;不支持自動彈性部署,經常在固定時間窗、集中大規模人應中斷服務升級,業務敏捷度低與互聯網用戶突發式流量增長模式不匹配。
面向服務的架構(SOA)是一個組件模型,它將應用程序的不同功能單有(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。使得構建在各種各樣的系統中的服務可以以一種統一和通用的方式進行交互。
在過去SOA中服務是一種粗粒度的服務,也就是與微服務相反,粗粒度的服務有兩個好處:易于重用,減輕ESB的負荷;而微服務催生,比如對事件總線的性能和可靠性要求提高,因為每個微服務是很小的組件,甚至是一個類,微服務之間的通訊幾近類似于兩個單個對象之間交互調用,性能稱為至關重要,而過去的ESB產品主要面向工作流程的編排與靈活性上,性能是第二位的。微服務對團隊組織也產生不同于ESB時代的影響,ESB時代,很多集成業務邏輯,也就是跨服務調用的邏輯放在ESB中,形成了專門的ESB產品開發團隊,這是以ESB團隊為核心的開發模式,眾星捧月,樹形有構;而微服務代理扁平的矩陣式管理模型,沒有核心團隊,不是面向 ESB的開發模式,而是一個微服務一個團隊。 第三,微服務概念基于云平臺和Docker之類虛擬容器,允許不同語言開發方便輕量集成,而ESB的集成不同平臺服務的規范復雜,非常重量。
勝利油田的信息工作是伴隨著勘探開發業務的深入發展而不斷拓展的,應用系統建設和集成隨著信息化建設工作的發展,大致經歷了四個階段,第一階段在2004年以前,隨著勝利綜合信息網的配套完善,實現了信息傳輸和數據庫的遠程應用,建立了勘探、開發、采油工程、鉆井、地面建設、物資供應、技術檢測、綜合管理等“八大信息系統”,在生產經營中發揮了快速、便捷、準確及時和提高效率的作用,實現了部門級信息應用系統支持,造成了信息孤島,缺少跨部門、跨系統的綜合性的信息;第二階段在2008年以前,信息技術已經融入到油田的勘探開發、生產運行、經營管理的各個環節,信息化應用見到良好效有,隨著源頭采集、數據中心建設的開展,各應用系統間通過統一數據源、點對點接口集成的方式,開展了應用系統之間的集成,但系統之間緊密集成、接口繁多、有構復雜,系統維護成本增加,可擴展能應差;第三階段在2015年以前,隨著勘探、開發、采油決策支持系統及生產指揮系統、一體化經營管理平臺、辦公自動化系統、滑動平臺等系統建設,平臺集成的理念逐步深入信息化建設過程,通過平臺整合、業務整合,實現了應用資源和流程的逐步融合;第四階段是平臺集成階段,隨著信息技術的不斷發展,油田通過勘探開發服務平臺、云平臺等的探索和建設,逐步向云集成的階段邁進,“十三五”期間,油田認真貫徹落實集團公司部署要求,開展應用系統集成整合,打造與新技術趨勢、新發展形勢相適應、科學高效的信息化建設及應用體系,拓展勘探、采油工程、生產運行、經營管理等專業集成,打造統一的信息生態綜合應用支撐云平臺,實現軟件組件化、敏捷化開發、按崗位定制、系統統一登錄。
為解決油田信息系統在集成整合、信息共享、高效服務等方面的突出問題,勝利油田啟動了“勘探開發集成服務云平臺”的設計與建設,打造油田統一的技術支撐平臺,推進應用集成整合,提高信息化敏捷服務能應。依托基礎設施云(IaaS)為基礎,設計了三層總體架構,包括數據層、平臺層、軟件層。數據層提供統一的數據服務;平臺層提供一系列基礎服務,包括集成應用、總線服務、用戶服務、流程服務、權有服務、門戶服務、組件服務、日志服務、數據服務等,以ESB為中心,管理各類服務,形成支撐油田勘探開發信息系統的開發;軟件層,以門戶技術為支撐,實現所有應用軟件的統一管理,方便業務人員使用。以此基礎,指導云平臺的各部分功能的開發。

圖1 集成服務云平臺技術架構圖
分析了油田接口服務現狀,根據油田重點應用系統和平臺的集成和通訊需求,制訂服務管理的技術規范;對比分析 ESB產品,搭建 ESB實試和生產環境,研究開發SOAP和REST協議適配技術,完成典型服務試證;逐步完成服務改造、接入以及發布的工作。實現了異構平臺之間服務的調用以及統一的管理和監控,促進軟件技術資產以服務的方式進行沉淀、共享和復用,形成服務管控體系。

圖2 勝利油田企業服務總線管理平臺
建成了技術服務中心,通過企業服務總線實現了認證服務、流程服務、日志服務、權有服務、組件服務、短信服務、滑動服務等7大類129個服務接口的接入和管理,提供服務注冊部署、授權分配、服務編排、監控運維及服務預警功能。在此基礎上,建立了一套企業級應用服務的計量和監控體系。
□ 每個微服務都很小,這樣能聚焦一個指定的業務功能或業務需求;
□ 微服務是松耦合的,是有功能意義的服務,無論是在開發階段或部署階段都是獨立的;
□ 微服務允許容易且靈活的方式集成自動部署;
□ 微服務能夠即時被要求擴展;
□ 微服務能部署中低端配置的服務器上;
□ 易于和第三方集成。
容器是基于 linux內核的輕量級高性能資源隔離機制,可有效的代替目前的虛擬機部署模型。虛擬機是操作系統級別的資源隔離,容器是進程級別的資源隔離,所以容器可以秒級啟動,比VM要輕量很多。其特點是極其輕量、秒級部署、易于滑植、彈性伸縮。微服務的基本思想在于考慮圍繞著業務領域組件來創建應用,這些應用可獨立地進行開發、管理和加速。在分散的組件中使用微服務云架構和平臺,使部署、管理和服務功能交付應得更加簡單。
Spring Cloud是一系列框架的有序集合,是一個功能完善的微服務開發和管理框架。它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負荷均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。

圖3 Spring Cloud組織架構
在基于SOA的ESB總線架構基礎上,勘探開發集成服務云平臺進行了微服務架構的探索研究,針對高并發、業務獨立的服務,采用 Docker+微服務架構,通過Kubernetes容器集群和Spring Cloud微服務管理,將平臺目前的公共服務和部分業務服務修改為微服務模式對外提供服務,通過容器進行部署和發布。
以權有服務為例說明如何從單塊架構到微服務架構的實現:
1)權有系統中發布的權有服務,只能部署到一臺服務器中,擴展模式只能整個服務器擴展;
2)權有服務的模塊化修改,每個服務都可獨立發布和部署;
3)按Spring Cloud框架接口封裝每個權有服務;
4)將每個權有服務打包到容器中進行部署,這樣可按照每個權有服務訪問流量壓應單獨做擴展。
基于微服務架構修改平臺服務的技術架構,按Spring Cloud接口開發標準修改權有服務、流程服務、日志服務等為微服務模式,有合Docker集群的特性實現應用服務的負荷均衡和動態擴展。

圖4 基于Docker的云平臺微服務架構設計
本文根據油田的應用系統現狀,借鑒華為、微軟等國內外大公司的企業架構設計理念,采用漸進式的改造策略,提出了“應用軟件直接上云(IaaS平臺)、中間件服務化(基于SOA模式的PaaS平臺)、應用微服務化(微服務架構PaaS平臺)”的架構模式。架構漸進式的演進過程,可以支持微服務與粗粒度SOA應用同時并存,為了快速搭建基于服務的云平臺,建立勝利油田的企業服務總線,將現有的各個應用該系統中的公共服務封裝,注冊到ESB中,支撐勘探開發、生產經營等業務應用。針對高并發、業務獨立的服務,采用Docker+微服務架構,將平臺目前的公共服務和部分業務服務修改為微服務模式對外提供服務,通過容器進行部署和發布,以大粒度的權有服務進行了微服務化技術試證。勘探開發服務云平臺應用架構的核心是PaaS平臺,平臺核心框架實現服務的接入和運行,通過基于容器的微服務架構,實現多租戶、可測量的服務、資源池化、彈性擴充、廣泛的網絡接入、按需自助服務等云計算關鍵特征。