雲-邊-端一體化的計算新格局 淺談開源雲原生技術生態的發展

視界 | 浙江大學計算機學院博士、研究員 楊小虎

楊小虎/博士、研究員,1994年起任教浙江大學計算機系/計算機學院,曾任浙江大學軟件學院常務副院長,現任浙江大學計算機軟件研究所副所長,浙江大學互聯網金融研究院副院長。長期從事軟件工程、金融科技(FinTech)、雲計算等方面的研發工作,自2001年起創建並領導的浙江大學道富技術中心成為國際化產學研合作成功典範,近年來組織團隊積極開展雲計算開源技術研發,對Kubernetes、Docker等重要開源項目的源代碼貢獻量超過1000萬行,在全球容器雲開源技術領域具有較大影響力。

浙江大學計算機科學與技術學院簡介

浙江大學計算機科學與技術學院秉承“人為本,和為貴,變則通”的文化理念,以培養求是創新、與時俱進的具有國際視野的頂尖計算機人才為使命,先後培養了數位中國工程院院士和中國科學院院士。計算機學院下設5個系、4個研究所、2箇中心,擁有計算機科學與技術、軟件工程、網絡空間安全、設計學4個國家一級學科。根據《基本科學指標》數據庫(ESI)2018年5月公佈數據,浙江大學計算機學科ESI學科排名進入世界前千分之一,列全球第25位。2017年12月教育部公佈的全國第四次學科評估中,浙江大學計算機學科和軟件工程學科均為A+,雙雙列全國並列第一。

近年來,新型開源雲計算技術和社區蓬勃發展、影響巨大。包括浙江大學在內的大量機構和個人通過github、Stack Overflow等協同平臺完成了大量新思想、新技術的交流,創造了前所未有的包括容器、微服務、AI等技術的開源雲原生生態系統。

企業、高校、個人緊密協作,助力開源雲原生生態發展

由浙江大學、Google、RedHat、華為等企業於2015年共同參與成立的雲原生基金會(Cloud Native Computing Foundation,CNCF)秉承著協助、使能、鼓勵(help, enable, encourage)的宗旨,海納百川,是當前在容器、微服務、雲原生領域最活躍的社區之一。CNCF通過構建並推廣一系列的開源技術和標準,為在雲原生時代構建動態(dynamic)、分佈式(distributed)環境下的可伸縮(scalable)、可運維(operable)、可觀測(observable)的敏捷應用與服務提供先進可靠的技術路線。

雲-邊-端一體化的計算新格局 淺談開源雲原生技術生態的發展

圖 1 CNCF組織構建的雲原生生態圖譜

以CNCF社區第一個宣佈畢業的開源容器編排項目Kubernetes的代碼貢獻量統計為例,我們可以觀察到企業、高校和個人的緊密協作和貢獻是CNCF社區得以蓬勃發展的基石,自社區創立以來浙大一直積極持續的在社區進行投入,貢獻度始終排名全球第一梯隊,與華為一起領跑國內Kubernetes社區生態。

技術標準化是開源社區健康發展的保障

如同生物多樣性對生物界進化的作用一般,技術多樣性同樣是技術得以不斷演化與進步的保證。當前CNCF社區已經包含了20多個開源項目,而由CNCF繪製的雲原生生態圖譜則包含了超過500種開源技術(圖 1)。在這樣充滿技術多樣性的生態系統中,技術標準保障了不同類型的技術無縫對接,防止出現同類技術惡意競爭的情況,是生態系統健康發展的重要保障。

2015年,CNCF成立之初,社區創始成員們就對技術標準化做出了富有建設性的設想,並做了CNCF社區未來工作範圍的總體架構設計(見圖2),其中包括了資源調度、分佈式系統服務、應用定義與編排等技術組件與一系列技術間的對接標準。眾多的尚處於設想中的技術標準,其中相當一部分,在2018年的今天都已經成為了現實,包括容器運行時接口標準(Container Runtime Interface)、容器存儲接口標準(Container Storage Interface)和容器網絡接口標準(Container Network Interface)。當然在當今豐富的生態系統中也包含了CNCF成立之初沒有考慮到的技術標準,包括開放服務代理標準(Open Service Broker API)、雲事件標準(Cloud Event)等等。

浙江大學一直關注並推進社區標準化工作的發展,曾參與OCI標準參考實現runc開源項目的研發,並作為maintainer參與cri-tools開源項目的研發,推進容器運行時標準(CRI)在社區的推廣。

