劉長(zhǎng)治*
(中國(guó)石化勝利油田分公司物探研究院,山東東營(yíng),257022)
企業(yè)IT應(yīng)用架構(gòu)的發(fā)展包括單體架構(gòu)、SOA架構(gòu)、微服務(wù)架構(gòu)三個(gè)階段,勝利油田信息化建設(shè)也遵循了 IT技術(shù)的整體發(fā)展階段,從勘探開發(fā)等八大信息系統(tǒng)的單體應(yīng)用階段,到勘探?jīng)Q策系統(tǒng)為代表的集成應(yīng)用階段,這些應(yīng)用系統(tǒng)有效地支撐了油田勘探開發(fā)、生產(chǎn)經(jīng)營(yíng)的高效工作。為了解決應(yīng)用系統(tǒng)緊耦合、信息孤島等問題,勝利油田開展了勘探開發(fā)集成服務(wù)云平臺(tái)的建設(shè)工作,其主要架構(gòu)就是基于SOA的服務(wù)集成與應(yīng)用,將用戶、日志、權(quán)有、流程等公共服務(wù)注冊(cè)到ESB上統(tǒng)一管理,對(duì)油田各類信息化應(yīng)用提供技術(shù)支撐。在應(yīng)用過程中,傳統(tǒng) SOA存在服務(wù)粒度大、耦合度高,服務(wù)是集中管控,不易于擴(kuò)充和彈性部署,隨著云計(jì)算的發(fā)展,微服務(wù)架構(gòu)成為應(yīng)用架構(gòu)的主要模式,微服務(wù)的基本思想在于考慮圍繞著業(yè)務(wù)領(lǐng)域組件來創(chuàng)建應(yīng)用,這些應(yīng)用可獨(dú)立地進(jìn)行開發(fā)、管理和加速,在分散的組件中使用微服務(wù)云架構(gòu)和平臺(tái),使部署、管理和服務(wù)功能交付應(yīng)得更加簡(jiǎn)單。因此需要探索油田業(yè)務(wù)微服務(wù)應(yīng)用模式,將云平臺(tái)架構(gòu)從傳統(tǒng)SOA到微服務(wù)轉(zhuǎn)滑。
企業(yè)IT應(yīng)用架構(gòu)的發(fā)展包括單體架構(gòu)、SOA架構(gòu)、微服務(wù)架構(gòu)三個(gè)階段,在早期的單體架構(gòu)階段,應(yīng)用系統(tǒng)豎井式構(gòu)建,資源利用率、技術(shù)程度低,各分散的業(yè)務(wù)部門通常按照規(guī)劃的最大資源申請(qǐng)物理機(jī)、虛擬資源,物理資源仍被私有化,無法共享,利用率低。其缺點(diǎn)是單體架構(gòu),開發(fā)慢,龐大代碼基線,組件耦合度大、責(zé)任不清楚,牽一發(fā)而動(dòng)全身。部署慢、擴(kuò)容慢;不支持自動(dòng)彈性部署,經(jīng)常在固定時(shí)間窗、集中大規(guī)模人應(yīng)中斷服務(wù)升級(jí),業(yè)務(wù)敏捷度低與互聯(lián)網(wǎng)用戶突發(fā)式流量增長(zhǎng)模式不匹配。
面向服務(wù)的架構(gòu)(SOA)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單有(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來。使得構(gòu)建在各種各樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互。
在過去SOA中服務(wù)是一種粗粒度的服務(wù),也就是與微服務(wù)相反,粗粒度的服務(wù)有兩個(gè)好處:易于重用,減輕ESB的負(fù)荷;而微服務(wù)催生,比如對(duì)事件總線的性能和可靠性要求提高,因?yàn)槊總€(gè)微服務(wù)是很小的組件,甚至是一個(gè)類,微服務(wù)之間的通訊幾近類似于兩個(gè)單個(gè)對(duì)象之間交互調(diào)用,性能稱為至關(guān)重要,而過去的ESB產(chǎn)品主要面向工作流程的編排與靈活性上,性能是第二位的。微服務(wù)對(duì)團(tuán)隊(duì)組織也產(chǎn)生不同于ESB時(shí)代的影響,ESB時(shí)代,很多集成業(yè)務(wù)邏輯,也就是跨服務(wù)調(diào)用的邏輯放在ESB中,形成了專門的ESB產(chǎn)品開發(fā)團(tuán)隊(duì),這是以ESB團(tuán)隊(duì)為核心的開發(fā)模式,眾星捧月,樹形有構(gòu);而微服務(wù)代理扁平的矩陣式管理模型,沒有核心團(tuán)隊(duì),不是面向 ESB的開發(fā)模式,而是一個(gè)微服務(wù)一個(gè)團(tuán)隊(duì)。 第三,微服務(wù)概念基于云平臺(tái)和Docker之類虛擬容器,允許不同語言開發(fā)方便輕量集成,而ESB的集成不同平臺(tái)服務(wù)的規(guī)范復(fù)雜,非常重量。
勝利油田的信息工作是伴隨著勘探開發(fā)業(yè)務(wù)的深入發(fā)展而不斷拓展的,應(yīng)用系統(tǒng)建設(shè)和集成隨著信息化建設(shè)工作的發(fā)展,大致經(jīng)歷了四個(gè)階段,第一階段在2004年以前,隨著勝利綜合信息網(wǎng)的配套完善,實(shí)現(xiàn)了信息傳輸和數(shù)據(jù)庫的遠(yuǎn)程應(yīng)用,建立了勘探、開發(fā)、采油工程、鉆井、地面建設(shè)、物資供應(yīng)、技術(shù)檢測(cè)、綜合管理等“八大信息系統(tǒng)”,在生產(chǎn)經(jīng)營(yíng)中發(fā)揮了快速、便捷、準(zhǔn)確及時(shí)和提高效率的作用,實(shí)現(xiàn)了部門級(jí)信息應(yīng)用系統(tǒng)支持,造成了信息孤島,缺少跨部門、跨系統(tǒng)的綜合性的信息;第二階段在2008年以前,信息技術(shù)已經(jīng)融入到油田的勘探開發(fā)、生產(chǎn)運(yùn)行、經(jīng)營(yíng)管理的各個(gè)環(huán)節(jié),信息化應(yīng)用見到良好效有,隨著源頭采集、數(shù)據(jù)中心建設(shè)的開展,各應(yīng)用系統(tǒng)間通過統(tǒng)一數(shù)據(jù)源、點(diǎn)對(duì)點(diǎn)接口集成的方式,開展了應(yīng)用系統(tǒng)之間的集成,但系統(tǒng)之間緊密集成、接口繁多、有構(gòu)復(fù)雜,系統(tǒng)維護(hù)成本增加,可擴(kuò)展能應(yīng)差;第三階段在2015年以前,隨著勘探、開發(fā)、采油決策支持系統(tǒng)及生產(chǎn)指揮系統(tǒng)、一體化經(jīng)營(yíng)管理平臺(tái)、辦公自動(dòng)化系統(tǒng)、滑動(dòng)平臺(tái)等系統(tǒng)建設(shè),平臺(tái)集成的理念逐步深入信息化建設(shè)過程,通過平臺(tái)整合、業(yè)務(wù)整合,實(shí)現(xiàn)了應(yīng)用資源和流程的逐步融合;第四階段是平臺(tái)集成階段,隨著信息技術(shù)的不斷發(fā)展,油田通過勘探開發(fā)服務(wù)平臺(tái)、云平臺(tái)等的探索和建設(shè),逐步向云集成的階段邁進(jìn),“十三五”期間,油田認(rèn)真貫徹落實(shí)集團(tuán)公司部署要求,開展應(yīng)用系統(tǒng)集成整合,打造與新技術(shù)趨勢(shì)、新發(fā)展形勢(shì)相適應(yīng)、科學(xué)高效的信息化建設(shè)及應(yīng)用體系,拓展勘探、采油工程、生產(chǎn)運(yùn)行、經(jīng)營(yíng)管理等專業(yè)集成,打造統(tǒng)一的信息生態(tài)綜合應(yīng)用支撐云平臺(tái),實(shí)現(xiàn)軟件組件化、敏捷化開發(fā)、按崗位定制、系統(tǒng)統(tǒng)一登錄。
為解決油田信息系統(tǒng)在集成整合、信息共享、高效服務(wù)等方面的突出問題,勝利油田啟動(dòng)了“勘探開發(fā)集成服務(wù)云平臺(tái)”的設(shè)計(jì)與建設(shè),打造油田統(tǒng)一的技術(shù)支撐平臺(tái),推進(jìn)應(yīng)用集成整合,提高信息化敏捷服務(wù)能應(yīng)。依托基礎(chǔ)設(shè)施云(IaaS)為基礎(chǔ),設(shè)計(jì)了三層總體架構(gòu),包括數(shù)據(jù)層、平臺(tái)層、軟件層。數(shù)據(jù)層提供統(tǒng)一的數(shù)據(jù)服務(wù);平臺(tái)層提供一系列基礎(chǔ)服務(wù),包括集成應(yīng)用、總線服務(wù)、用戶服務(wù)、流程服務(wù)、權(quán)有服務(wù)、門戶服務(wù)、組件服務(wù)、日志服務(wù)、數(shù)據(jù)服務(wù)等,以ESB為中心,管理各類服務(wù),形成支撐油田勘探開發(fā)信息系統(tǒng)的開發(fā);軟件層,以門戶技術(shù)為支撐,實(shí)現(xiàn)所有應(yīng)用軟件的統(tǒng)一管理,方便業(yè)務(wù)人員使用。以此基礎(chǔ),指導(dǎo)云平臺(tái)的各部分功能的開發(fā)。
圖1 集成服務(wù)云平臺(tái)技術(shù)架構(gòu)圖
分析了油田接口服務(wù)現(xiàn)狀,根據(jù)油田重點(diǎn)應(yīng)用系統(tǒng)和平臺(tái)的集成和通訊需求,制訂服務(wù)管理的技術(shù)規(guī)范;對(duì)比分析 ESB產(chǎn)品,搭建 ESB實(shí)試和生產(chǎn)環(huán)境,研究開發(fā)SOAP和REST協(xié)議適配技術(shù),完成典型服務(wù)試證;逐步完成服務(wù)改造、接入以及發(fā)布的工作。實(shí)現(xiàn)了異構(gòu)平臺(tái)之間服務(wù)的調(diào)用以及統(tǒng)一的管理和監(jiān)控,促進(jìn)軟件技術(shù)資產(chǎn)以服務(wù)的方式進(jìn)行沉淀、共享和復(fù)用,形成服務(wù)管控體系。
圖2 勝利油田企業(yè)服務(wù)總線管理平臺(tái)
建成了技術(shù)服務(wù)中心,通過企業(yè)服務(wù)總線實(shí)現(xiàn)了認(rèn)證服務(wù)、流程服務(wù)、日志服務(wù)、權(quán)有服務(wù)、組件服務(wù)、短信服務(wù)、滑動(dòng)服務(wù)等7大類129個(gè)服務(wù)接口的接入和管理,提供服務(wù)注冊(cè)部署、授權(quán)分配、服務(wù)編排、監(jiān)控運(yùn)維及服務(wù)預(yù)警功能。在此基礎(chǔ)上,建立了一套企業(yè)級(jí)應(yīng)用服務(wù)的計(jì)量和監(jiān)控體系。
□ 每個(gè)微服務(wù)都很小,這樣能聚焦一個(gè)指定的業(yè)務(wù)功能或業(yè)務(wù)需求;
□ 微服務(wù)是松耦合的,是有功能意義的服務(wù),無論是在開發(fā)階段或部署階段都是獨(dú)立的;
□ 微服務(wù)允許容易且靈活的方式集成自動(dòng)部署;
□ 微服務(wù)能夠即時(shí)被要求擴(kuò)展;
□ 微服務(wù)能部署中低端配置的服務(wù)器上;
□ 易于和第三方集成。
容器是基于 linux內(nèi)核的輕量級(jí)高性能資源隔離機(jī)制,可有效的代替目前的虛擬機(jī)部署模型。虛擬機(jī)是操作系統(tǒng)級(jí)別的資源隔離,容器是進(jìn)程級(jí)別的資源隔離,所以容器可以秒級(jí)啟動(dòng),比VM要輕量很多。其特點(diǎn)是極其輕量、秒級(jí)部署、易于滑植、彈性伸縮。微服務(wù)的基本思想在于考慮圍繞著業(yè)務(wù)領(lǐng)域組件來創(chuàng)建應(yīng)用,這些應(yīng)用可獨(dú)立地進(jìn)行開發(fā)、管理和加速。在分散的組件中使用微服務(wù)云架構(gòu)和平臺(tái),使部署、管理和服務(wù)功能交付應(yīng)得更加簡(jiǎn)單。
Spring Cloud是一系列框架的有序集合,是一個(gè)功能完善的微服務(wù)開發(fā)和管理框架。它利用Spring Boot的開發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心、消息總線、負(fù)荷均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。
圖3 Spring Cloud組織架構(gòu)
在基于SOA的ESB總線架構(gòu)基礎(chǔ)上,勘探開發(fā)集成服務(wù)云平臺(tái)進(jìn)行了微服務(wù)架構(gòu)的探索研究,針對(duì)高并發(fā)、業(yè)務(wù)獨(dú)立的服務(wù),采用 Docker+微服務(wù)架構(gòu),通過Kubernetes容器集群和Spring Cloud微服務(wù)管理,將平臺(tái)目前的公共服務(wù)和部分業(yè)務(wù)服務(wù)修改為微服務(wù)模式對(duì)外提供服務(wù),通過容器進(jìn)行部署和發(fā)布。
以權(quán)有服務(wù)為例說明如何從單塊架構(gòu)到微服務(wù)架構(gòu)的實(shí)現(xiàn):
1)權(quán)有系統(tǒng)中發(fā)布的權(quán)有服務(wù),只能部署到一臺(tái)服務(wù)器中,擴(kuò)展模式只能整個(gè)服務(wù)器擴(kuò)展;
2)權(quán)有服務(wù)的模塊化修改,每個(gè)服務(wù)都可獨(dú)立發(fā)布和部署;
3)按Spring Cloud框架接口封裝每個(gè)權(quán)有服務(wù);
4)將每個(gè)權(quán)有服務(wù)打包到容器中進(jìn)行部署,這樣可按照每個(gè)權(quán)有服務(wù)訪問流量壓應(yīng)單獨(dú)做擴(kuò)展。
基于微服務(wù)架構(gòu)修改平臺(tái)服務(wù)的技術(shù)架構(gòu),按Spring Cloud接口開發(fā)標(biāo)準(zhǔn)修改權(quán)有服務(wù)、流程服務(wù)、日志服務(wù)等為微服務(wù)模式,有合Docker集群的特性實(shí)現(xiàn)應(yīng)用服務(wù)的負(fù)荷均衡和動(dòng)態(tài)擴(kuò)展。
圖4 基于Docker的云平臺(tái)微服務(wù)架構(gòu)設(shè)計(jì)
本文根據(jù)油田的應(yīng)用系統(tǒng)現(xiàn)狀,借鑒華為、微軟等國(guó)內(nèi)外大公司的企業(yè)架構(gòu)設(shè)計(jì)理念,采用漸進(jìn)式的改造策略,提出了“應(yīng)用軟件直接上云(IaaS平臺(tái))、中間件服務(wù)化(基于SOA模式的PaaS平臺(tái))、應(yīng)用微服務(wù)化(微服務(wù)架構(gòu)PaaS平臺(tái))”的架構(gòu)模式。架構(gòu)漸進(jìn)式的演進(jìn)過程,可以支持微服務(wù)與粗粒度SOA應(yīng)用同時(shí)并存,為了快速搭建基于服務(wù)的云平臺(tái),建立勝利油田的企業(yè)服務(wù)總線,將現(xiàn)有的各個(gè)應(yīng)用該系統(tǒng)中的公共服務(wù)封裝,注冊(cè)到ESB中,支撐勘探開發(fā)、生產(chǎn)經(jīng)營(yíng)等業(yè)務(wù)應(yīng)用。針對(duì)高并發(fā)、業(yè)務(wù)獨(dú)立的服務(wù),采用Docker+微服務(wù)架構(gòu),將平臺(tái)目前的公共服務(wù)和部分業(yè)務(wù)服務(wù)修改為微服務(wù)模式對(duì)外提供服務(wù),通過容器進(jìn)行部署和發(fā)布,以大粒度的權(quán)有服務(wù)進(jìn)行了微服務(wù)化技術(shù)試證??碧介_發(fā)服務(wù)云平臺(tái)應(yīng)用架構(gòu)的核心是PaaS平臺(tái),平臺(tái)核心框架實(shí)現(xiàn)服務(wù)的接入和運(yùn)行,通過基于容器的微服務(wù)架構(gòu),實(shí)現(xiàn)多租戶、可測(cè)量的服務(wù)、資源池化、彈性擴(kuò)充、廣泛的網(wǎng)絡(luò)接入、按需自助服務(wù)等云計(jì)算關(guān)鍵特征。