杜磊 王競爭 穆啟鵬



摘要:該文為解決異構國產CPU環境下應用統一適配、構建、分發的難題,基于容器云平臺研究應用統一構建系統。旨在消除應用適配不同架構CPU、操作系統的復雜性,提供基于異構國產CPU的統一構建系統,實現異構國產CPU環境中應用的自動適配和分發,使得應用不再需要關注具體的物理運行環境,降低異構計算成本,提高資源利用率,提升應用自主可控適配的合理性和便捷性,覆蓋所有主流國產CPU和國產操作系統,促進國產云應用生態建設。
關鍵詞:容器;異構;國產適配;應用構建
中圖分類號:TP319 ? ? ?文獻標識碼:A
文章編號:1009-3044(2021)31-0004-03
Research on Unified Construction System for Container Applications Based on Heterogeneous Domestic CPUs
DU Lei, WANG Jing-zheng, MU Qi-peng
(CETC Cloud, Beijing 100071, China)
Abstract: In order to solve the problem of unified adaptation, construction, and distribution of applications in a heterogeneous domestic CPU environment, this paper builds a system based on the research and application of the container cloud platform. It aims to eliminate the complexity of adapting applications to different architectures of CPUs and operating systems, provide a unified construction system based on heterogeneous domestic CPUs, and realize automatic adaptation and distribution of applications in heterogeneous domestic CPU environments so that applications no longer need to pay attention to specific The physical operating environment reduces the cost of heterogeneous computing, improves resource utilization, improves the rationality and convenience of independent and controllable adaptation of applications, covers all mainstream domestic CPUs and domestic operating systems, and promotes the ecological construction of domestic cloud applications.
Key words: container; heterogeneous; domestic adaptation; application construction
1 背景
在國產CPU發展戰略和自主可控政策引導下,以申威、飛騰、龍芯、鯤鵬、海光等主流國產CPU產業快速發展,并有了巨大突破和進步,但是各家國產CPU架構和指令集的選擇仍有不同,出現多種技術路線和異構的局面。在當前國家和軍隊自主建設時期,國家和軍隊資源環境中存在異構國產CPU并存的情形。實現異構國產CPU資源整合管理和業務應用統一構建,使得用戶無需關注底層硬件并專注于業務應用的需求變得日益迫切[1]。
在基于國產CPU的虛擬化研究中,以OpenStack+KVM為代表的虛擬化技術存在明顯的性能瓶頸[2],容器作為新型虛擬化技術,因其輕便快捷優勢而成為大多數廠商國產虛擬化技術棧的選項,為用戶提供應用構建、發布和應用的平臺,然而應用廠商需要適配不同CPU架構和不同的操作系統,不同CPU架構和操作系統環境極大地增加了適配的難度,需研究一種應用統一構建系統,實現應用自動適配和分發,消除底層硬件的限制[3]。
2 系統模塊
本研究提供了一種,基于容器云平臺實現的應用統一構建系統,納管多個不同架構的CPU服務器資源,系統結構如圖1所示。
源碼構建模塊,用于在上傳至容器云平臺的應用程序文件為源代碼的情況下,獲取源代碼的來源和分支,根據源代碼的來源和分支獲取應用的源代碼;
二進制構建模塊,用于從容器云平臺中封裝的應用所需運行環境選擇應用對應的基礎容器鏡像,對應用的源代碼中需要二進制編譯的文件進行二進制編譯,得到二進制文件[4];
鏡像構建模塊,用于在需要編譯得到二進制文件的情況下,基于源代碼、基礎容器鏡像及二進制文件編寫鏡像構建配置文件,在無需編譯得到二進制文件的情況下,基于源代碼和基礎容器鏡像編寫鏡像構建配置文件,還可基于對應的基礎容器鏡像和存儲對象編寫鏡像構建配置文件,鏡像構建后,提供將應用鏡像存儲至所述容器云平臺連接的鏡像倉庫的能力;
存儲對象模塊,用于在上傳至容器云平臺的應用程序文件為安裝包的情況下,將安裝包進行導入,作為存儲對象;
應用分發模塊,用于根據應用的包含CPU架構信息的分發配置將所述鏡像倉庫中的應用鏡像在所述容器云平臺上進行分發,以利用相應架構的CPU服務器資源運行應用。
3 實現方案
本研究基于異構國產CPU硬件環境利用容器技術搭建統一構建系統,納管所有主流國產CPU服務器資源,打造統一虛擬化資源池,提供應用構建環境,實現源代碼倉庫、構建二進制文件、構建鏡像、部署應用、獲取存儲對象等過程,打通應用代碼到應用適配分發的自動化構建流程,自動構建過程依賴的組件會在統一構建系統中完成異構國產CPU的自動適配,在應用分發過程中便不涉及底層CPU硬件依賴,并且可以為用戶提供不同架構的應用適配選項,更加靈活和便捷的實現容器應用基于異構國產CPU的適配和分發。技術實現路徑如圖2所示。
3.1 異構國產CPU資源納管
針對異構國產CPU硬件環境,使用容器技術實現不同CPU架構的服務器計算資源虛擬化,搭建異構國產CPU容器云平臺,納管所有架構服務器主機資源,封裝應用所需的運行環境。統一構建系統服務由認證代理、API接口服務、集群控制器、存儲節點、集群代理服務組成,除了集群代理服務以外,其他都部署在平臺主服務鏡像中,對于異構國產CPU環境,只需要部署一種架構的主服務管理集群,其他架構作為下游集群部署集群代理服務,用戶對統一構建系統發出指令通過認證代理服務認證后下發到系統主服務,同時數據備份到存儲節點,指令傳遞給集群控制器,集群控制器把指令傳遞到下游集群的代理服務,實現管理集群和下游集群的信息交互和通信,達到異構國產CPU資源統一納管的效果。
3.2 統一構建系統搭建
借助持續集成持續部署和流水線的思想,定義任務、任務運行、流水線、流水線運行、流水線資源等對象,初始化兩個控制器:流水線運行控制器和任務運行控制器。流水線運行控制器監聽流水線運行對象的變化,將流水線中所有的任務構建為一張有向無環圖,通過遍歷有向無環圖找到當前可被調度的任務節點創建對應的任務運行對象;任務運行控制器監聽任務運行對象的變化,將任務運行和對應任務轉化為可執行的容器,由容器云平臺調度執行,通過上述定義的對象和邏輯的抽象和組合,形成統一構建系統,具備源代碼倉庫、二進制構建、鏡像構建、應用部署、存儲對象等能力,并且統一構建系統所需的組件基于容器云平臺實現,對底層CPU沒有依賴性,能夠較為輕易地實現不同架構的兼容性適配。
3.3 應用自動適配和分發
基于統一構建系統的源代碼倉庫、二進制構建、鏡像構建、應用分發、存儲對象等能力,將應用代碼或安裝包上傳后,能夠在應用構建過程中自動實現國產CPU兼容性適配并正常運行。應用通過源代碼和安裝包的方式上傳后,將應用構建需要的源代碼倉庫、二進制構建、鏡像構建、應用分發、存儲對象等過程配置好便可運行應用構建流水線。
通過應用源代碼上傳后,應用構建系統中的源碼構建任務會獲取源代碼來源和分支,源碼構建后選擇對應的基礎容器鏡像通過編譯腳本構建應用所需的二進制文件,可選java、tomcat、golang或自定義等基礎鏡像,基于源碼、基礎鏡像和編譯的二進制文件編寫鏡像構建配置文件來自動構建應用鏡像,并存儲到鏡像倉庫,應用構建若有外部存儲對象要導入可以添加文件到目標目錄,基于應用鏡像配置部署名稱、端口、副本數、環境變量等便可實現應用在容器云平臺上的分發,實現應用源代碼-二進制構建-鏡像構建-存儲對象導入-應用分發過程。
通過應用安裝包上傳后,可作為存儲對象導入,借助平臺基礎鏡像,編寫鏡像構建配置文件直接構建應用鏡像,并存儲到鏡像倉庫,基于應用鏡像配置部署名稱、端口、副本數、環境變量等便可實現應用在容器云平臺上的分發,實現應用安裝包-存儲對象-鏡像構建-應用分發過程。
4 實現流程
基于異構國產CPU的容器應用統一構建流程如圖3所示,在上傳至容器云平臺的應用程序文件為源代碼的情況下,獲取源代碼的來源和分支,根據源代碼的來源和分支獲取應用的源代碼,從容器云平臺中封裝的應用所需運行環境選擇應用對應的基礎容器鏡像,基于源代碼、基礎容器鏡像及二進制文件編寫鏡像構建配置文件,或基于應用對應的基礎容器鏡像和存儲對象編寫鏡像構建配置文件,利用鏡像構建配置文件構建應用鏡像,并將應用鏡像存儲至所述容器云平臺連接的鏡像倉庫,根據應用的包含CPU架構信息的分發配置將所述鏡像倉庫中的應用鏡像在所述容器云平臺上進行分發,以利用相應架構的CPU服務器資源運行應用。
5 結束語
本研究打破應用基于異構國產CPU的適配瓶頸,利用移植性較強的容器技術搭建異構國產統一構建系統,采用持續集成持續部署的理念打通應用適配和分發的流程,使得應用自動部署在異構國產化物理環境,底層運行環境對應用透明化,消除應用對于底層CPU的依賴。基于異構國產CPU搭建容器應用統一構建系統,使得需要運行在異構國產CPU上的應用能夠無差別自動適配和分發,并能夠提供應用基于不同架構的選項,降低異構計算成本,提高資源利用率[5],提升應用自主可控適配的合理性和便捷性,覆蓋所有主流國產CPU和國產操作系統,促進國產云應用生態建設。
參考文獻:
[1] 徐博賢.國產異構跨平臺開發環境研究[D].石家莊:石家莊鐵道大學,2019.
[2] 許健,楊飛,陳娜,等.一種面向國產平臺的容器跨異構集群重構方法:CN110851237A[P].2020-02-28.
[3] 曾志平,蕭海東,張新鵬.基于國產X86處理器的異構計算平臺構建及敏感數據保護[J].計算機科學,2015,42(S2):317-322.
[4] 劉曉楠.面向國產處理器的二進制翻譯關鍵技術研究[D].鄭州:解放軍信息工程大學,2014.
[5] 張峰,翟季冬,陳政,等.面向異構融合處理器的性能分析、優化及應用綜述[J].軟件學報,2020,31(8):2603-2624.
【通聯編輯:謝媛媛】
收稿日期:2021-06-20
基金項目:國家重點研發計劃項目:私有云環境下服務化智能辦公系統平臺(項目編號:2018YFB1004101)
作者簡介:杜磊(1993—),男,山西人,工程師,碩士,研究方向為云計算與大數據;王競爭(1988—),男,河南人,工程師,碩士,研究方向為云計算與大數據;穆啟鵬(1992—),男,北京人,助理工程師,碩士,研究方向為云計算與大數據。