楊小虎/博士、研究員,1994年起任教浙江大學(xué)計(jì)算機(jī)系/計(jì)算機(jī)學(xué)院,曾任浙江大學(xué)軟件學(xué)院常務(wù)副院長(zhǎng),現(xiàn)任浙江大學(xué)計(jì)算機(jī)軟件研究所副所長(zhǎng),浙江大學(xué)互聯(lián)網(wǎng)金融研究院副院長(zhǎng)。長(zhǎng)期從事軟件工程、金融科技(FinTech)、云計(jì)算等方面的研發(fā)工作,自2001年起創(chuàng)建并領(lǐng)導(dǎo)的浙江大學(xué)道富技術(shù)中心成為國(guó)際化產(chǎn)學(xué)研合作成功典范,近年來(lái)組織團(tuán)隊(duì)積極開展云計(jì)算開源技術(shù)研發(fā),對(duì)Kubernetes、Docker等重要開源項(xiàng)目的源代碼貢獻(xiàn)量超過(guò)1000萬(wàn)行,在全球容器云開源技術(shù)領(lǐng)域具有較大影響力。
浙江大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院簡(jiǎn)介
浙江大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院秉承“人為本,和為貴,變則通”的文化理念,以培養(yǎng)求是創(chuàng)新、與時(shí)俱進(jìn)的具有國(guó)際視野的頂尖計(jì)算機(jī)人才為使命,先后培養(yǎng)了數(shù)位中國(guó)工程院院士和中國(guó)科學(xué)院院士。計(jì)算機(jī)學(xué)院下設(shè)5個(gè)系、4個(gè)研究所、2個(gè)中心,擁有計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程、網(wǎng)絡(luò)空間安全、設(shè)計(jì)學(xué)4個(gè)國(guó)家一級(jí)學(xué)科。根據(jù)《基本科學(xué)指標(biāo)》數(shù)據(jù)庫(kù)(ESI)2018年5月公布數(shù)據(jù),浙江大學(xué)計(jì)算機(jī)學(xué)科ESI學(xué)科排名進(jìn)入世界前千分之一,列全球第25位。2017年12月教育部公布的全國(guó)第四次學(xué)科評(píng)估中,浙江大學(xué)計(jì)算機(jī)學(xué)科和軟件工程學(xué)科均為A+,雙雙列全國(guó)并列第一。
近年來(lái),新型開源云計(jì)算技術(shù)和社區(qū)蓬勃發(fā)展、影響巨大。包括浙江大學(xué)在內(nèi)的大量機(jī)構(gòu)和個(gè)人通過(guò)github、Stack Overflow等協(xié)同平臺(tái)完成了大量新思想、新技術(shù)的交流,創(chuàng)造了前所未有的包括容器、微服務(wù)、AI等技術(shù)的開源云原生生態(tài)系統(tǒng)。
企業(yè)、高校、個(gè)人緊密協(xié)作,助力開源云原生生態(tài)發(fā)展
由浙江大學(xué)、Google、RedHat、華為等企業(yè)于2015年共同參與成立的云原生基金會(huì)(Cloud Native Computing Foundation,CNCF)秉承著協(xié)助、使能、鼓勵(lì)(help, enable, encourage)的宗旨,海納百川,是當(dāng)前在容器、微服務(wù)、云原生領(lǐng)域最活躍的社區(qū)之一。CNCF通過(guò)構(gòu)建并推廣一系列的開源技術(shù)和標(biāo)準(zhǔn),為在云原生時(shí)代構(gòu)建動(dòng)態(tài)(dynamic)、分布式(distributed)環(huán)境下的可伸縮(scalable)、可運(yùn)維(operable)、可觀測(cè)(observable)的敏捷應(yīng)用與服務(wù)提供先進(jìn)可靠的技術(shù)路線。
圖 1 CNCF組織構(gòu)建的云原生生態(tài)圖譜
以CNCF社區(qū)第一個(gè)宣布畢業(yè)的開源容器編排項(xiàng)目Kubernetes的代碼貢獻(xiàn)量統(tǒng)計(jì)為例,我們可以觀察到企業(yè)、高校和個(gè)人的緊密協(xié)作和貢獻(xiàn)是CNCF社區(qū)得以蓬勃發(fā)展的基石,自社區(qū)創(chuàng)立以來(lái)浙大一直積極持續(xù)的在社區(qū)進(jìn)行投入,貢獻(xiàn)度始終排名全球第一梯隊(duì),與華為一起領(lǐng)跑國(guó)內(nèi)Kubernetes社區(qū)生態(tài)。
技術(shù)標(biāo)準(zhǔn)化是開源社區(qū)健康發(fā)展的保障
如同生物多樣性對(duì)生物界進(jìn)化的作用一般,技術(shù)多樣性同樣是技術(shù)得以不斷演化與進(jìn)步的保證。當(dāng)前CNCF社區(qū)已經(jīng)包含了20多個(gè)開源項(xiàng)目,而由CNCF繪制的云原生生態(tài)圖譜則包含了超過(guò)500種開源技術(shù)(圖 1)。在這樣充滿技術(shù)多樣性的生態(tài)系統(tǒng)中,技術(shù)標(biāo)準(zhǔn)保障了不同類型的技術(shù)無(wú)縫對(duì)接,防止出現(xiàn)同類技術(shù)惡意競(jìng)爭(zhēng)的情況,是生態(tài)系統(tǒng)健康發(fā)展的重要保障。
2015年,CNCF成立之初,社區(qū)創(chuàng)始成員們就對(duì)技術(shù)標(biāo)準(zhǔn)化做出了富有建設(shè)性的設(shè)想,并做了CNCF社區(qū)未來(lái)工作范圍的總體架構(gòu)設(shè)計(jì)(見(jiàn)圖2),其中包括了資源調(diào)度、分布式系統(tǒng)服務(wù)、應(yīng)用定義與編排等技術(shù)組件與一系列技術(shù)間的對(duì)接標(biāo)準(zhǔn)。眾多的尚處于設(shè)想中的技術(shù)標(biāo)準(zhǔn),其中相當(dāng)一部分,在2018年的今天都已經(jīng)成為了現(xiàn)實(shí),包括容器運(yùn)行時(shí)接口標(biāo)準(zhǔn)(Container Runtime Interface)、容器存儲(chǔ)接口標(biāo)準(zhǔn)(Container Storage Interface)和容器網(wǎng)絡(luò)接口標(biāo)準(zhǔn)(Container Network Interface)。當(dāng)然在當(dāng)今豐富的生態(tài)系統(tǒng)中也包含了CNCF成立之初沒(méi)有考慮到的技術(shù)標(biāo)準(zhǔn),包括開放服務(wù)代理標(biāo)準(zhǔn)(Open Service Broker API)、云事件標(biāo)準(zhǔn)(Cloud Event)等等。
浙江大學(xué)一直關(guān)注并推進(jìn)社區(qū)標(biāo)準(zhǔn)化工作的發(fā)展,曾參與OCI標(biāo)準(zhǔn)參考實(shí)現(xiàn)runc開源項(xiàng)目的研發(fā),并作為maintainer參與cri-tools開源項(xiàng)目的研發(fā),推進(jìn)容器運(yùn)行時(shí)標(biāo)準(zhǔn)(CRI)在社區(qū)的推廣。
圖 2 2015年 CNCF成立之初的架構(gòu)設(shè)想
基礎(chǔ)設(shè)施的穩(wěn)定化和上層生態(tài)的繁榮
云原生開源技術(shù)圈流行一句話:“infrastructure should be boring“,即IT基礎(chǔ)設(shè)施相關(guān)技術(shù)逐漸趨于穩(wěn)定。Open Container Initialitive(簡(jiǎn)稱OCI)組織的出現(xiàn),以及以containerd/runc為代表的基礎(chǔ)容器運(yùn)行時(shí)參考實(shí)現(xiàn)的廣泛采用,標(biāo)志著云原生時(shí)代的第一層基礎(chǔ)設(shè)施的穩(wěn)定化。而Kubernetes在容器編排領(lǐng)域的勝出,則代表了云原生時(shí)代的第二層技術(shù)設(shè)施的穩(wěn)定化。
這些底層技術(shù)的穩(wěn)定使得生態(tài)系統(tǒng)內(nèi)的其他廠商有信心在相關(guān)技術(shù)上繼續(xù)投入,同樣也使得終端用戶有信心嘗試和采用云原生、微服務(wù)技術(shù)。更為重要的是為云原生生態(tài)內(nèi)的上層技術(shù)的繁榮帶來(lái)的強(qiáng)大的助推作用。
以Kubernetes API為基礎(chǔ),在CNCF社區(qū)中出現(xiàn)了大量Kubernetes-Native的上層技術(shù),包括Service Mesh類的Istio、Linkerd等,云原生存儲(chǔ)類的Rook項(xiàng)目,服務(wù)無(wú)計(jì)算/函數(shù)計(jì)算類的fission項(xiàng)目,快速部署管理深度學(xué)習(xí)框架的kubeflow項(xiàng)目,大數(shù)據(jù)類框架管理的Spark on Kubernetes,復(fù)雜應(yīng)用定義與管理類的ksonnet、Helm項(xiàng)目等。這些上層技術(shù)的出現(xiàn)使得云原生可以被應(yīng)用到更為廣泛的場(chǎng)景中,除了常見(jiàn)的無(wú)狀態(tài)/有狀態(tài)應(yīng)用之外,也包括serverless、AI、大數(shù)據(jù)等多種場(chǎng)景,并反過(guò)來(lái)推進(jìn)了Kubernetes等云原生技術(shù)的進(jìn)一步推廣。
需要指出的是,在基礎(chǔ)設(shè)施穩(wěn)定化的大趨勢(shì)下,也存在一些底層的新興力量,比如近期Google發(fā)布的gVisor運(yùn)行時(shí)技術(shù),在遵循OCI運(yùn)行時(shí)標(biāo)準(zhǔn)的同時(shí),為容器運(yùn)行時(shí)的實(shí)現(xiàn)帶來(lái)了全新的思路。
無(wú)服務(wù)的興起和云計(jì)算抽象層次的提升
無(wú)服務(wù)計(jì)算(serverless)是新近加入到云原生生態(tài)圖譜中的一大類新興技術(shù)(圖 4)。我們不應(yīng)把無(wú)服務(wù)計(jì)算等價(jià)為某項(xiàng)具體的技術(shù)(比如亞馬遜的Lambda),也不應(yīng)該將它等價(jià)為某類具體的技術(shù)(比如函數(shù)計(jì)算)。無(wú)服務(wù)技術(shù)代表了云計(jì)算服務(wù)抽象層次的提升。作為終端用戶,不再需要關(guān)于底層技術(shù)設(shè)施(如虛擬機(jī)集群的規(guī)格定義和管理),而將注意力集中到更高抽象層次的應(yīng)用開發(fā)上去。
圖 3 CNCF社區(qū)中的服務(wù)無(wú)生態(tài)圖譜
從這個(gè)角度理解無(wú)服務(wù)計(jì)算,我們可以認(rèn)為無(wú)服務(wù)計(jì)算是新的也是舊的。說(shuō)它是舊的,因?yàn)樗↖T領(lǐng)域之前早就出現(xiàn)過(guò)的Mobile-Backend-as-a-Service(MBaaS),也包括2011年開源的經(jīng)典PaaS技術(shù)Cloud Foundry+BOSH+IaaS(雖然當(dāng)時(shí)并未從serverless角度考慮,但通過(guò)BOSH自動(dòng)調(diào)用IaaS層接口,我們可以實(shí)現(xiàn)基礎(chǔ)設(shè)施的透明化管理,即實(shí)現(xiàn)根據(jù)工作負(fù)載動(dòng)態(tài)調(diào)整Cloud Foundry所使用的IaaS虛擬機(jī)集群的規(guī)模,因此雖然PaaS和FaaS等serverless技術(shù)有所區(qū)別,我們將Cloud Foundry+BOSH+IaaS技術(shù)也歸類到無(wú)服務(wù)計(jì)算中)。說(shuō)它是新的,因?yàn)橐訟WS Lambda為代表的函數(shù)計(jì)算,以及更為近期的AWS Fargate和Azure ACI(Azure Container Instances)以及華為云CCI(Cloud Container Instance)服務(wù)正在不斷擴(kuò)充無(wú)服務(wù)計(jì)算的內(nèi)涵。浙江大學(xué)一直致力于新型云計(jì)算技術(shù)的研發(fā),早在2011年就開始參與Cloud Foundry開源項(xiàng)目,而在近期又參與到fission等開源FaaS項(xiàng)目中。
無(wú)服務(wù)計(jì)算符合云計(jì)算一直以來(lái)細(xì)化分工、提升生產(chǎn)力的總體思想,我們可以預(yù)測(cè),無(wú)服務(wù)計(jì)算將不僅限于函數(shù)計(jì)算,而將在未來(lái)演化出多種形式的計(jì)算模式,而面向無(wú)服務(wù)計(jì)算的安全、監(jiān)控等多方面相關(guān)技術(shù)生態(tài)將進(jìn)一步繁榮(當(dāng)前CNCF的無(wú)服務(wù)生態(tài)圖譜中僅僅包含工具、框架等少數(shù)類別,如圖 4所示)。由于涉及到應(yīng)用架構(gòu)的演進(jìn),無(wú)服務(wù)計(jì)算的落地不會(huì)發(fā)生在一夜之間,而將結(jié)合微服務(wù)技術(shù),在未來(lái)的幾年里緩慢推進(jìn)。而在此過(guò)程中類似CNCF社區(qū)中的virtual kubelet技術(shù)將作為新舊架構(gòu)應(yīng)用開發(fā)運(yùn)維模式的銜接與橋梁。
云-邊-端一體化的計(jì)算新格局
IDC此前的數(shù)據(jù)顯示,隨著5G的到來(lái)和IoT的發(fā)展,到2020年,將有超過(guò)500億的終端設(shè)備聯(lián)網(wǎng)。而考慮到帶寬的消耗、網(wǎng)絡(luò)的延遲、以及數(shù)據(jù)隱私性保護(hù)等挑戰(zhàn),在智慧城市、智慧醫(yī)療、智能制造、智能家居等數(shù)據(jù)量龐大、對(duì)處理延遲敏感、對(duì)數(shù)據(jù)隱私敏感的場(chǎng)景下,終端設(shè)備產(chǎn)生的數(shù)據(jù)中有超過(guò)半數(shù)需要在終端設(shè)備或網(wǎng)絡(luò)邊緣側(cè)就近分析處理,而中心化的云端只處理計(jì)算資源需求大、實(shí)時(shí)性要求不高的計(jì)算任務(wù),如AI模型訓(xùn)練。未來(lái)的計(jì)算不僅僅局限在大型數(shù)據(jù)中心,而將分布在由云-邊-端構(gòu)成的一體化連續(xù)頻譜上。
從計(jì)算平臺(tái)的角度看,云-邊-端一體化的計(jì)算新格局至少提出了以下兩大挑戰(zhàn):邊緣操作系統(tǒng)和端云一體化管理平臺(tái)。
當(dāng)我們把終端設(shè)備和接入網(wǎng)關(guān)等構(gòu)成的集群當(dāng)做一個(gè)個(gè)的小型數(shù)據(jù)中心,每個(gè)邊緣節(jié)點(diǎn)不再運(yùn)行單一的任務(wù),而是變成一個(gè)可以動(dòng)態(tài)執(zhí)行被調(diào)度該節(jié)點(diǎn)的多類型任務(wù)的通用計(jì)算節(jié)點(diǎn)。因此邊緣操作系統(tǒng)不僅僅需要負(fù)責(zé)邊緣設(shè)備上的任務(wù)調(diào)度、存儲(chǔ)網(wǎng)絡(luò)管理等傳統(tǒng)操作系統(tǒng)職責(zé),也需要提供一套完整的安全隔離機(jī)制,以防止動(dòng)態(tài)調(diào)度到同一邊緣設(shè)備上任務(wù)之間的相互影響。
而容器作為一類輕量級(jí)的操作系統(tǒng)隔離技術(shù)就可以在這里發(fā)揮作用。根據(jù)不同場(chǎng)景下資源的豐富程度和功能需求,在具體做法上我們可以看到部署完整的Docker方案的實(shí)踐,也可以看到更加輕量化的以containerd/runc為基礎(chǔ)構(gòu)建的開源IoT平臺(tái)eliot,或者類似百度IoT Intelligent Edge平臺(tái)那樣基于Linux內(nèi)核的namespace,cgroup技術(shù)直接構(gòu)建定制化容器隔離的技術(shù)方案。浙江大學(xué)在這方面的研究主要圍繞著unikernel技術(shù),相比常見(jiàn)的containerd/runc容器技術(shù),通過(guò)rumpkernel,OSv等unikernel技術(shù)可以進(jìn)一步減少攻擊面,減少資源占用和加快響應(yīng)速度,實(shí)現(xiàn)邊緣設(shè)備上安全計(jì)算環(huán)境。
端云一體化管理平臺(tái)負(fù)責(zé)管理邊緣設(shè)備構(gòu)成的大量小型數(shù)據(jù)中心。開源社區(qū)已經(jīng)有關(guān)于如何將Kubernetes等優(yōu)秀的容器編排引擎應(yīng)用到大量小型數(shù)據(jù)中心的管理上。2018年5月在丹麥哥本哈根舉行的KubeCon+CloudNativeCon大會(huì)上開辟了專門的session討論Kubernetes與邊緣計(jì)算話題。跟CNCF同在Linux基金會(huì)下的EdgeX Foundry社區(qū)也發(fā)起了EdgeX Foundry on Kubernetes,即將該社區(qū)的邊緣計(jì)算平臺(tái)EdgeX運(yùn)行在Kubernetes之上,利用Kubernetes完成資源調(diào)度管理的技術(shù)討論。微軟的IoT Edge Virtual Kubelet開源項(xiàng)目(圖 5)旨在討論如何使用Kubernetes構(gòu)建包含傳統(tǒng)數(shù)據(jù)中心和邊緣計(jì)算的混合端云一體化管理平臺(tái)。浙江大學(xué)在CNCF社區(qū)的frakti項(xiàng)目中將unikernel作為Kubernetes的一個(gè)運(yùn)行時(shí),為Kubernetes在邊緣計(jì)算場(chǎng)景下的應(yīng)用做出了有益的嘗試。
圖 4 微軟的IoT Edge Virtual Kubelet開源項(xiàng)目架構(gòu),使用Kubernetes構(gòu)建包含傳統(tǒng)數(shù)據(jù)中心和邊緣計(jì)算的混合端云一體化管理平臺(tái)。圖片來(lái)源:github.com/azure/iot-edge-virtual-kubelet-provider
學(xué)術(shù)界對(duì)云原生的關(guān)注與推動(dòng)
近5年以來(lái)以容器、微服務(wù)技術(shù)為代表,在IT工業(yè)界蓬勃發(fā)展的云原生技術(shù)浪潮也吸引了學(xué)術(shù)界的注意力。一方面,來(lái)自Google的行業(yè)專家發(fā)表的《Large-scale cluster management at Google with Borg》、《Design patterns for container-based distributed systems》等論文讓學(xué)者了解了容器、微服務(wù)技術(shù)如何支持Google等大型互聯(lián)網(wǎng)公司高可靠、高伸縮性的全球服務(wù)體系。各行各業(yè)的研究者正在創(chuàng)造性地使用容器等云原生技術(shù)推動(dòng)資源調(diào)度、邊緣計(jì)算、物聯(lián)網(wǎng)、大數(shù)據(jù)、AI等各領(lǐng)域的發(fā)展。另一方面,軟件工程領(lǐng)域的學(xué)者也高度關(guān)注這場(chǎng)基于開源協(xié)作開發(fā)平臺(tái)的新技術(shù)浪潮,紛紛開始研究開源項(xiàng)目的演化迭代,開源社區(qū)的形成以及開源社區(qū)的內(nèi)部交流如何促進(jìn)高質(zhì)量開源軟件的研發(fā)。
IEEE Cloud Computing Initiative在2017年特地出版了針對(duì)云原生技術(shù)的???017 vol.4 Issue 5)鼓勵(lì)學(xué)術(shù)界更多地參與到這場(chǎng)云原生運(yùn)動(dòng)中。在該增刊的引言部分美國(guó)Indiana大學(xué)的Dennis Gannon教授與來(lái)自亞馬遜、微軟的云計(jì)算行業(yè)專家共同探討了云原生技術(shù)的定義,列舉了當(dāng)前業(yè)界基于云原生架構(gòu)構(gòu)建的大型軟件系統(tǒng),總結(jié)了容器技術(shù)、service fabric、serverless等云原生核心技術(shù),并探討云原生技術(shù)對(duì)于IT行業(yè)的重大影響以及未來(lái)云原生技術(shù)在邊緣計(jì)算等新方向的應(yīng)用與挑戰(zhàn)。