本文來自微信公眾號“twt企業(yè)IT社區(qū)”,作者/汪照輝,,中國銀河證券架構(gòu)師,專注于容器云、微服務(wù)、DevOps、數(shù)據(jù)治理、數(shù)字化轉(zhuǎn)型等領(lǐng)域,對相關(guān)技術(shù)有獨(dú)特的理解和見解。擅長于軟件規(guī)劃和設(shè)計,提出的“平臺融合”的觀點(diǎn)越來越得到認(rèn)同和事實(shí)證明。發(fā)表了眾多技術(shù)文章探討容器平臺建設(shè)、微服務(wù)技術(shù)、DevOps、數(shù)字化轉(zhuǎn)型、數(shù)據(jù)治理、中臺建設(shè)等內(nèi)容,受到了廣泛關(guān)注和肯定。個人微信公眾號:技術(shù)思維創(chuàng)新
容器云平臺是基于云原生容器等技術(shù)所構(gòu)建的支撐“以應(yīng)用為中心”的應(yīng)用發(fā)布、應(yīng)用運(yùn)行和應(yīng)用運(yùn)維的輕量化PaaS平臺。由于容器云采用開源的云原生技術(shù),云原生本身就具備信創(chuàng)的基因,也使我們具備自主可控能力,所以其信創(chuàng)改造重點(diǎn)是對各種信創(chuàng)CPU芯片的支持和信創(chuàng)操作系統(tǒng)、信創(chuàng)數(shù)據(jù)庫、以及信創(chuàng)中間件等的支持。信創(chuàng)數(shù)據(jù)庫和中間件不是容器云信創(chuàng)改造的核心,只要性能和穩(wěn)定性滿足需求,適配信創(chuàng)操作系統(tǒng),就問題不大。信創(chuàng)操作系統(tǒng)和信創(chuàng)CPU則是容器云平臺信創(chuàng)改造需要關(guān)注的重點(diǎn)。雖然理論上云計算無需考慮資源的位置、類型等,但目前國內(nèi)尚無法實(shí)現(xiàn)高性能、高可用、高精密的一體化集成,各種廠商還是一片混戰(zhàn)。這也導(dǎo)致大量的重復(fù)建設(shè)和低效集成工作。云計算很重要的一點(diǎn)就是要實(shí)現(xiàn)異構(gòu)基礎(chǔ)設(shè)施資源的整合和統(tǒng)一的、高效的資源調(diào)度服務(wù),容器云作為輕量化PaaS[1]也可以直接使用標(biāo)準(zhǔn)化的基礎(chǔ)設(shè)施資源服務(wù),從而提升資源管理和調(diào)度效率。
目前國內(nèi)信創(chuàng)CPU有龍芯、鯤鵬、飛騰、海光、兆芯、申威等多種采用不同指令集架構(gòu)的CPU,這也導(dǎo)致在采購信創(chuàng)服務(wù)器的時候不得不考慮不同架構(gòu)CPU的特點(diǎn)、生態(tài)、和操作系統(tǒng)的適配、未來發(fā)展趨勢及存活下來的可能性。
信創(chuàng)CPU指令集介紹
CPU是計算機(jī)的運(yùn)算中心和控制中心。信創(chuàng)CPU選型主要看CPU指令集。所謂指令集是計算機(jī)中計算和控制系統(tǒng)所有指令的集合,計算機(jī)高級語言設(shè)計實(shí)現(xiàn)的程序最終需要轉(zhuǎn)化為一條條“指令”才能在CPU上運(yùn)行。指令集決定了處理器的架構(gòu)(稱為微架構(gòu)),處理器架構(gòu)就是用硬件電路實(shí)現(xiàn)指令集,所以采用不同的指令集意味著不同的微架構(gòu)。
CPU指令集分類
CPU指令集可分為CISC(復(fù)雜指令集)和RISC(精簡指令集)兩類,CISC型CPU目前主要是x86架構(gòu),RISC型CPU主要包括ARM、RISC-V、MIPS、POWER、Alpha架構(gòu)等。
(1)X86架構(gòu)指令集龐大,功能復(fù)雜,尋址方式多,且長度可變,有多種格式;各種指令均可訪問內(nèi)存數(shù)據(jù);一部分指令需多個機(jī)器周期完成;復(fù)雜指令采用微程序?qū)崿F(xiàn);系統(tǒng)兼容能力較強(qiáng);其優(yōu)勢是x86架構(gòu)兼容性強(qiáng),配套軟件及開發(fā)工具相對成熟,且x86架構(gòu)功能強(qiáng)大,高效使用主存儲器,在處理復(fù)雜指令和商業(yè)計算的運(yùn)用方面有較大優(yōu)勢。
(2)ARM指令集長度固定,易于譯碼執(zhí)行;大部分指令可以條件式地執(zhí)行,降低在分支時產(chǎn)生的開銷,彌補(bǔ)分支預(yù)測器的不足;算數(shù)指令只會在要求時更改條件編碼。ARM結(jié)構(gòu)具有低功耗,小體積的特點(diǎn),聚焦移動端市場,在消費(fèi)類電子產(chǎn)品中具有優(yōu)勢。
(3)RISC-V支持32位或64位指令集,使用加載-存儲架構(gòu),RISC-V指令集完全開源,設(shè)計簡單,易于移植Unix系統(tǒng),模塊化設(shè)計。盡管RISC-V允許設(shè)計人員免費(fèi)試驗(yàn)和開發(fā)RISC-V系統(tǒng),但幾乎沒有對硬件設(shè)計的支持。RISC-V架構(gòu)的起步相對較晚,但發(fā)展很快,在智能穿戴產(chǎn)品上的應(yīng)用廣泛。
(4)MIPS采用32位寄存器,大多數(shù)指令在一個周期內(nèi)執(zhí)行,都是32位定長編碼的指令集和流水線模式執(zhí)行指令;具有高性能高速緩存能力,且內(nèi)存管理方案相對靈活。優(yōu)勢是結(jié)構(gòu)設(shè)計簡單、功耗較低,在嵌入式應(yīng)用場景具有優(yōu)勢。
(5)Alpha采用32位定長指令集,使用低字節(jié)寄存器占用低內(nèi)存地址線;分支指令無延遲槽,使用無條件分支碼寄存器;優(yōu)勢是結(jié)構(gòu)簡單,易于實(shí)現(xiàn)超標(biāo)量和高主頻計算。
(6)Power指令集是一種由IBM公司設(shè)計開發(fā)的一種基于RISC架構(gòu)的指令集體系構(gòu)架,2019年IBM宣布完全開源Power Command Set指令集,這是繼RISC-V、MIPS之后又一個開源CPU指令集,與RISC-V、MIPS等開源指令集相比,Power指令集最大的優(yōu)勢就是性能強(qiáng)大。
CPU指令集自研和授權(quán)情況
國內(nèi)信創(chuàng)CPU指令集通過授權(quán)和自研兩種方式來實(shí)現(xiàn)。申威完全自研Alpha指令集,自主化程度最高;龍芯采用MIPS指令集授權(quán)+自研方式,國產(chǎn)化程度很高;鯤鵬CPU和飛騰CPU采用ARM指令集授權(quán)方式,擁有100%源代碼,按處理器的架構(gòu)和指令自行編寫代碼,設(shè)計芯片,自主先進(jìn)程度相對較高;海光CPU采用指令集授權(quán)方式,高效兼容安全,整機(jī)優(yōu)勢明顯,不過自主程度比較低;兆芯采用x86(VIA)IP授權(quán)方式,性能和生態(tài)具有較強(qiáng)優(yōu)勢,自主程度最低。
CPU生態(tài)
在生態(tài)方面,基于x86和ARM架構(gòu)的CPU與下游軟硬件的兼容性較好,適配產(chǎn)品較為豐富,對用戶使用較為友好;基于MIPS和Alpha架構(gòu)的CPU在高性能計算、嵌入式工控機(jī)等特定領(lǐng)域應(yīng)用較好,市場化仍有待進(jìn)一步發(fā)展。RISC-V架構(gòu)的起步相對較晚,積累少,生態(tài)還不完整。Power處理器的問題也在于越來越少的廠商支持。
信創(chuàng)CPU與操作系統(tǒng)的適配支持
國產(chǎn)主流操作系統(tǒng)是基于Linux內(nèi)核的二次開發(fā),主要也都是對CPU芯片和應(yīng)用的適配支持,所以主要看操作系統(tǒng)支持的適配應(yīng)用和CPU的量,也就是生態(tài)情況。目前國內(nèi)的操作系統(tǒng)主要有麒麟、統(tǒng)信、普華、中科方德、OpenEuler等。麒麟、統(tǒng)信操作系統(tǒng)目前占據(jù)主導(dǎo)地位,支持各種架構(gòu)的CPU,整個生態(tài)也相對比較成熟。普華和中科方德也在不斷發(fā)力,但仍需進(jìn)一步的努力構(gòu)建完善的生態(tài)體系。雖然可以通過云原生技術(shù)構(gòu)建彈性、敏捷的云原生操作系統(tǒng),但依然無法繞過基礎(chǔ)軟件服務(wù)器操作系統(tǒng)對基礎(chǔ)硬件的管理和適配。
容器云信創(chuàng)改造方案
采用開放、開源云原生技術(shù)的容器云信創(chuàng)改造主要是基礎(chǔ)軟硬件的替換,包括CPU、操作系統(tǒng)、存儲、網(wǎng)卡等,其實(shí)也就是容器云節(jié)點(diǎn)——服務(wù)器整機(jī)的替換。不過由于目前信創(chuàng)CPU和操作系統(tǒng)等依然處于混戰(zhàn)狀態(tài),很多公司都是采用了多種CPU架構(gòu),從而可能需要在一個平臺支持不同架構(gòu)的CPU,和不同的操作系統(tǒng),采購兩到多種異構(gòu)的服務(wù)器,從而需要實(shí)現(xiàn)一云多芯部署方案。
一云多芯容器云集群部署方案
容器云平臺改造有幾種部署方案,一是在不同的CPU架構(gòu)上重新部署一套新的信創(chuàng)容器云平臺;一種是在現(xiàn)有平臺上支持不同架構(gòu)的信創(chuàng)應(yīng)用;現(xiàn)有平臺支持信創(chuàng)也有兩種方案,一是獨(dú)立的信創(chuàng)CPU架構(gòu)集群和非信創(chuàng)集群,二是信創(chuàng)和非信創(chuàng)混合部署方案。不同的方案各有優(yōu)缺點(diǎn),部署多個平臺、多個集群會造成浪費(fèi),混合方式又使平臺管理操作、資源調(diào)度等復(fù)雜化。考慮到數(shù)字化發(fā)展系統(tǒng)融合的要求,可以用一個portal界面統(tǒng)一管理信創(chuàng)和非信創(chuàng)應(yīng)用,盡可能通過平臺的封裝來屏蔽下層異構(gòu)基礎(chǔ)設(shè)施資源的差異,提升應(yīng)用部署和運(yùn)維管理的效率。不同的CPU架構(gòu)也使租戶應(yīng)用需要多種不同架構(gòu)的資源,通過一個入口實(shí)現(xiàn)多種能力支持,對租戶來說要簡單一些。不過對于一個集群有異構(gòu)資源來說,使資源調(diào)度和維護(hù)管理復(fù)雜化,特別在節(jié)點(diǎn)量比較大的情況下,需要定義不同的標(biāo)簽來區(qū)分,對平臺管理能力和可見性、可觀測性等有較高要求。目前的容器云平臺功能有限,難以達(dá)到自主調(diào)度要求,否則額外帶來很多的工作量。因此,當(dāng)前選擇不同架構(gòu)CPU獨(dú)立部署一個集群的方式,在應(yīng)用調(diào)度時直接調(diào)度到相應(yīng)的集群,資源管理的粒度相對較大,相對更容易實(shí)現(xiàn)。
一云多芯資源管理和調(diào)度
對于資源的調(diào)度和管理,理論上最佳的方案是不用關(guān)注資源在哪里,有多少,是什么類型,云的思想是實(shí)現(xiàn)資源融合,因此資源容量越大,彈性越大。但現(xiàn)實(shí)往往受制于有限的資源,需要考慮資源的調(diào)度和分配。信創(chuàng)增加多種CPU架構(gòu),使資源管理和調(diào)度相對更復(fù)雜化。理論上,可以通過云管平臺或內(nèi)部基礎(chǔ)設(shè)施資源管理平臺來實(shí)現(xiàn)基礎(chǔ)設(shè)施資源的彈性,不過往往涉及多個團(tuán)隊(duì)甚至多個部門,比較難以整合,比較難以獲得高效率。部署時如果做不到自主調(diào)度,就需要人工去做一些配置或選擇,人的操作難免會出錯,所以越簡單可能體驗(yàn)越好。獨(dú)立集群部署方式也在于這樣可以簡化很多工作。粒度上比節(jié)點(diǎn)管理要簡單,通過分類來管理一類資源,而不是管理分片資源。Kubernetes自身具備集群內(nèi)資源調(diào)度能力,容器云平臺需要實(shí)現(xiàn)自應(yīng)用到資源的全局調(diào)度能力,需要在平臺層進(jìn)行能力擴(kuò)展。資源調(diào)度本身就比較復(fù)雜,有很多種調(diào)度算法,這一部分還需要繼續(xù)投入和優(yōu)化。
由于信創(chuàng)CPU的架構(gòu)差異,也導(dǎo)致整個容器云平臺在信創(chuàng)改造時架構(gòu)相對復(fù)雜化,管理和調(diào)度復(fù)雜化,需要在Portal和平臺層進(jìn)行優(yōu)化和完善,以支持多種異構(gòu)CPU資源調(diào)度,實(shí)現(xiàn)一云多芯。
注:參考天風(fēng)證券信創(chuàng)產(chǎn)業(yè)鏈全梳理、普華基礎(chǔ)軟件資料等。
[1]很多人把只要用到容器的系統(tǒng)就稱為容器云,在IaaS上提供容器服務(wù),往往是以容器為中心的調(diào)度和管理,而不是應(yīng)用為中心的管理和運(yùn)維能力。和這里討論的容器云(容器化PaaS)是不一樣的,不在一個層次。容器化PaaS是PaaS服務(wù)層,容器以及介于IaaS和PaaS之間的服務(wù)能力,類似于虛擬化。