从函数计算架构看 Serverless 的演进与思考
作者?|?楊皓然? 阿里巴巴高級技術(shù)專家
導讀:云計算之所以能夠成為 DT 時代顛覆性力量,是因為其本質(zhì)是打破傳統(tǒng)架構(gòu)模式、降低成本并簡化體系結(jié)構(gòu),用全新的思維更好的滿足了用戶需求。而無服務器計算(Serverless Computing)作為這個巨大市場的下一個階段的進化產(chǎn)物,將真正幫助企業(yè)實現(xiàn)只專注于業(yè)務和構(gòu)建應用程序,而不必擔心 IT 基礎(chǔ)設(shè)施,這也將成為云服務商未來競爭的關(guān)鍵。
什么是無服務器計算
云原生計算基金會(Cloud Native Computing Foundation, CNCF)對無服務器計算作了如下定義:
Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.
無服務器計算是指開發(fā)者在構(gòu)建和運行應用時無需管理服務器等基礎(chǔ)設(shè)施。應用被解耦為細粒度的函數(shù),函數(shù)是部署和運行的基本單位;用戶只為實際使用的資源付費。可見,serverless 計算能夠幫助應用開發(fā)者擺脫服務器等底層基礎(chǔ)設(shè)施管理的負擔,專注于業(yè)務層的創(chuàng)新。
圖 1 - 無服務器計算的特點
無服務器計算的發(fā)展歷史
實際上,Serverless 不是一個新概念。計算、存儲等領(lǐng)域的很多服務都是 serverless 的模式。例如阿里云推出的第一個云服務,對象存儲(OSS),就是 serverless 形態(tài)的存儲服務。用戶不需要關(guān)心數(shù)據(jù)是如何存儲在底層服務器上,只為實際使用的存儲資源付費。
統(tǒng)計數(shù)據(jù)表明,近年來,各個云服務商推出的新服務/新功能,超過 70% 都是 serverless 形態(tài)。隨著云端 serverless 類型的服務種類越來越豐富,用戶能夠快速使用多種服務構(gòu)建彈性高可用的云原生應用。因此,serverless 計算正變得越來越流行。
圖 2 – 無服務器計算已經(jīng)無處不在
從函數(shù)計算架構(gòu)看無服務器計算的特性
在 serverless 計算中,平臺服務接管了底層基礎(chǔ)設(shè)施的管理,因此平臺服務必須處理好容錯和資源伸縮等問題,才能充分發(fā)揮 serverless 計算的能力。
從阿里云函數(shù)計算架構(gòu)圖不難看出:API 服務層完成身份驗證、元數(shù)據(jù)的讀寫等功能。
- 同步調(diào)用函數(shù)時,API 服務模塊從資源調(diào)度模塊獲取可用的函數(shù)執(zhí)行引擎并發(fā)送請求,最后取回結(jié)果;
- 異步調(diào)用函數(shù)時,則將事件寫入到消息隊列后即返回。由事件分發(fā)模塊分發(fā)事件,整個流程和同步調(diào)用類似。
圖 3 - 阿里云函數(shù)計算架構(gòu)
實時彈性伸縮是函數(shù)計算的核心優(yōu)勢,當用戶負載出現(xiàn)波峰時,系統(tǒng)能實時擴張資源,平滑應對峰值訪問。以異步事件處理為例,整個處理流程分為三步:
圖 4 - 函數(shù)計算實時伸縮
函數(shù)計算系統(tǒng)會監(jiān)控用戶的負載變化,各組件均能夠根據(jù)用戶負載動態(tài)伸縮。如上圖所示,當用戶 A 的事件產(chǎn)生速率變大時,系統(tǒng)會自動在每個環(huán)節(jié)給 A 分配更多的資源,以匹配事件處理的能力。
函數(shù)計算采用多級資源調(diào)度策略,系統(tǒng)會根據(jù)用戶負載和資源池水位預判需求,提前準備好計算資源。依托于阿里云飛天分布式系統(tǒng)平臺多年的技術(shù)積累,在調(diào)度的實時性和準確性上取得了很好的平衡,具備毫秒級彈性伸縮的能力。
無服務器計算的典型應用場景
借助函數(shù)計算,用戶幾乎可以構(gòu)建任何類型的應用程序或后端服務,包括 Web 應用后端服務,大規(guī)模文件處理,數(shù)據(jù)實時流式處理等等。
例如借助對象存儲和函數(shù)計算的集成,用戶只需要編寫函數(shù)處理單個視頻。當有大量視頻文件被上傳到對象存儲服務后,會自動觸發(fā)多個函數(shù)實例并發(fā)處理。
圖 5 - Serverless 視頻轉(zhuǎn)碼服務
使用函數(shù)計算的 HTTP 觸發(fā)器,用戶只需要編寫函數(shù)處理單個請求。當 TPS 升高時,函數(shù)計算會自動擴容計算資源執(zhí)行多個函數(shù)實例處理請求。
圖 6 - Serverless 網(wǎng)站后端服務
無服務器計算對用戶的價值
自阿里云函數(shù)計算上線以來,被開發(fā)者廣泛的用于大規(guī)模多媒體數(shù)據(jù)并行處理、日志/物聯(lián)網(wǎng)數(shù)據(jù)的流式處理以及網(wǎng)站后端服務等場景中。從實際使用情況來看,serverless 計算在工程效率、可靠性、性能、成本和安全性等方面給用戶帶來了巨大的價值。
-
工程效率:借助函數(shù)計算和其他云端服務的集成,用戶只需要編寫少量代碼就可以串聯(lián)多個服務完成復雜的功能。用戶不需要負擔服務器配置/升級,資源擴容/縮容等繁瑣工作,運維成本大幅降低;
-
可靠性:用戶不需要購買或維護任何的服務器,不需要安裝任何的軟件,借助函數(shù)計算,系統(tǒng)自動處理基礎(chǔ)設(shè)施層各種錯誤,減少宕機、網(wǎng)絡(luò)中斷等危機情況發(fā)生,提升系統(tǒng)可靠性;
-
彈性伸縮:應用程序所需計算資源的伸縮能在毫秒級別由 serverless 計算平臺自動完成,用戶不需要負責增減服務器的數(shù)量;
-
低成本:不需要對計算和存儲之類的服務預留容量。如果代碼沒有運行,就不會收費。研究數(shù)據(jù)表明,70% 以上的服務器資源并未得到充分利用,函數(shù)計算采用全新模式,資源使用率達 100%,實踐結(jié)果顯示,通常能節(jié)省 10%-90% 的成本。
也就是說,借助函數(shù)計算意味著開發(fā)者可以專注在產(chǎn)品代碼上,而無須管理和操作云端或本地的服務器或運行時。生產(chǎn)實踐中,用戶用幾百行代碼就可以實現(xiàn)一個規(guī)模上億、日調(diào)用次數(shù)幾十億次的圖片處理服務。
從云計算 1.0 時代到 2.0 時代
云計算 1.0 時代,基礎(chǔ)設(shè)施的云化(IaaS)為用戶提供了和傳統(tǒng) IT 環(huán)境近乎一致的體驗,讓用戶能把應用無縫遷移到云端。當人人都能獲取所需的計算資源后,如何更高效的管理和使用計算資源,函數(shù)即服務(FaaS)則是云計算 2.0 時代最為重要的問題。阿里云函數(shù)計算這樣的無服務器計算服務,能夠從工程效率、可靠性、性能、成本和安全性等方面給用戶帶來巨大的價值,為廣大開發(fā)者打開了一扇通往美麗新世界的大門。
10 月 9 日,阿里云宣布正式推出函數(shù)計算 2.0 解決方案,為用戶提供更具性價比和更高效開發(fā)運維體驗的 Serverless 計算服務。函數(shù)計算 2.0 提供了豐富的計費方式,全新的實例類型、靈活的自定義運行時、全方位升級的工具鏈。
圖 7 -?預付費和后付費
函數(shù)計算 2.0?通過一系列創(chuàng)新的功能,解決了當前 Serverless 計算服務在成本、性能、應用構(gòu)建等方面的痛點,極具競爭力。
全球首家推出預付費(包年包月)的計費模式。相較于后付費,預付費單價降低 70% 以上。應用所需資源中穩(wěn)定部分使用預付費模式,單價低;彈性部分使用后付費,資源利用率高。結(jié)合預付費和后付費,用戶能夠顯著降低成本。
圖 8 -?預留實例和按量實例
更重要的是,函數(shù)計算 2.0 新增預留實例類型,允許用戶自行管理實例的申請和釋放。
通過預留實例,用戶能夠提前預熱函數(shù)或者長期保持常駐實例,杜絕因為實例啟動帶來的請求延遲。當負載超過預留實例處理能力,系統(tǒng)會自動擴容,使用按量實例處理請求。同時函數(shù)計算提供了詳細的實例使用指標,幫助用戶輕松預留合理數(shù)目的實例。
圖 9 - 用戶體驗
用戶在函數(shù)計算平臺上構(gòu)建彈性高可用的云原生應用,如果沒有好用的開發(fā)、調(diào)試、運維工具,使用體驗將大打折扣。
函數(shù)計算 2.0 大幅增強了 Serverless 應用構(gòu)建、運維等方面的用戶體驗。用戶可以在自己的開發(fā)機本地環(huán)境中創(chuàng)建和云端運行環(huán)境一致的沙盒,進行依賴包安裝、斷點調(diào)試等操作。
函數(shù)計算 2.0 也提供了 VSCode,Intellij Idea,PyCharm 等流行開發(fā)工具的插件,通過圖形用戶界面的交互方式,進一步降低了工具的使用門檻。
歡迎加入函數(shù)計算群
“ 阿里巴巴云原生微信公眾號(ID:Alicloudnative)關(guān)注微服務、Serverless、容器、Service Mesh等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢、云原生大規(guī)模的落地實踐,做最懂云原生開發(fā)者的技術(shù)公眾號。”
總結(jié)
以上是生活随笔為你收集整理的从函数计算架构看 Serverless 的演进与思考的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面向云原生的混沌工程工具-ChaosBl
- 下一篇: 2019 年容器生态统计报告发布 | 云