王 喬
(中國(guó)鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所, 北京 100081)
我國(guó)鐵路信息化起步較早,現(xiàn)有應(yīng)用軟件種類多樣,有Client/Server結(jié)構(gòu)的,也有Browser/Server結(jié)構(gòu)的,這些應(yīng)用依賴于不同的操作系統(tǒng)和不同的開(kāi)發(fā)平臺(tái),開(kāi)發(fā)工具和開(kāi)發(fā)環(huán)境多種多樣,由于這些歷史因素的原因,造成鐵路應(yīng)用各個(gè)系統(tǒng)之間存在系統(tǒng)交互難度大、無(wú)法支撐業(yè)務(wù)部門業(yè)務(wù)融合、資源無(wú)法得到重復(fù)利用、項(xiàng)目建設(shè)周期長(zhǎng)、成本高、同類型同功能的產(chǎn)品反復(fù)購(gòu)買和重復(fù)學(xué)習(xí)、增加運(yùn)維成本等問(wèn)題[1]。
隨著互聯(lián)網(wǎng)行業(yè)迅猛發(fā)展和大型業(yè)務(wù)的不斷擴(kuò)張,單體應(yīng)用架構(gòu)逐漸無(wú)法滿足互聯(lián)網(wǎng)時(shí)代的快速變化,高昂的維護(hù)成本、較長(zhǎng)的交付周期、較差的可擴(kuò)展性等問(wèn)題直接制約了企業(yè)信息化的發(fā)展。Cloud Foundry是一個(gè)開(kāi)源平臺(tái)即服務(wù)(PaaS)云平臺(tái)[2-4],不限定供應(yīng)商,不會(huì)把用戶禁錮在專用軟件或云基礎(chǔ)架構(gòu)內(nèi)。本文擬從統(tǒng)一規(guī)劃、統(tǒng)一標(biāo)準(zhǔn)、統(tǒng)一平臺(tái)設(shè)計(jì)理念出發(fā),基于Cloud Foundry開(kāi)發(fā)的云環(huán)境和統(tǒng)一開(kāi)發(fā)框架[5-9],建立統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái),快速響應(yīng)企業(yè)信息化建設(shè)過(guò)程中的發(fā)展和維護(hù)需求。
蒙西華中鐵路(簡(jiǎn)稱:蒙華鐵路)由浩勒?qǐng)?bào)吉站作為開(kāi)端,中途經(jīng)過(guò)7個(gè)省,跨越內(nèi)蒙古、陜北地區(qū)、晉中地區(qū)、黃河中下游地區(qū)、湘、贛等地,止于江西吉安,全線正線長(zhǎng)1 814 km。 蒙華鐵路作為鐵路投融資改革的示范項(xiàng)目,面對(duì)新機(jī)遇、新挑戰(zhàn)和新要求, 必須要立足高標(biāo)準(zhǔn)、高起點(diǎn)和高質(zhì)量進(jìn)行信息化集中統(tǒng)一建設(shè)?!敖y(tǒng)一規(guī)劃、統(tǒng)一標(biāo)準(zhǔn)、統(tǒng)一平臺(tái)” 是信息化的一個(gè)長(zhǎng)期建設(shè)思路,因此開(kāi)發(fā)平臺(tái)在設(shè)計(jì)過(guò)程中遵循規(guī)范要求,工作成果符合標(biāo)準(zhǔn)要求,利用先進(jìn)、成熟、穩(wěn)定的技術(shù)手段,滿足蒙華鐵路所需系統(tǒng)的開(kāi)發(fā)需求,同時(shí)還要保障開(kāi)發(fā)平臺(tái)的先進(jìn)性適應(yīng)未來(lái)一段時(shí)間的發(fā)展變化,并具備不斷演進(jìn)的基礎(chǔ)條件。在設(shè)計(jì)、實(shí)現(xiàn)時(shí)需要考慮業(yè)務(wù)系統(tǒng)需求的差異性,底層組件必須具有一定的靈活性。
Cloud Foundry是VMware推出的開(kāi)源PaaS云平臺(tái),支持多種開(kāi)發(fā)框架、編程語(yǔ)言、運(yùn)行環(huán)境及應(yīng)用服務(wù),開(kāi)發(fā)人員可以在短時(shí)間內(nèi)快速部署應(yīng)用和擴(kuò)展,無(wú)需擔(dān)心任何基礎(chǔ)架構(gòu)問(wèn)題,Cloud Foundry由多個(gè)相對(duì)獨(dú)立的組件通過(guò)消息機(jī)制組成分布式系統(tǒng),使平臺(tái)可以在各層級(jí)都可水平擴(kuò)展,既能運(yùn)行在大型數(shù)據(jù)中心也可以在桌面電腦上運(yùn)行[7]。
開(kāi)發(fā)框架:Cloud Foundry支持Java?代碼、Spring、Ruby、Node.js和自定義框架[8]。
應(yīng)用服務(wù):Cloud Foundry提供了對(duì)MySQL、PostgreSQL、Redis和自定義服務(wù)的支持[8]。
統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái),跨域了業(yè)務(wù)系統(tǒng)開(kāi)發(fā)平臺(tái)的定位局限性,以先進(jìn)的設(shè)計(jì)開(kāi)發(fā)理念立足于業(yè)務(wù)系
統(tǒng)開(kāi)發(fā)、運(yùn)行、運(yùn)維等各階段全方位的 PaaS。 統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)是技術(shù)平臺(tái)的的核心組成部份,與客戶服務(wù)平臺(tái)、數(shù)據(jù)服務(wù)平臺(tái)、集成服務(wù)平臺(tái)等技術(shù)平臺(tái)緊密結(jié)合,平臺(tái)從功能上劃分為基礎(chǔ)設(shè)施、公共套件、集成開(kāi)發(fā)、系統(tǒng)治理、集成包管理、數(shù)據(jù)管理等6大模塊, 上層戰(zhàn)略管理、決策支持、設(shè)備管理、經(jīng)營(yíng)開(kāi)發(fā)等業(yè)務(wù)系統(tǒng)對(duì)技術(shù)平臺(tái)功能實(shí)現(xiàn)透明化運(yùn)轉(zhuǎn),平臺(tái)總體架構(gòu),如圖1所示。
圖1 統(tǒng)一應(yīng)用平臺(tái)總體架構(gòu)圖
統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)為業(yè)務(wù)系統(tǒng)研發(fā)和實(shí)施人員提供了包括業(yè)務(wù)系統(tǒng)設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、發(fā)布、運(yùn)行的完整工作環(huán)境,還將具有PaaS、數(shù)據(jù)即服務(wù)(DaaS)的特性,即在云資源管理平臺(tái)基礎(chǔ)上,通過(guò)平臺(tái)治理工具完成應(yīng)用系統(tǒng)的部署、升級(jí)、配置等運(yùn)維工作,為應(yīng)用系統(tǒng)提供統(tǒng)一的中間件管理,構(gòu)建基于云環(huán)境的統(tǒng)一應(yīng)用開(kāi)發(fā)和運(yùn)維平臺(tái)。
(1)基于統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)可以統(tǒng)一蒙華鐵路信息化技術(shù)路線,確保技術(shù)架構(gòu)一致性;
(2)減少系統(tǒng)開(kāi)發(fā)難度,提升開(kāi)發(fā)效率,快速響應(yīng)業(yè)務(wù)需求,有效地控制信息系統(tǒng)建設(shè)質(zhì)量;
(3)為項(xiàng)目總體管控提供支撐;
(4)為應(yīng)用軟件提供交互渠道,加速多業(yè)務(wù)集成、融合。
平臺(tái)功能架構(gòu),如圖2所示。
3.2.1 系統(tǒng)治理工具
系統(tǒng)治理工具是基于開(kāi)發(fā)平臺(tái)的應(yīng)用系統(tǒng)配置、管理、發(fā)布、采集、監(jiān)聽(tīng)、控制的集中式工具,提供查看管理服務(wù)器、中間件、應(yīng)用、配置、存儲(chǔ)日志、性能,以及預(yù)警功能,通過(guò)分析工具定位故障產(chǎn)生原因,提供故障解決知識(shí)庫(kù),可依據(jù)知識(shí)庫(kù)中故障處理策略和配置規(guī)則,選擇自動(dòng)或者手動(dòng)的方式,快速及時(shí)恢復(fù)故障點(diǎn)。
圖2 統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)功能架構(gòu)
3.2.2 集成開(kāi)發(fā)平臺(tái)
集成開(kāi)發(fā)平臺(tái)以Cloud Foundry為基礎(chǔ), 為統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)提供多種主流的應(yīng)用系統(tǒng)集成開(kāi)發(fā)工具,使開(kāi)發(fā)人員可以自主選擇軟件的布局設(shè)計(jì),為開(kāi)發(fā)人員提供代碼輔助、導(dǎo)航與管理,為管理人員提供自定義的工程管理方式等,同時(shí)可以提供支撐業(yè)務(wù)系統(tǒng)測(cè)試、運(yùn)行、調(diào)試的平臺(tái)容器。平臺(tái)為業(yè)務(wù)系統(tǒng)開(kāi)發(fā)人員提供了高效、便攜、可靠的技術(shù)保障,提高了業(yè)務(wù)系統(tǒng)功能開(kāi)發(fā)的效率和質(zhì)量。
3.2.3 平臺(tái)基礎(chǔ)設(shè)施
平臺(tái)基礎(chǔ)設(shè)施是平臺(tái)中最底層的部分,其中,包含核心框架和平臺(tái)微內(nèi)核,實(shí)現(xiàn)事件監(jiān)聽(tīng)、界面交互、數(shù)據(jù)管理、請(qǐng)求處理、異常處理等功能。
3.2.4 平臺(tái)公共套件
平臺(tái)公共套件是為統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)提供各類業(yè)務(wù)系統(tǒng)松耦合的公共服務(wù),如:任務(wù)調(diào)度、即需報(bào)表、數(shù)據(jù)緩存、消息通信、BPM和統(tǒng)一權(quán)限等。公共服務(wù)是由平臺(tái)實(shí)現(xiàn)的各種高級(jí)功能和服務(wù),基于這些功能和服務(wù)可以快速開(kāi)發(fā)業(yè)務(wù)系統(tǒng),比傳統(tǒng)的代碼開(kāi)發(fā)效率高且質(zhì)量高,可以保障業(yè)務(wù)系統(tǒng)的穩(wěn)定和高效[10]。
3.2.5 集成包
集成包可以看作一種接口封裝組件,集成包為統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)提供了一體化平臺(tái)服務(wù)的集成與系統(tǒng)軟件的集成。開(kāi)發(fā)人員在業(yè)務(wù)系統(tǒng)開(kāi)發(fā)的過(guò)程中按照集成包運(yùn)用規(guī)則編寫(xiě)配置文件,即可實(shí)現(xiàn)集成包組件的自啟動(dòng),與相關(guān)信息系統(tǒng)自動(dòng)集成。
3.2.6 數(shù)據(jù)服務(wù)
數(shù)據(jù)服務(wù)是由平臺(tái)提供的業(yè)務(wù)應(yīng)用數(shù)據(jù)源、中間數(shù)據(jù)、應(yīng)用數(shù)據(jù)接入的服務(wù),可通過(guò)傳遞有用的信息幫助用戶進(jìn)行優(yōu)化決策及精準(zhǔn)營(yíng)銷等。
平臺(tái)在邏輯上采用分層架構(gòu)設(shè)計(jì)實(shí)現(xiàn),包括展現(xiàn)層、服務(wù)交互層、業(yè)務(wù)邏輯層、持久層[11]。用戶與應(yīng)用系統(tǒng)交互過(guò)程中,各層之間相互協(xié)作,依次進(jìn)行數(shù)據(jù)展現(xiàn)與輸入、數(shù)據(jù)傳輸與接入、服務(wù)請(qǐng)求派發(fā)、業(yè)務(wù)邏輯執(zhí)行和數(shù)據(jù)持久化操作等多個(gè)階段[12],分層結(jié)構(gòu),如圖3所示。
圖3 統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)分層架構(gòu)
利用復(fù)用和封裝的原則,業(yè)務(wù)邏輯層為統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)提供了通用組件與服務(wù),代碼實(shí)現(xiàn)了集中通用和優(yōu)化。在應(yīng)用開(kāi)發(fā)過(guò)程中,為實(shí)現(xiàn)某些通用業(yè)務(wù)可直接調(diào)用業(yè)務(wù)邏輯層的相應(yīng)組件與服務(wù),有效減少重復(fù)代碼,提升代碼性能。
在應(yīng)用交互過(guò)程中,數(shù)據(jù)基于不同的傳輸載體和特有的傳輸格式,以不同的展現(xiàn)形態(tài),在各層中移動(dòng),實(shí)現(xiàn)應(yīng)用系統(tǒng)響應(yīng)與業(yè)務(wù)處理,滿足開(kāi)發(fā)人員與用戶需求。
統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)后臺(tái)管理使用“主-從”式架構(gòu)設(shè)計(jì),通過(guò)命令轉(zhuǎn)發(fā)、解析和執(zhí)行的信息處理方式,中心控制節(jié)點(diǎn)控制全部Cloud Foundry客戶終端,實(shí)現(xiàn)Cloud Foundry后臺(tái)的統(tǒng)一管理。同時(shí),基于Cloud Foundry的統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái),使用jquery portls技術(shù),實(shí)現(xiàn)輕量級(jí)靈活的門戶架構(gòu)和統(tǒng)一的平臺(tái)層權(quán)限管理控制,采用運(yùn)維管理統(tǒng)一入口,實(shí)現(xiàn)運(yùn)維模塊單點(diǎn)登錄,具有視圖自定義功能。
統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)后臺(tái)運(yùn)行機(jī)制依賴Cloud Foundry 云平臺(tái)架構(gòu)。Cloud Foundry 是一個(gè)復(fù)雜的分布式系統(tǒng),由數(shù)10個(gè)組件組成。Cloud Foundry中的Droplet把應(yīng)用軟件源代碼和Cloud Foundry相應(yīng)的運(yùn)行環(huán)境與所需的管理腳本全部壓縮到tar包里。Cloud Controller模塊會(huì)發(fā)送start/stop等基本的apps管理請(qǐng)求給數(shù)據(jù)包絡(luò)分析(DEA),dea.rb接收這些請(qǐng)求后,從NFS里面找到合適的Droplet。DEA解壓tar包,根據(jù)start請(qǐng)求腳本運(yùn)行應(yīng)用軟件,其運(yùn)行機(jī)制,如圖4所示。這種完善的運(yùn)行機(jī)制與后臺(tái)管理體系為加速企業(yè)信息化建設(shè)提供了有力條件。
Cloud Foundry在鐵路信息化領(lǐng)域應(yīng)用較少,本文提出的基于 Cloud Foundry的統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)建設(shè)方案是一次新架構(gòu)的嘗試。統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)可以快速響應(yīng)用戶需求,支持水平擴(kuò)展、快速交付、快速部署,提高開(kāi)發(fā)效率、降低運(yùn)維成本和業(yè)務(wù)應(yīng)用建設(shè)融合成本,減少開(kāi)發(fā)人員不必要的重復(fù)勞動(dòng)。今后將針對(duì)平臺(tái)的可定制化運(yùn)行環(huán)境做進(jìn)一步研究。
圖4 基于Cloud Foundry架構(gòu)的統(tǒng)一應(yīng)用開(kāi)發(fā)平臺(tái)運(yùn)行機(jī)制