search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

Serverless:雲計算的未來趨勢

作為新興雲計算服務交付模式,雖然Serverless並沒有覆蓋所有場景,但它代表著未來的一種發展趨勢。在上半部分文章里,已經介紹了Serverless的概念,本文將介紹Serverless的工作原理,與非Serverless方案對比的不同特點,以及使用Serverless前需要了解的適用場景等。

Serverless如何工作?

以一個簡單請求為例,論壇網站需要對用戶上傳的圖片生成一個縮略圖,使用UCloud的通用計算(UGC)來實現該功能。

如上圖所示,使用UGC實現這一功能操作步驟如下:

  • 用戶將縮略圖演算法代碼打包推送到UGC演算法倉庫中;
  • 用戶從UFile中讀取原始圖片作為輸入數據,調用UGC SubmitTask API,指定縮略圖演算法;
  • UGC平台執行縮略圖轉換演算法,將轉換后的縮略圖返回給用戶;
  • 用戶將得到的結果縮略圖存儲到UFile中。

整個過程中,開發者只需要將縮略圖演算法實現函數代碼鏡像提交到UGC演算法倉庫中,然後調用UGC的提交任務API,輸入源圖片數據,即可獲得計算結果。

從這一過程可以總結出:使用Serverless,開發者無需考慮伺服器細節,只要負責編寫發生某些事件后所需執行的代碼即可;雲供應商將負責提供用於運行這些代碼的伺服器,並在必要時對伺服器進行縮放;執行完畢后,承擔這些功能的容器會立刻停用,用戶僅需為運行代碼過程中所消耗的資源付費。這種模式也被稱作函數即服務(Function-as-a-Service,FaaS)。

與非Serverless方案對比

上述場景如果使用非Serverless方案,基本架構如下:

該方案需要維護一組UHost服務集群,伺服器中部署圖片縮略轉換程序。UHost的服務程序先從UFile中讀取源圖片,使用圖形庫將其轉換成縮略圖並再存回UFile中。相比前述Serverless方案,有以下幾點不同:

一、開發者需要關心伺服器端程序開發設計,將圖片處理程序部署成服務端程序,購置伺服器部署並運維管理這批UHost伺服器。而使用UGC,開發者無需關注伺服器端,只需要將圖形庫函數提交到UGC演算法倉庫中,調用UGC API完成計算任務即可。

二、UHost集群無法為突發流量自動伸縮擴容,需要運維工程師手動購置更多UHost並部署上線擴容。但UGC能根據突發流量自動伸縮,運行更多函數容器。

三、UHost伺服器只要運行就必須為之付費,無論請求量和負載高低。UGC只需要為實際調用次數和函數實際執行時間付費,真正實現了按需分配付費。

Serverless相比PaaS的特點

相比PaaS,Serverless具備以下幾方面優勢:

一、開發者無需關注伺服器程序設計、部署和運維管理,開代碼重心從此轉移到調用方而非伺服器端。

二、更精細粒度的計費模式,真正實現了按需付費(Pay as you go)。使用PaaS託管應用,無論訪問量或負載高低,只要將應用部署上去就都需計費;而使用Serverless,用戶只需為函數真正調用到的次數和執行時間付費。

了解Serverless適用場景

Serverless平台運行代碼函數的片段,而非整個程序,例如生成縮略圖場景中,UGC僅運行用圖形庫處理圖片這段代碼。

代碼必須做徹底的無狀態改造。Serverless平台會自動為突發流量擴展運行函數代碼所需要的容器,但用戶代碼中無法得知其容器的部署環境情況。兩次Serverless調用必須是非耦合無關聯的。

用戶無需關注水平擴展,Serverless平台會自動根據調用量擴展運行代碼所需要的容器,輕鬆做到高併發調用。

只需要上傳代碼文件或者代碼容器鏡像即可完成應用部署。

代碼運行的生命周期非常短暫,通常Serverless服務商會限制代碼的最大運行時間,例如AWS Lambda為5分鐘。

每次Serverless調用,Serverless平台都會啟動容器來運行對應代碼,調用結束后將容器銷毀,因為容器創建存在一定開銷,所以Serverless不太適合對延遲要求極其苛刻的場景。

不是「銀彈」

雖然Serveless架構在某些場景下擁有明顯優勢,但它不是解決一切架構問題的靈丹妙藥,更不是傳統架構的革命者和替代者。從架構上來說,它更像是一種粘合劑,以下是部分常見不適用Serverless的場景。

Serverless平台需要為每次FaaS調用創建一個容器運行對應代碼。前面提到過,由於創建容器並初始化代碼運行環境存在一定程度的開銷和延時(通常在10ms級),因此Serverless架構難以勝任對延遲要求非常苛刻的場景。

同樣的,由於啟動容器進程開銷較高,Serverless架構難以應對非常高的併發請求場景。通常雲服務商會對用戶的併發調用數做限制,比如AWS Lambda是1000。

通常FaaS平台會對代碼運行時間做最大時長限制。如果代碼需要運行較長時間才能返回結果,就需要慎重考慮使用Serverless。

由於代碼容器在Serverless平台部署位置環境的不確定性,使用Serverless時,必須對代碼做無狀態改造,如果兩次調用存在關聯偶合,同樣請慎重考慮Serverless。

主流公有雲服務商Serverless產品

除了眾所周知的AWS Lambda,目前常見的Serverless產品還有UCloud的通用計算UGC

UCloud通用計算UGC具備以下特性:

1. 用戶無需關心計算資源的交付部署,以用戶演算法代碼為中心;計算資源服務化,用戶通過API使用計算資源。

2. 按需付費(Pay As You Go),用戶僅需為實際消耗的計算資源付費。

3. 提供十萬核級的海量計算資源,輕鬆支持高併發計算任務請求,自動實現資源分配和擴展。

4. 具備高可用和跨可用區自動容災能力。

作為UCloud研發的分散式大規模并行計算服務,UGC能夠充分利用UCloud多個區域內的多個可用區計算資源,提供基於UCloud雲平台的高可用性和高併發性,同時滿足圖片處理、機器學習、大數據處理、生物數據分析等領域的計算需求。

Serverless是一種構建和管理基於微服務架構的完整流程,代表無伺服器計算技術崛起,是雲計算未來發展重點方向之一。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