科普 | 近距離了解木蘭開源社區項目——HCloud

項目簡介

如今,包括亞馬遜,谷歌和微軟在內的大多數雲提供商通常提供虛擬機(VM)作為計算資源。儘管這些公共雲共享相似的基礎架構,但它們為用戶提供了不同的服務質量標準和價格模型,並可能隨著資源用量而波動。雲際計算(JointCloud)可實現多個公有云之間的動態協作,以合理的價格為用戶提供更好的服務質量。與此同時,無服務計算服務變得越來越流行,並且已經得到了國內外主要雲廠商的支持。無服務計算允許用戶以函數為單位將其計算任務上傳到雲中。此後用戶無需考慮繁瑣的虛擬機管理工作,而是由雲根據實際請求創建函數實例,並動態處理傳入的請求。

HCloud是一個基於無服務計算模型實現的雲際計算平臺,它可以細粒度地為用戶管理多個雲的計算資源,以最優的性能、最實惠的價格為用戶提供無服務計算的服務。以函數為粒度使得HCloud能夠在雲之間靈活地遷移工作負載,從而帶來更好的服務質量和更低的價格。在HCloud中,用戶能夠管理的部分只有函數的管理與調用,而HCloud負責函數的運行態,隱藏多雲細節,提供統一服務。


核心功能介紹

一、統一的函數服務接口。用戶不用關心HCloud中到底有哪些雲,編寫的函數只要遵守HCloud的統一格式,使用HCloud提供的統一接口即可。

二、動態資源調度。無服務計算的核心理念之一就是按需調度,按量付費。HCloud裡的大部分資源都會根據請求的數量進行擴容縮容,以減少不必要的開銷。這主要依靠Manager來實現,Manager會監控雲內所有資源的使用狀況,在資源使用率較高時分配更多資源,在使用率較低時釋放一些資源。在無服務計算中,資源的粒度很小,分配釋放都很快,這也是Manager能夠快速響應調整,儘量不影響性能表現的前提。

三、多雲後端,跨雲遷移。對用戶來說,他可以在幾乎無感知的狀態下,使用到多個雲的資源。Client會結合函數使用狀況、各個雲的資源使用狀況,調整流量的分配,目標是讓用戶側的性能更優,HCloud整體的費用更低。這也要求用戶的服務能夠跨雲遷移。對於無狀態的應用,這一點比較好實現。對於有狀態的應用,HCloud提供多種存儲方式供用戶在不同場景下使用。比如,需要支持在任何時刻都可以切換機器執行的函數,就使用跨雲存儲,以保證函數遷移不受影響。在有限時間段支持遷移的函數,如數據來源是用戶側,中間數據存放在雲內存儲,不需要和其他應用共享,結果也直接返回給用戶。這類函數在中間數據產生之後,不支持換雲執行。但是兩個不同的請求,可以被分配給不同雲執行。也就是說,這類函數不能在運行時終止,但支持將後續的流量都轉移。

四、與公有云無服務計算結合。無服務計算的冷啟動時間是一個衡量服務質量的重要指標,除了使用虛擬機資源提供函數服務,保證較好的兼容性之外,HCloud也會使用公有云的無服務計算平臺來提升性能,主要有兩個場景。

(一)冷啟動:當某個函數被調用,聯合雲平臺先檢查是否有正在運行的函數實例如果有就交給函數實例處理,如果沒有就先轉發給公有云的無服務計算平臺處理,然後去啟動一個虛擬機上的函數實例。

(二)過量服務:當某個函數的調用量突然猛增,HCloud會增加函數實例來應對。這一步也有可能需要增加虛擬機的數量,然而虛擬機的啟動相對緩慢,為了掩蓋這一部分延時,HCloud也會嘗試將部分流量轉發給公有云的無服務計算平臺。


項目優勢特點

一、更細的資源粒度:無服務計算的單個資源是函數,幾乎不會需要考慮函數的熱遷移,如果函數足夠小巧,中止後重新啟動即可。同時,細粒度的資源提供了更多的調度可能,將一個傳統的應用進程拆分成多個函數後,就有可能運行在多個機器,乃至多個雲上,最後再組合成最終結果返回。

二、更少的細節暴露:對於用戶來說,傳統的雲服務器包含操作系統、網絡設置、運行狀態等細節,而無服務計算最簡化的情況下就只有函數編程語言是用戶所知的。而其他一些用戶不可見的部分,開發者就有了更多的實現空間,比如,網絡結構不需要滿足每一個機器之間都是聯通的,因為這些機器對用戶來說並不可見,只要它們能協作完成函數服務即可。

三、寬泛的應用支持:選取FaaS作為唯一資源使得資源多樣性不足,但FaaS有其獨特性:它支持用戶自定義代碼,並不像SaaS一般提供特定應用。聯合雲Serverless平臺有潛力支撐各種應用,包括圖片處理、網頁服務、音視頻處理、API集成等。


項目原型實現

HCloud實現了四個主要部分:Manager、Worker、Storage Center以及Client。

科普 | 近距離了解木蘭開源社區項目——HCloud

如圖所示,用戶通過Client Library來管理函數,調用函數。Manager負責管理某個雲的資源,接收請求後,轉發給Worker處理,當資源不足時,Manager還會動態請求更多的資源來應對流量高峰。

Client Library封裝了多雲調度的策略,它會從Manager處獲取各個雲的資源統計數據,包括資源餘量、資源價格等。此外,它還會測量到各個雲的延遲,評估各個雲的性能。綜合上述信息,再根據用戶設定的策略方案,動態地轉發每個函數請求到合適的Manager。


項目初步評測的性能

我們基於Python的PIL實現了一個對圖片進行裁剪、旋轉、加水印等操作的無服務計算函數。在此初步測試中,我們模擬三個不同的私有云,在其上運行HCloud的組件。每個雲的資源限制不同,會隨著時間動態變化。總共設計了三種變化方式:

一、正弦,性能表現呈現規律性地波動,符合正弦曲線。

二、泊松分佈,性能參數滿足泊松分佈。

三、隨機,在一定範圍內隨機變化。

為了保證公平性,三種變化具有相同的期望值。因此,如果只選用其中一個雲,將會得到一個接近期望值的表現。

科普 | 近距離了解木蘭開源社區項目——HCloud

科普 | 近距離了解木蘭開源社區項目——HCloud

HCloud的Client會根據雲的性能表現來動態選擇一個雲使用,如圖所示,分別使用單個雲和動態選擇的平均延時有明顯差異。HCloud採用多雲架構,有更大資源餘量,能夠更好地應對性能波動。同時,Serverless是按量付費,不會因為要維護資源池而產生浪費。


【背景資料】

木蘭開源社區(https://mulanos.cn/)是2018年國家重點研發計劃“雲計算和大數據開源社區生態系統”項目重點成果,由中國電子技術標準化研究院牽頭,聯合北京大學、國防科大、聯想、騰訊雲,以及開源中國、北航、中科院軟件所、西南大學、華為、阿里雲、浪潮、新華三、中電標協、中科院東莞育成中心、湖南酷得共16家單位共同承擔。木蘭開源社區立足中國,面向國際,聯合匯聚國內開源生態圈相關方,共同打造國內開源生態,推動本土開源項目孵化,在推動培育開源貢獻文化的同時,與國內外各開源社區融合發展。


分享到:


相關文章: