天天看點

袋鼠:雲原生底層系統探索和實踐

本文根據雲栖大會系統軟體專場内容整理

演講者:韓偉東

随着雲計算的發展,雲基礎設施已經成為很多企業以及使用者基礎設施重要的組成部分,部分企業甚至會将自己的全部業務都托管在公共雲環境上。而伴随着這些基于雲計算基礎設施進行開發、運維業務體量的擴張,雲原生的概念也開始悄然進入人們的視線,并逐漸發展壯大。

袋鼠:雲原生底層系統探索和實踐

從2013年開始正式被提出,到2015年CNCF建立并至今,雲原生的概念在一直不斷地發展完善,雖然現在我們仍無法給雲原生一個嚴格明确的定義,但是其特征已經相對比較明顯,比如容器化、serverless化等等。然而可以看到的是,面向雲原生更多目光還是聚焦在應用定義、編排管理、runtime等軟體棧上,很少有人會去關注底層系統的實作,大家都天然地将這部分領域交由雲廠商去解決,那麼在這一塊雲廠商是否就能夠輕松應對了呢?

當然不是。

首先,相較于傳統的業務形态,雲原生業務對于資源需求類型有了變化,從傳統雲時代擷取虛拟機資源(虛拟化硬體)到擷取虛拟OS資源(容器)到擷取虛拟運作時資源(FaaS),使用者對于資源的抽象層級以及粒度有了更高的要求。

袋鼠:雲原生底層系統探索和實踐

同時,雲原生業務天然伴随着對快速彈性的需求以及短時運作等特征,會要求雲基礎設施提供在短時間内快速地提供資源的能力,并且能夠承受資源頻繁建立、銷毀的壓力。

傳統的雲服務向使用者提供的還是大粒度的資源(VM),使用者拿到資源之後,依然需要自己做資源的拆分以及抽象。同時,傳統雲服務依然有厚重的軟體分層,并為了相容傳統業務模型引入的大量複雜的功能,這與雲原生業務需求的輕量、彈性、精簡的模型是不比對的。使用老的底層架構去支撐雲原生場景,除了會給自身架構帶來巨大的流量沖擊之外,提供的服務效果也會大打折扣,甚至成為雲原生業務的瓶頸。

阿裡作為雲原生的積極踐行者,我們需要去思考,一個優秀的雲原生基礎底座應該擁有什麼樣的能力,如何才能打造一個新的底層系統。本文會介紹一下我們的思考以及探索。

首先,從雲原生場景特點出發,我們認為需要從3個次元對底層系統進行設計,分别是資源、執行單元、系統能力,隻有做到這3個層次的抽象才能夠完整的支撐雲原生業務。在此思考上,我們推出了袋鼠,打造出屬于阿裡的雲原生底層系統。

袋鼠:雲原生底層系統探索和實踐

在執行抽象層面,我們推出了推出了極緻輕量、阿裡雲安全沙箱(Alibaba Cloud Sandbox),實作

  • 雲上多租戶安全
  • 上層透明無感覺,原生容器體驗
  • 雲原生标準和生态相容、無縫對接

在實作上,我們采用硬體虛拟化技術隔離,更精簡輕量的實作減小攻擊面。同時我們也在建構enclave級的可信執行環境的支援。

在資源抽象方面,我們追求極緻的輕量,融合不同層次間的重複部分,精簡不需要的功能,實作極簡裝置模型,最小化核心等。通過這些輕量化實作,目前安全沙箱執行個體記憶體消耗小于2.5MB,啟動速度已經遠遠小于500ms,且單機并發建立速度達到了200個/s,已經可以比較好地滿足雲原生業務的快彈、高密等訴求。

在性能方面,我們也做了很多探索。雲原生場景,使用者更專注于應用邏輯,更多的技術棧内容下沉到基礎設施,服務邊界的上移。這樣就給底層系統更多的施展空間,因為原有一些分層邊界可以被打破,可以融合和垂直優化。在袋鼠系統中,我們基于不同層次融合的全棧優化思路實作高性能。

袋鼠:雲原生底層系統探索和實踐

基于以上思路,我們在Redis以及Dragonwell(阿裡雲JDK發行版)都進行了全棧優化的實踐探索,可以看到不錯的效果:Redis在袋鼠上的吞吐性能相比傳統VM場景性能提升超過1倍,Dragenwell在袋鼠上運作相比傳統VM場景能提升JVM的協程排程效率和降低CPU資源使用率(10%左右)。

袋鼠已經對接和支援多個阿裡雲雲原生産品,包括彈性容器執行個體ECI、容器服務ACK以及Serverless應用引擎SAE。

袋鼠:雲原生底層系統探索和實踐

雲原生不僅僅是上層應用開發、傳遞、運維的變化,同時也要求底層系統進行更新演進。雲原生時代大幕已經拉開,阿裡已經在全方面的建構雲原生能力,并結合自身業務的雲原生化進行大規模的實踐,會持續不斷的為阿裡雲使用者提供更多更好的雲原生産品和服務。

繼續閱讀