編者按
本文整理自 Johann Schleier-Smith 在 ServerlessDays China 的演講,是來自加州大學伯克利分校計算機科學 Riselab 團隊的研究成果,

ServerlessDays 是由全球 Serverless 開發者發起的國際技識訓議,2020 年由騰訊云 Serverless 團隊引入中國,并承辦了首屆 ServerlessDays China 會議,會上 Johann Schleier-Smith 代表伯克利計算機科學 Riselab 實驗室進行了主題發言,

接上篇《權威指南:Serverless 未來十年發展解讀 — 伯克利分校實驗室分享(上)》
Serverless 研究成果和亮點
第三個研究課題主要是 Serverless 檔案系統 —— 狀態性方面的優化,也是非常有價值的一個方向,
下面的圖可以解釋當前 Serverless 計算的狀態共享/存盤模式,當前有兩個層面,在計算層,主要通過 FaaS 提供服務,其特點是實體之間相互隔離,并且只有短暫的狀態性,短暫的狀態性指的是 FaaS 服務運行完畢后,實體銷毀,狀態也隨之銷毀,如果希望永久存盤,則需要持續的寫入到存盤層(例如物件存盤、K-V 存盤等)即 BaaS 服務中,實作狀態資訊的長期存盤和共享,

但當前這樣的模式面臨兩個主要的問題:(26:31)
一方面是延遲問題,也是許多 BaaS 服務目前存在的問題;另一方面,物件存盤或者 K-V 存盤是通過 API 進行服務的,并不能感知到底層的存盤情況,因此在開發應用或遷移時難以信任這些存盤資源(改變了以往的開發使用方式),所以我們的訴求很簡單,是否可以提供類似本地磁盤一樣的存盤能力,區別只是在云端呢?

這就是 Serverless 云函式檔案系統(CFFS, Cloud Function File System)所要提供的能力,該檔案系統有以下幾個特點:
- 基于標準 POSIX API 的檔案系統,提供持久化的存盤能力,
- CFFS 提供了透明傳輸機制,也就是在函式啟動時,CFFS 也隨之啟動一個傳輸;而當函式銷毀時,這個傳輸會被提交,這樣做可以獲取到函式執行程序中的許多狀態資訊,
- 雖然通常情況下傳輸會對性能有影響,但如果能夠積極利用本地狀態和快取,這種方式相比傳統的檔案存盤系統,對性能有很好的提升,

下面是 CFFS 的架構圖,可以看出 CFFS 在云服務商的 FaaS 環境中運行,在前端通過標準的 POSIX API 進行呼叫,后端的存盤系統則利用快取等,專為云函式 FaaS 設計并提供服務,

參考文獻:A File System for
Serverless Computing
第四個研究課題 Cloudburst 也是致力于解決 Serverless 中狀態問題的專案, Cloudburst 更側重于怎樣將 Serverless 應用在狀態敏感、延時敏感的應用場景中,例如社交網路、游戲、機器學習預測等,
Cloudburst 主要基于 Python 環境,能夠低延遲的獲取共享可變狀態(shared mutable state),和 CFFS 類似, Cloudburst 也在函式執行器中利用了資料快取來提升性能,但和 CFFS 不同的是,Cloudburst 可以保證因果一致性(Causal Consistency)來達到更好的性能,

實驗結果上也表明 Cloudburst 有很強的性能優勢,在相同條件下,用了 DynamoDB(K-V 資料庫)服務的 Lambda 函式約有 239 ms 的延遲,但用 Cloudburst 的延遲低于 10 ms,

參考文獻:
- hydro-project/cloudburst
- Cloudburst: Stateful Functions-as-a-Service
最后一個研究課題是 Serverless 資料中心,當我們思考服務器的組成時,一般會想到 CPU,記憶體,有時候還有 GPU 和硬碟這些基本硬體,而千千萬萬這些硬體組合在一起,之后進行網路連接,就成了資料中心,像個人電腦、服務器集群等都是通過這樣的方式構建的,

但是從應用層的角度,這樣的組合方式并不是唯一的,所以有一種新的概念叫做分布式集群(distributed datecenter),也叫 Warehouse-scale computer,思路是將同型別的硬體元素(例如 CPU、內容)組合在一起,當應用用到對應的資源時,例如需要 GPU 加速時,才會分配對應的資源,同理,可以用在硬碟或者一些自定義的加速器上面,這個概念類似于將一個資料中心看做一臺計算機,來提升資源的利用率,

針對 Warehouse-scale computer 的硬體開發已經在持續進行中了,因此 Serverless 也應該考慮下在這種集群模式下,怎樣適配和使用這種集群模式,而且這也將對當前針對單機的應用開發模式做出改變,
參考文獻:
- FireBox: A Hardware Building Block for 2020 Warehouse-Scale Computers
- FireBox: A Hardware Building Block for the 2020 WSC
Serverless 方向預測
接下來,我將闡述下 Berkeley 對 Serverless 計算未來方向的預測,早在 2009 年,Berkeley 就對云計算的未來做過一次預測,回看當時的分析,發現有些預測是正確的,例如無限大的資源池,無需為前期使用付費等,同時,有一些預測并不那么準確,因為當時的我們并沒有看到云計算將進入第二階段,即 Serverless 階段,

以下是我們對 Serverless 計算的預測:
-
特定應用場景及通用場景將會成為使用 Serverless 計算的主流,如下圖所示,云服務商負責的是粉色區域的部分,而用戶只關心粉色區域的上層,在特定應用場景下,你可以在彈性伸縮的平臺中實作特定的操作,例如寫資料庫、實時資料佇列、或者機器學習等,這些場景中,用戶業務代碼需要在遵循平臺限制,例如運行環境、運行時長、沒有 GPU 加速等,當然這些限制也會隨著技術成熟而逐步放寬,從而更好地支持這些場景,
-
另一種則是更通用的 Serverless 架構,在這種場景下,你的 FaaS 函式會被其他 BaaS 服務所拓展,例如 Starburst、快取等服務;并且有物件存盤或檔案存盤可以用于長期存盤狀態資訊,之后,在此基礎上,用戶可以自定義一些軟體服務,例如提供 SQL 的能力等,并且將對應的應用運行在上面,從而實作流資料處理、機器學習等各種場景,

通用的 Serverless 幾乎能夠支持任何應用場景,從底層架構上來看,所有能運行在服務器上的場景,都可以被視為通用 Serverless 場景支持,

- 我們認為在未來,Serverless 架構比服務器在成本上會更有競爭力,當你用了 serverless 架構時,就已經獲得了高可靠,彈性擴縮容的能力,此外,Serverless 的計費模式會更加精確,資源利用率也將逐步提升,確保做到真正的按需使用和付費,因此相比預留資源,在價格上會更有競爭力,更多的人也會因此選擇 Serverless 架構,

- 此外,云服務商會針對機器學習場景做優化,包括性能、效率和可靠性等方面,云服務商會提供一些類似作業流調度,環境配置等能力來實作該場景的支持(例如預置記憶體),通過這些上下游能力,也可以進一步幫助通用場景下的平臺性能得到提升,

- 最后,是各類硬體方面的發展,當前云計算已經強依賴 X86 架構,但 Serverless 可以考慮引入新的架構,從而讓用戶或云服務商自行選擇最適合的硬體來處理任務,從而實作更高的利用率和更強的性能,

總結 Summary
首先,我們認為 Serverless 計算是云計算的下一個階段,而 Serverless 最重要的三個特征是:隱藏了服務器的復雜概念、按需付費和彈性伸縮,此外 Serverless 的實作是由 FaaS 和 BaaS 共同組成的(參考上面的經典案例),直觀來說,Serverless 帶來的轉變就像租車到打車一樣,
此外,還分享了幾個當前學術界針對 Serverless 的研究方向,包括效率提升(性能、可用性等)、具體應用的抽象(例如機器學習,資料處理等),和通用層面的抽象(讓 Serverless 支持更加通用的場景),
Serverless 計算可能會改變我們對計算機的看法,擺脫了本機硬體的限制,你可以直接從云端獲取無限的資源,隨取隨用,

One More Thing
立即體驗騰訊云 Serverless Demo,領取 Serverless 新用戶禮包 ?? serverless/start
歡迎訪問:Serverless 中文網!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/182479.html
標籤:其他