雲-邊-端一體化的計算新格局 淺談開源雲原生技術生態的發展

圖 2 2015年 CNCF成立之初的架構設想

基礎設施的穩定化和上層生態的繁榮

雲原生開源技術圈流行一句話:“infrastructure should be boring“,即IT基礎設施相關技術逐漸趨於穩定。Open Container Initialitive(簡稱OCI)組織的出現,以及以containerd/runc為代表的基礎容器運行時參考實現的廣泛採用,標誌著雲原生時代的第一層基礎設施的穩定化。而Kubernetes在容器編排領域的勝出,則代表了雲原生時代的第二層技術設施的穩定化。

這些底層技術的穩定使得生態系統內的其他廠商有信心在相關技術上繼續投入,同樣也使得終端用戶有信心嘗試和採用雲原生、微服務技術。更為重要的是為雲原生生態內的上層技術的繁榮帶來的強大的助推作用。

以Kubernetes API為基礎,在CNCF社區中出現了大量Kubernetes-Native的上層技術,包括Service Mesh類的Istio、Linkerd等,雲原生存儲類的Rook項目,服務無計算/函數計算類的fission項目,快速部署管理深度學習框架的kubeflow項目,大數據類框架管理的Spark on Kubernetes,複雜應用定義與管理類的ksonnet、Helm項目等。這些上層技術的出現使得雲原生可以被應用到更為廣泛的場景中,除了常見的無狀態/有狀態應用之外,也包括serverless、AI、大數據等多種場景,並反過來推進了Kubernetes等雲原生技術的進一步推廣。

需要指出的是,在基礎設施穩定化的大趨勢下,也存在一些底層的新興力量,比如近期Google發佈的gVisor運行時技術,在遵循OCI運行時標準的同時,為容器運行時的實現帶來了全新的思路。

無服務的興起和雲計算抽象層次的提升

無服務計算(serverless)是新近加入到雲原生生態圖譜中的一大類新興技術(圖 4)。我們不應把無服務計算等價為某項具體的技術(比如亞馬遜的Lambda),也不應該將它等價為某類具體的技術(比如函數計算)。無服務技術代表了雲計算服務抽象層次的提升。作為終端用戶,不再需要關於底層技術設施(如虛擬機集群的規格定義和管理),而將注意力集中到更高抽象層次的應用開發上去。

從這個角度理解無服務計算,我們可以認為無服務計算是新的也是舊的。說它是舊的,因為它包括IT領域之前早就出現過的Mobile-Backend-as-a-Service(MBaaS),也包括2011年開源的經典PaaS技術Cloud Foundry+BOSH+IaaS(雖然當時並未從serverless角度考慮,但通過BOSH自動調用IaaS層接口,我們可以實現基礎設施的透明化管理,即實現根據工作負載動態調整Cloud Foundry所使用的IaaS虛擬機集群的規模,因此雖然PaaS和FaaS等serverless技術有所區別,我們將Cloud Foundry+BOSH+IaaS技術也歸類到無服務計算中)。說它是新的,因為以AWS Lambda為代表的函數計算,以及更為近期的AWS Fargate和Azure ACI(Azure Container Instances)以及華為雲CCI(Cloud Container Instance)服務正在不斷擴充無服務計算的內涵。浙江大學一直致力於新型雲計算技術的研發,早在2011年就開始參與Cloud Foundry開源項目,而在近期又參與到fission等開源FaaS項目中。

無服務計算符合雲計算一直以來細化分工、提升生產力的總體思想,我們可以預測,無服務計算將不僅限於函數計算,而將在未來演化出多種形式的計算模式,而面向無服務計算的安全、監控等多方面相關技術生態將進一步繁榮(當前CNCF的無服務生態圖譜中僅僅包含工具、框架等少數類別,如圖 4所示)。由於涉及到應用架構的演進,無服務計算的落地不會發生在一夜之間,而將結合微服務技術,在未來的幾年裡緩慢推進。而在此過程中類似CNCF社區中的virtual kubelet技術將作為新舊架構應用開發運維模式的銜接與橋樑。

雲-邊-端一體化的計算新格局

IDC此前的數據顯示,隨著5G的到來和IoT的發展,到2020年,將有超過500億的終端設備聯網。而考慮到帶寬的消耗、網絡的延遲、以及數據隱私性保護等挑戰,在智慧城市、智慧醫療、智能製造、智能家居等數據量龐大、對處理延遲敏感、對數據隱私敏感的場景下,終端設備產生的數據中有超過半數需要在終端設備或網絡邊緣側就近分析處理,而中心化的雲端只處理計算資源需求大、實時性要求不高的計算任務,如AI模型訓練。未來的計算不僅僅侷限在大型數據中心,而將分佈在由雲-邊-端構成的一體化連續頻譜上。

