中國石油西南油氣田西南油氣田通信與信息技術(shù)中心 四川 成都 610051
SOA基礎(chǔ)工作管理平臺是以SOA技術(shù)架構(gòu)為核心,通過數(shù)據(jù)服務(wù)總線 (DSB)整合集成所有數(shù)據(jù)源,形成覆蓋油氣田生產(chǎn)、經(jīng)營、科研、辦公所有領(lǐng)域的數(shù)據(jù)全集;再通過企業(yè)服務(wù)總線 (ESB),開發(fā)和集成不同的業(yè)務(wù)應(yīng)用,從而滿足各類業(yè)務(wù)應(yīng)用??碧介_發(fā)夢想云是中石油上游板塊構(gòu)建的信息化建設(shè)藍(lán)圖,旨在實(shí)現(xiàn)上游全業(yè)務(wù)鏈資源共享、數(shù)據(jù)互聯(lián)、技術(shù)互通、業(yè)務(wù)協(xié)同與智能化發(fā)展,構(gòu)建共建、共享、共贏的信息化新生態(tài)。西南油氣田目前已開展基于夢想云的區(qū)域數(shù)據(jù)湖建設(shè),SOA和夢想云的融合勢在必行[1]。
SOA即面向服務(wù)的架構(gòu)(Service Oriented Architecture),它是一個組件模型,它將應(yīng)用程序的不同功能單元(即服務(wù))進(jìn)行拆分,并通過服務(wù)之間定義的接口和契約聯(lián)系起來。SOA是一種粗粒度、松耦合服務(wù)架構(gòu),服務(wù)之間通過簡單、精確定義接口進(jìn)行通訊,不涉及底層編程接口和通訊模型。SOA可以看作是B/S模型、XML(標(biāo)準(zhǔn)通用標(biāo)記語言)的子集/Web Service技術(shù)之后的自然延伸。
西南油氣田平臺建設(shè)以IBM企業(yè)信息門戶、數(shù)據(jù)服務(wù)總線、企業(yè)服務(wù)總線、消息中間件、流程管理工具5個SOA套件為核心,擴(kuò)展了統(tǒng)一權(quán)限管理和服務(wù)管控功能,建立了主元數(shù)據(jù)管理系統(tǒng),從而有力支撐了公司數(shù)字氣田建設(shè)的數(shù)據(jù)整合與應(yīng)用集成。
夢想云采用微服務(wù)架構(gòu)。微服務(wù)架構(gòu)是最佳幾年剛剛興起并逐漸成熟的一項(xiàng)在云環(huán)境中部署應(yīng)用和服務(wù)的新技術(shù)。
企業(yè)和服務(wù)提供商都在尋找更好的方法將應(yīng)用程序部署在云環(huán)境中,微服務(wù)被認(rèn)為是未來的發(fā)展方向。通過將應(yīng)用和服務(wù)分解成更小的、松散耦合的組件,使其可以更容易升級和擴(kuò)展。
不對原有SOA系統(tǒng)的進(jìn)行改造,只進(jìn)行部署升級和服務(wù)接入,以虛擬機(jī)的方式把SOA系統(tǒng)部署到云環(huán)境中,并把SOA的ESB上的服務(wù)接入夢想云API網(wǎng)管,完成用戶對接。
(1)遷移到微服務(wù)架構(gòu)。SOA應(yīng)用遷移到微服務(wù)架構(gòu)的過程。夢想云已經(jīng)定義了一整套基于Spring Cloud的微服務(wù)框架,這一步遷移的工作就是如何將微服務(wù)框架應(yīng)用到現(xiàn)有系統(tǒng)上。
(2)確定整體架構(gòu)。在開始之前,需要確定未來的應(yīng)用整體架構(gòu)。
應(yīng)用層如果是基于Java語言,并使用Spring進(jìn)行開發(fā)的,那么,使用Spring Cloud微服務(wù)框架是首選,常用的組件都已經(jīng)包含。
后端的服務(wù),盡量選用已經(jīng)在平臺發(fā)布的各種組件,或者對云平臺友好的組件。如PostgreSQL,MySQL,Redis,RabbitMQ,ZooKeeper,Kafka,ELK,Pinpoint。
如果是基于.net框架的,暫時未定。
(3)前后端分離。是基本的要求,前端僅負(fù)責(zé)展示,輸入校驗(yàn)和頁面的控制,不建議包含業(yè)務(wù)邏輯功能。后端通過Restful API暴露給前端,依據(jù)定好的開發(fā)接口規(guī)范,前端和后端的變化被隔離。
我們不對前端的框架做限定,只是假設(shè)已經(jīng)使用了比較成熟的組件/框架,有成熟的調(diào)用后端restful API的各種API。如果條件不具備,最好將前端也遷移到成熟的框架,目前而言,我們推薦Angular,Vue.js。
前后端分離之后,前端可單獨(dú)部署在API網(wǎng)關(guān)外,也可部署在API網(wǎng)關(guān)內(nèi),同時在水平伸縮上也具備了足夠的靈活性。此外,前端的訪問壓力通常都比較小,可以完全不受后端部署架構(gòu)的影響。
(4)后端組件。后端組件包括持久化,緩存,消息隊列,日志。這些組件在平臺已經(jīng)有現(xiàn)成的鏡像,可直接部署使用,具體請參考《瑞道平臺使用手冊》。
(5)業(yè)務(wù)分拆。應(yīng)用的業(yè)務(wù)分拆可遵循DDD方法論,通過領(lǐng)域建模的方式確立服務(wù)地圖,服務(wù)地圖就是最終我們需要建立的業(yè)務(wù)相關(guān)的微服務(wù)集合。
為了避免不必要的復(fù)雜度,我們推薦逐步分拆,先分拆一個微服務(wù)作為嘗試,然后再陸續(xù)分拆出其他的微服務(wù)。
(6)應(yīng)用遷移。我們假設(shè)應(yīng)用至少是分層設(shè)計,Controller,Service,DAO三層,各司其職。這時,整個應(yīng)用還是單體風(fēng)格,應(yīng)用遷移主要有五個步驟:框架準(zhǔn)備、統(tǒng)一認(rèn)證授權(quán)、對外部系統(tǒng)提供接口、微服務(wù)間交互和調(diào)用API。
SOA架構(gòu)和夢想云微服務(wù)雖然在系統(tǒng)顆粒度、集成方式等方面存在一定的差別,但是通過虛擬化和完全云化的方式,可實(shí)現(xiàn)基于SOA開發(fā)的系統(tǒng)上夢想云平臺,并且通過對云化步驟的分解以及打分,可以對不同系統(tǒng)的上云難度進(jìn)行量化評估,對西南油氣田的系統(tǒng)云化工作具有重大的指導(dǎo)意義。