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