從計算平臺的角度看,雲-邊-端一體化的計算新格局至少提出了以下兩大挑戰:邊緣操作系統和端雲一體化管理平臺。

當我們把終端設備和接入網關等構成的集群當做一個個的小型數據中心,每個邊緣節點不再運行單一的任務,而是變成一個可以動態執行被調度該節點的多類型任務的通用計算節點。因此邊緣操作系統不僅僅需要負責邊緣設備上的任務調度、存儲網絡管理等傳統操作系統職責,也需要提供一套完整的安全隔離機制,以防止動態調度到同一邊緣設備上任務之間的相互影響。

而容器作為一類輕量級的操作系統隔離技術就可以在這裡發揮作用。根據不同場景下資源的豐富程度和功能需求,在具體做法上我們可以看到部署完整的Docker方案的實踐,也可以看到更加輕量化的以containerd/runc為基礎構建的開源IoT平臺eliot,或者類似百度IoT Intelligent Edge平臺那樣基於Linux內核的namespace,cgroup技術直接構建定製化容器隔離的技術方案。浙江大學在這方面的研究主要圍繞著unikernel技術,相比常見的containerd/runc容器技術,通過rumpkernel,OSv等unikernel技術可以進一步減少攻擊面,減少資源佔用和加快響應速度,實現邊緣設備上安全計算環境。

端雲一體化管理平臺負責管理邊緣設備構成的大量小型數據中心。開源社區已經有關於如何將Kubernetes等優秀的容器編排引擎應用到大量小型數據中心的管理上。2018年5月在丹麥哥本哈根舉行的KubeCon+CloudNativeCon大會上開闢了專門的session討論Kubernetes與邊緣計算話題。跟CNCF同在Linux基金會下的EdgeX Foundry社區也發起了EdgeX Foundry on Kubernetes,即將該社區的邊緣計算平臺EdgeX運行在Kubernetes之上,利用Kubernetes完成資源調度管理的技術討論。微軟的IoT Edge Virtual Kubelet開源項目(圖 5)旨在討論如何使用Kubernetes構建包含傳統數據中心和邊緣計算的混合端雲一體化管理平臺。浙江大學在CNCF社區的frakti項目中將unikernel作為Kubernetes的一個運行時,為Kubernetes在邊緣計算場景下的應用做出了有益的嘗試。

雲-邊-端一體化的計算新格局 淺談開源雲原生技術生態的發展

圖 4 微軟的IoT Edge Virtual Kubelet開源項目架構,使用Kubernetes構建包含傳統數據中心和邊緣計算的混合端雲一體化管理平臺。圖片來源:github.com/azure/iot-edge-virtual-kubelet-provider

學術界對雲原生的關注與推動

近5年以來以容器、微服務技術為代表,在IT工業界蓬勃發展的雲原生技術浪潮也吸引了學術界的注意力。一方面,來自Google的行業專家發表的《Large-scale cluster management at Google with Borg》、《Design patterns for container-based distributed systems》等論文讓學者瞭解了容器、微服務技術如何支持Google等大型互聯網公司高可靠、高伸縮性的全球服務體系。各行各業的研究者正在創造性地使用容器等雲原生技術推動資源調度、邊緣計算、物聯網、大數據、AI等各領域的發展。另一方面,軟件工程領域的學者也高度關注這場基於開源協作開發平臺的新技術浪潮,紛紛開始研究開源項目的演化迭代,開源社區的形成以及開源社區的內部交流如何促進高質量開源軟件的研發。

IEEE Cloud Computing Initiative在2017年特地出版了針對雲原生技術的專刊(2017 vol.4 Issue 5)鼓勵學術界更多地參與到這場雲原生運動中。在該增刊的引言部分美國Indiana大學的Dennis Gannon教授與來自亞馬遜、微軟的雲計算行業專家共同探討了雲原生技術的定義,列舉了當前業界基於雲原生架構構建的大型軟件系統,總結了容器技術、service fabric、serverless等雲原生核心技術,並探討雲原生技術對於IT行業的重大影響以及未來雲原生技術在邊緣計算等新方向的應用與挑戰。


分享到:


相關文章: