陳志達(dá)
(中國(guó)航空油料有限責(zé)任公司 北京市 100000)
目前,企業(yè)級(jí)微服務(wù)場(chǎng)景的容器云平臺(tái)已經(jīng)成為高可用性、高性能、高安全性及易擴(kuò)展性云平臺(tái)服務(wù)的發(fā)展新趨勢(shì),尤其是在已部署大數(shù)據(jù)中心的基礎(chǔ)上,隨著IaaS(Infrastructure-as-a-Service)基礎(chǔ)架構(gòu)層的不斷發(fā)展,基于Docker 容器技術(shù)的微服務(wù)架構(gòu)技術(shù),能極大程度地消除開(kāi)發(fā)環(huán)境與運(yùn)維環(huán)境的差異,便于進(jìn)行版本管理和持續(xù)交付,與航油客戶管理系統(tǒng)的大數(shù)據(jù)量、高頻用戶的應(yīng)用場(chǎng)景尤為契合,但單純的Docker 容器技術(shù),無(wú)法應(yīng)對(duì)航油客戶管理系統(tǒng)高穩(wěn)定性和高安全性的要求特點(diǎn),因此,在PaaS 平臺(tái)下,采用Kubernetes(K8S)對(duì)云資源環(huán)境進(jìn)行管理。
Kubernetes 是Google 開(kāi)源的一個(gè)容器編排引擎,它支持自動(dòng)化部署、大規(guī)??缮炜s、應(yīng)用容器化管理。在生產(chǎn)環(huán)境中部署一個(gè)應(yīng)用程序時(shí),通常要部署該應(yīng)用的多個(gè)實(shí)例以便對(duì)應(yīng)用請(qǐng)求進(jìn)行負(fù)載均衡。航油管理系統(tǒng)針對(duì)數(shù)據(jù)互聯(lián)、內(nèi)外部集成的痛點(diǎn),能夠?qū)崿F(xiàn)與航油SAP 系統(tǒng)、客戶、銀行等多個(gè)內(nèi)外部系統(tǒng)的集成。
航油客戶管理系統(tǒng)的容器服務(wù)中依舊是Web 服務(wù)為主,使用自動(dòng)部署平臺(tái)使用構(gòu)建機(jī)器構(gòu)建并遠(yuǎn)程部署至目標(biāo)機(jī)器。當(dāng)將容器固化成鏡像后,則可視為應(yīng)用集裝箱,將應(yīng)用運(yùn)行所需的程序、依賴和運(yùn)行環(huán)境進(jìn)行打包處理。特別是Docker 鏡像的設(shè)計(jì),能夠解決容器從構(gòu)建、交付到運(yùn)行,提供了完整的生態(tài)鏈支持[1]。
航油客戶管理系統(tǒng)的容器服務(wù)采用微服務(wù)架構(gòu)管理,包含前后端分離、權(quán)限統(tǒng)一認(rèn)證、應(yīng)用系統(tǒng)的管理和治理、開(kāi)發(fā)與運(yùn)維一體化、DEVOPS 等重點(diǎn)模塊。
2.1.1 前后端分離
前臺(tái)和后臺(tái)分離為獨(dú)立的組件,微服務(wù)模塊間通過(guò)RestAPI 交互,前后端也通過(guò)RestAPI 接口服務(wù)進(jìn)行交互。
2.1.2 權(quán)限統(tǒng)一認(rèn)證
權(quán)限系統(tǒng)微服務(wù)化,建立獨(dú)立的微服務(wù)權(quán)限認(rèn)證中心,通過(guò)權(quán)限系統(tǒng)微服務(wù)來(lái)控制其他微服務(wù)的權(quán)限,保證整體系統(tǒng)構(gòu)架的權(quán)限一致性。
2.1.3 應(yīng)用系統(tǒng)的管理和治理
建立完整的應(yīng)用管理治理框架以達(dá)到優(yōu)化服務(wù)架構(gòu)、快速故障界定、微服務(wù)管控等目的。
2.1.4 開(kāi)發(fā)與運(yùn)維一體化
運(yùn)用微服務(wù)架構(gòu),不再只是運(yùn)行一個(gè)服務(wù),而是數(shù)十個(gè),甚至數(shù)百個(gè)服務(wù)。在CCF 云服務(wù)架構(gòu)中,利用DevOps 工具(Jenkins,Maven,Git/SVN 等)消除差錯(cuò)率較高的人工任務(wù),為設(shè)計(jì)、構(gòu)建和部署服務(wù)提供了標(biāo)準(zhǔn)框架,從而節(jié)省了時(shí)間和精力。
在基于云容器的航油客戶管理系統(tǒng)中采用Docker 容器技術(shù)的云平臺(tái)架構(gòu),將Kubernetes 視為容器編排工具,能夠解決應(yīng)用運(yùn)行環(huán)境整體打包的問(wèn)題,確定了分層鏡像格式,云服務(wù)架構(gòu)分為IaaS、PaaS、SaaS 三層[2]。
在基于云容器的航油客戶管理系統(tǒng)中,利用Kubernetes 創(chuàng)建多個(gè)容器,每個(gè)容器里面運(yùn)行一個(gè)應(yīng)用實(shí)例,然后通過(guò)內(nèi)置的負(fù)載均衡策略,實(shí)現(xiàn)對(duì)這一組應(yīng)用實(shí)例的管理、發(fā)現(xiàn)、訪問(wèn),而不用運(yùn)維人員去進(jìn)行復(fù)雜的手工配置和處理。
在航油客戶管理系統(tǒng)中將使用容器技術(shù)對(duì)各服務(wù)節(jié)點(diǎn)進(jìn)行管理。Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的Linux 或Windows 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口[3]。
在航油客戶管理系統(tǒng)中涉及與客戶系統(tǒng)對(duì)、與招標(biāo)人指定的五家金融系統(tǒng)、與航油集團(tuán)SAP ERP 系統(tǒng)、與金稅系統(tǒng)、與智慧加油系統(tǒng)、氣象數(shù)據(jù)系統(tǒng)等相關(guān)系統(tǒng)進(jìn)行系統(tǒng)集成,此次數(shù)據(jù)集成具有集成系統(tǒng)多,數(shù)據(jù)范圍廣泛,集成技術(shù)復(fù)雜等特點(diǎn),為確保系統(tǒng)集成的順利進(jìn)行,保障系統(tǒng)建設(shè),以多種主流數(shù)據(jù)集成技術(shù)為基礎(chǔ),建立獨(dú)立的數(shù)據(jù)交換平臺(tái),滿足現(xiàn)有業(yè)務(wù)系統(tǒng)數(shù)據(jù)接入需要,兼顧未來(lái)數(shù)據(jù)接口擴(kuò)展的策略。
基于以上結(jié)構(gòu)設(shè)計(jì),在航油客戶管理系統(tǒng)按照統(tǒng)一業(yè)務(wù)模型的思想把各系統(tǒng)數(shù)據(jù)集成起來(lái)。根據(jù)系統(tǒng)集成的需要,將采用提供相關(guān)接口的方式進(jìn)行實(shí)現(xiàn)。
3.1.1 遠(yuǎn)程數(shù)據(jù)庫(kù)調(diào)用
采用遠(yuǎn)程數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),在對(duì)方數(shù)據(jù)庫(kù)提供訪問(wèn)權(quán)限的前提下,以應(yīng)用數(shù)據(jù)交換功能為基礎(chǔ),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中信息的直接讀取和存儲(chǔ),已到達(dá)數(shù)據(jù)交換的目的。這種方式目前在企業(yè)內(nèi)部系統(tǒng)間的交換較為通用,但受到安全性等影響,在外部系統(tǒng)數(shù)據(jù)交換方面很少使用[4]。
3.1.2 Webservice 方式
建立基于Web Services 協(xié)議等交換方式的與協(xié)作單位(承運(yùn)商、供應(yīng)商、商業(yè)公司等)的信息交換標(biāo)準(zhǔn),使信息資源規(guī)劃問(wèn)題集中在數(shù)據(jù)交換的標(biāo)準(zhǔn)化、規(guī)范化的協(xié)調(diào)和設(shè)計(jì)上;WebServices 是由航油公司發(fā)布的完成其特定商務(wù)需求的在線應(yīng)用服務(wù),其他公司或應(yīng)用軟件訪問(wèn)并使用這項(xiàng)在線服務(wù)。
3.1.3 基于TCP/IP 的文件交換
主要采用FTP、EMAIL 等文件傳輸方式,利用客戶機(jī)可以給服務(wù)器發(fā)出命令來(lái)下載文件,上載文件,實(shí)現(xiàn)對(duì)數(shù)據(jù)的發(fā)送和接收,這種方式是以往系統(tǒng)間數(shù)據(jù)交換通行的一種方式。
3.1.4 PI 平臺(tái)或其它技術(shù)
通過(guò)使用第三方提供的相關(guān)交換平臺(tái)或技術(shù),來(lái)達(dá)到對(duì)外部系統(tǒng)的數(shù)據(jù)交換服務(wù),本交換平臺(tái)將根據(jù)不同技術(shù)的要求,快速靈活的進(jìn)行擴(kuò)充,達(dá)到對(duì)現(xiàn)有系統(tǒng)和未來(lái)外部系統(tǒng)的數(shù)據(jù)交換擴(kuò)展。如:ERP 的PI 平臺(tái)等。
通過(guò)搭建的綜合上述幾種接口方式和各項(xiàng)技術(shù)的數(shù)據(jù)交換平臺(tái)來(lái)集成各系統(tǒng)數(shù)據(jù)。數(shù)據(jù)交換平臺(tái)主要包括數(shù)據(jù)抽取、數(shù)據(jù)數(shù)據(jù)處理及加載處理、策略管理和系統(tǒng)管理等模塊。
數(shù)據(jù)抽取模型主要包括實(shí)時(shí)數(shù)據(jù)交換、周期數(shù)據(jù)交換、數(shù)據(jù)復(fù)制、非結(jié)構(gòu)數(shù)據(jù)交換等等,對(duì)應(yīng)的技術(shù)包括數(shù)據(jù)復(fù)制、ETL、數(shù)據(jù)交換及應(yīng)用服務(wù)。
在航油客戶管理系統(tǒng)的數(shù)據(jù)應(yīng)用部分,采用能對(duì)海量數(shù)據(jù)進(jìn)行分布式處理的大數(shù)據(jù)架構(gòu),將加油數(shù)據(jù)、客服數(shù)據(jù)、商務(wù)結(jié)算數(shù)據(jù)等業(yè)務(wù)數(shù)據(jù)進(jìn)行應(yīng)用,基于真實(shí)業(yè)務(wù)數(shù)據(jù)進(jìn)行日常業(yè)務(wù)統(tǒng)計(jì)分析。包括數(shù)據(jù)標(biāo)簽化管理、管理駕駛艙、加油員數(shù)據(jù)分析、銷售數(shù)據(jù)分析、結(jié)算數(shù)據(jù)分析、預(yù)測(cè)分析等數(shù)據(jù)應(yīng)用功能,同時(shí)為今后擴(kuò)展更多的大數(shù)據(jù)應(yīng)用,整體架構(gòu)主要由包括數(shù)據(jù)集成、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)計(jì)算、數(shù)據(jù)應(yīng)用和平臺(tái)管理五部分。
航油客戶管理系統(tǒng)的大數(shù)據(jù)技術(shù)架構(gòu)以Hadoop 技術(shù)生態(tài)圈為基礎(chǔ),根據(jù)數(shù)據(jù)采集、數(shù)據(jù)整合、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)消費(fèi)和數(shù)據(jù)管理的要求,選擇主流、穩(wěn)定的功能組件進(jìn)行整合,實(shí)現(xiàn)大數(shù)據(jù)的整體架構(gòu)。具體包括數(shù)據(jù)集成框架、數(shù)據(jù)存儲(chǔ)框架、數(shù)據(jù)計(jì)算框架、數(shù)據(jù)應(yīng)用框架、平臺(tái)管理組成[5]。
4.1.1 數(shù)據(jù)集成框架
是大數(shù)據(jù)架構(gòu)的底層功能,實(shí)現(xiàn)從數(shù)據(jù)接入到數(shù)據(jù)消費(fèi)整個(gè)環(huán)節(jié)的數(shù)據(jù)存儲(chǔ)功能,為滿足數(shù)據(jù)整個(gè)處理流程和數(shù)據(jù)應(yīng)用性能需求,結(jié)合數(shù)據(jù)存儲(chǔ)的分層設(shè)計(jì),數(shù)據(jù)存儲(chǔ)框架分為數(shù)據(jù)湖組件、數(shù)據(jù)倉(cāng)庫(kù)組件和數(shù)據(jù)集市組件。是大數(shù)據(jù)框架用于整合各種數(shù)據(jù)源的技術(shù)解決方案,根據(jù)數(shù)據(jù)源的存儲(chǔ)格式、產(chǎn)生方式、生成時(shí)效、消費(fèi)方式等不同,通過(guò)數(shù)據(jù)采集組件、消息組件、日志采集組件和流式數(shù)據(jù)組件一滿足各種場(chǎng)景的需求。
4.1.2 數(shù)據(jù)存儲(chǔ)框架
數(shù)據(jù)計(jì)算框架是實(shí)現(xiàn)數(shù)據(jù)應(yīng)用的解決方案,根據(jù)數(shù)據(jù)處理的環(huán)節(jié)、數(shù)據(jù)存量的級(jí)別、數(shù)據(jù)增量的級(jí)別、數(shù)據(jù)型態(tài)格式、數(shù)據(jù)應(yīng)用場(chǎng)景和深度等因素,將數(shù)據(jù)計(jì)算框架分為批量數(shù)據(jù)處理、流式數(shù)據(jù)處理、應(yīng)用編程模型和數(shù)據(jù)分析模型。
4.1.3 數(shù)據(jù)應(yīng)用框架
數(shù)據(jù)應(yīng)用框架是為數(shù)據(jù)應(yīng)用的終端用戶提供功能服務(wù),實(shí)現(xiàn)數(shù)據(jù)的展示、分析,同時(shí)架構(gòu)提供JDBC 接口,支持第三方的BI 開(kāi)發(fā)工具實(shí)現(xiàn)數(shù)據(jù)的應(yīng)用開(kāi)發(fā),如FineBI,tableau,宇動(dòng)源BI 報(bào)表和自由頁(yè)面。
數(shù)據(jù)采集組件主要實(shí)現(xiàn)局域網(wǎng)內(nèi)的企業(yè)結(jié)構(gòu)化數(shù)據(jù)或多數(shù)據(jù)源的數(shù)據(jù)同步。技術(shù)實(shí)現(xiàn)采用開(kāi)源工具kettle,是一款開(kāi)源的ETL,完成數(shù)據(jù)的處理,轉(zhuǎn)換,遷移。Kettle 中有兩種腳本文件,transformation 和job,transformation 完成針對(duì)數(shù)據(jù)的基礎(chǔ)轉(zhuǎn)換,job則完成整個(gè)工作流的控制。Kettle 包括4 個(gè)產(chǎn)品:Spoon、Pan、CHEF、Kitchen。
(1)Spoon:通過(guò)圖形界面來(lái)設(shè)計(jì)ETL 轉(zhuǎn)換過(guò)程。
(2)Pan:批量運(yùn)行由Spoon 設(shè)計(jì)的ETL 轉(zhuǎn)換,它是一個(gè)后臺(tái)執(zhí)行的程序,沒(méi)有圖形界面。
(3)Chef:任務(wù)通過(guò)允許每個(gè)轉(zhuǎn)換,任務(wù),腳本等等,更有利于自動(dòng)化更新數(shù)據(jù)倉(cāng)庫(kù)的復(fù)雜工作。任務(wù)通過(guò)允許每個(gè)轉(zhuǎn)換,任務(wù),腳本等等。任務(wù)將會(huì)被檢查,看看是否正確地運(yùn)行了。
(4)Kitchen:批量使用由Spoon 設(shè)計(jì)的任務(wù),它是一個(gè)后臺(tái)運(yùn)行的程序。
航油客戶管理系統(tǒng)容器云平臺(tái)依靠容器技術(shù)和集群調(diào)度編排管理技術(shù),滿足企業(yè)級(jí)容器云服務(wù)的需求。根據(jù)調(diào)研形成上面的部署拓?fù)浞桨福渴鸱桨阜謨纱髤^(qū),分別生產(chǎn)區(qū)和DMZ 大區(qū)。生產(chǎn)區(qū)負(fù)責(zé)整個(gè)云平臺(tái)的管理應(yīng)用運(yùn)行部署和測(cè)試等功能。DMZ 區(qū)負(fù)責(zé)應(yīng)用接口的互相轉(zhuǎn)發(fā)等功能[6]。
內(nèi)部云平臺(tái)通過(guò)DNS 域名訪問(wèn)到業(yè)務(wù)系統(tǒng)內(nèi),不同域名分別不同業(yè)務(wù)。云平臺(tái)管控核心分為配置中心和管控中心組件。配置中心是一個(gè)開(kāi)源的高可用的分布式鍵值數(shù)據(jù)庫(kù),通過(guò)鍵值對(duì)數(shù)據(jù)存儲(chǔ)系統(tǒng),提供共享配置、服務(wù)的注冊(cè)和發(fā)現(xiàn)等功能。這里存儲(chǔ)云平臺(tái)服務(wù)器IP 屬性和相關(guān)數(shù)據(jù),如果出現(xiàn)問(wèn)題容易造成整個(gè)云平臺(tái)癱瘓說(shuō)以,在部署用集群方式設(shè)計(jì),這樣保證云平臺(tái)安全穩(wěn)定運(yùn)行。
管控中心組件是集群的網(wǎng)關(guān)和中樞樞紐,也稱為指揮官主要作用是跟蹤其他服務(wù)器的健康狀態(tài)、以最優(yōu)方式調(diào)度負(fù)載,以及編排其他組件之間的通信。
本文以航油客戶管理系統(tǒng)為例,對(duì)基于Kubernetes 和Docker技術(shù)的容器云平臺(tái)的架構(gòu)設(shè)計(jì)進(jìn)行介紹和分析,在提出云容器的管理設(shè)計(jì)策略,通過(guò)鏡像Docker 容器云的應(yīng)用和Kubernetes 開(kāi)發(fā)工具的架構(gòu)設(shè)計(jì),為企業(yè)級(jí)微服務(wù)場(chǎng)景容器云平臺(tái)開(kāi)發(fā)應(yīng)用提供參考借鑒。