溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

從函數(shù)計(jì)算架構(gòu)看 Serverless 的演進(jìn)與思考

發(fā)布時(shí)間:2020-05-31 20:27:41 來(lái)源:網(wǎng)絡(luò) 閱讀:397 作者:阿里系統(tǒng)軟件技術(shù) 欄目:云計(jì)算

作者?|?楊皓然? 阿里巴巴高級(jí)技術(shù)專家

導(dǎo)讀:云計(jì)算之所以能夠成為 DT 時(shí)代顛覆性力量,是因?yàn)槠浔举|(zhì)是打破傳統(tǒng)架構(gòu)模式、降低成本并簡(jiǎn)化體系結(jié)構(gòu),用全新的思維更好的滿足了用戶需求。而無(wú)服務(wù)器計(jì)算(Serverless Computing)作為這個(gè)巨大市場(chǎng)的下一個(gè)階段的進(jìn)化產(chǎn)物,將真正幫助企業(yè)實(shí)現(xiàn)只專注于業(yè)務(wù)和構(gòu)建應(yīng)用程序,而不必?fù)?dān)心 IT 基礎(chǔ)設(shè)施,這也將成為云服務(wù)商未來(lái)競(jìng)爭(zhēng)的關(guān)鍵。

什么是無(wú)服務(wù)器計(jì)算

云原生計(jì)算基金會(huì)(Cloud Native Computing Foundation, CNCF)對(duì)無(wú)服務(wù)器計(jì)算作了如下定義:

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.

無(wú)服務(wù)器計(jì)算是指開(kāi)發(fā)者在構(gòu)建和運(yùn)行應(yīng)用時(shí)無(wú)需管理服務(wù)器等基礎(chǔ)設(shè)施。應(yīng)用被解耦為細(xì)粒度的函數(shù),函數(shù)是部署和運(yùn)行的基本單位;用戶只為實(shí)際使用的資源付費(fèi)??梢?jiàn),serverless 計(jì)算能夠幫助應(yīng)用開(kāi)發(fā)者擺脫服務(wù)器等底層基礎(chǔ)設(shè)施管理的負(fù)擔(dān),專注于業(yè)務(wù)層的創(chuàng)新。

從函數(shù)計(jì)算架構(gòu)看 Serverless 的演進(jìn)與思考
圖 1 - 無(wú)服務(wù)器計(jì)算的特點(diǎn)

無(wú)服務(wù)器計(jì)算的發(fā)展歷史

實(shí)際上,Serverless 不是一個(gè)新概念。計(jì)算、存儲(chǔ)等領(lǐng)域的很多服務(wù)都是 serverless 的模式。例如阿里云推出的第一個(gè)云服務(wù),對(duì)象存儲(chǔ)(OSS),就是 serverless 形態(tài)的存儲(chǔ)服務(wù)。用戶不需要關(guān)心數(shù)據(jù)是如何存儲(chǔ)在底層服務(wù)器上,只為實(shí)際使用的存儲(chǔ)資源付費(fèi)。

統(tǒng)計(jì)數(shù)據(jù)表明,近年來(lái),各個(gè)云服務(wù)商推出的新服務(wù)/新功能,超過(guò) 70% 都是 serverless 形態(tài)。隨著云端 serverless 類型的服務(wù)種類越來(lái)越豐富,用戶能夠快速使用多種服務(wù)構(gòu)建彈性高可用的云原生應(yīng)用。因此,serverless 計(jì)算正變得越來(lái)越流行。

從函數(shù)計(jì)算架構(gòu)看 Serverless 的演進(jìn)與思考
圖 2 – 無(wú)服務(wù)器計(jì)算已經(jīng)無(wú)處不在

從函數(shù)計(jì)算架構(gòu)看無(wú)服務(wù)器計(jì)算的特性

在 serverless 計(jì)算中,平臺(tái)服務(wù)接管了底層基礎(chǔ)設(shè)施的管理,因此平臺(tái)服務(wù)必須處理好容錯(cuò)和資源伸縮等問(wèn)題,才能充分發(fā)揮 serverless 計(jì)算的能力。

從阿里云函數(shù)計(jì)算架構(gòu)圖不難看出:API 服務(wù)層完成身份驗(yàn)證、元數(shù)據(jù)的讀寫等功能。

  • 同步調(diào)用函數(shù)時(shí),API 服務(wù)模塊從資源調(diào)度模塊獲取可用的函數(shù)執(zhí)行引擎并發(fā)送請(qǐng)求,最后取回結(jié)果;
  • 異步調(diào)用函數(shù)時(shí),則將事件寫入到消息隊(duì)列后即返回。由事件分發(fā)模塊分發(fā)事件,整個(gè)流程和同步調(diào)用類似。

從函數(shù)計(jì)算架構(gòu)看 Serverless 的演進(jìn)與思考
圖 3 - 阿里云函數(shù)計(jì)算架構(gòu)

實(shí)時(shí)彈性伸縮是函數(shù)計(jì)算的核心優(yōu)勢(shì),當(dāng)用戶負(fù)載出現(xiàn)波峰時(shí),系統(tǒng)能實(shí)時(shí)擴(kuò)張資源,平滑應(yīng)對(duì)峰值訪問(wèn)。以異步事件處理為例,整個(gè)處理流程分為三步:

  1. 事件寫入函數(shù)計(jì)算的事件隊(duì)列;
  2. 事件分發(fā)器從隊(duì)列中讀取事件,并調(diào)用對(duì)應(yīng)的函數(shù)處理事件;
  3. 用戶函數(shù)處理事件。

從函數(shù)計(jì)算架構(gòu)看 Serverless 的演進(jìn)與思考
圖 4 - 函數(shù)計(jì)算實(shí)時(shí)伸縮

函數(shù)計(jì)算系統(tǒng)會(huì)監(jiān)控用戶的負(fù)載變化,各組件均能夠根據(jù)用戶負(fù)載動(dòng)態(tài)伸縮。如上圖所示,當(dāng)用戶 A 的事件產(chǎn)生速率變大時(shí),系統(tǒng)會(huì)自動(dòng)在每個(gè)環(huán)節(jié)給 A 分配更多的資源,以匹配事件處理的能力。

函數(shù)計(jì)算采用多級(jí)資源調(diào)度策略,系統(tǒng)會(huì)根據(jù)用戶負(fù)載和資源池水位預(yù)判需求,提前準(zhǔn)備好計(jì)算資源。依托于阿里云飛天分布式系統(tǒng)平臺(tái)多年的技術(shù)積累,在調(diào)度的實(shí)時(shí)性和準(zhǔn)確性上取得了很好的平衡,具備毫秒級(jí)彈性伸縮的能力。

無(wú)服務(wù)器計(jì)算的典型應(yīng)用場(chǎng)景

借助函數(shù)計(jì)算,用戶幾乎可以構(gòu)建任何類型的應(yīng)用程序或后端服務(wù),包括 Web 應(yīng)用后端服務(wù),大規(guī)模文件處理,數(shù)據(jù)實(shí)時(shí)流式處理等等。

例如借助對(duì)象存儲(chǔ)和函數(shù)計(jì)算的集成,用戶只需要編寫函數(shù)處理單個(gè)視頻。當(dāng)有大量視頻文件被上傳到對(duì)象存儲(chǔ)服務(wù)后,會(huì)自動(dòng)觸發(fā)多個(gè)函數(shù)實(shí)例并發(fā)處理。

從函數(shù)計(jì)算架構(gòu)看 Serverless 的演進(jìn)與思考
圖 5 - Serverless 視頻轉(zhuǎn)碼服務(wù)

使用函數(shù)計(jì)算的 HTTP 觸發(fā)器,用戶只需要編寫函數(shù)處理單個(gè)請(qǐng)求。當(dāng) TPS 升高時(shí),函數(shù)計(jì)算會(huì)自動(dòng)擴(kuò)容計(jì)算資源執(zhí)行多個(gè)函數(shù)實(shí)例處理請(qǐng)求。

從函數(shù)計(jì)算架構(gòu)看 Serverless 的演進(jìn)與思考
圖 6 - Serverless 網(wǎng)站后端服務(wù)

無(wú)服務(wù)器計(jì)算對(duì)用戶的價(jià)值

自阿里云函數(shù)計(jì)算上線以來(lái),被開(kāi)發(fā)者廣泛的用于大規(guī)模多媒體數(shù)據(jù)并行處理、日志/物聯(lián)網(wǎng)數(shù)據(jù)的流式處理以及網(wǎng)站后端服務(wù)等場(chǎng)景中。從實(shí)際使用情況來(lái)看,serverless 計(jì)算在工程效率、可靠性、性能、成本和安全性等方面給用戶帶來(lái)了巨大的價(jià)值。

  • 工程效率:借助函數(shù)計(jì)算和其他云端服務(wù)的集成,用戶只需要編寫少量代碼就可以串聯(lián)多個(gè)服務(wù)完成復(fù)雜的功能。用戶不需要負(fù)擔(dān)服務(wù)器配置/升級(jí),資源擴(kuò)容/縮容等繁瑣工作,運(yùn)維成本大幅降低;

  • 可靠性:用戶不需要購(gòu)買或維護(hù)任何的服務(wù)器,不需要安裝任何的軟件,借助函數(shù)計(jì)算,系統(tǒng)自動(dòng)處理基礎(chǔ)設(shè)施層各種錯(cuò)誤,減少宕機(jī)、網(wǎng)絡(luò)中斷等危機(jī)情況發(fā)生,提升系統(tǒng)可靠性;

  • 彈性伸縮:應(yīng)用程序所需計(jì)算資源的伸縮能在毫秒級(jí)別由 serverless 計(jì)算平臺(tái)自動(dòng)完成,用戶不需要負(fù)責(zé)增減服務(wù)器的數(shù)量;

  • 低成本:不需要對(duì)計(jì)算和存儲(chǔ)之類的服務(wù)預(yù)留容量。如果代碼沒(méi)有運(yùn)行,就不會(huì)收費(fèi)。研究數(shù)據(jù)表明,70% 以上的服務(wù)器資源并未得到充分利用,函數(shù)計(jì)算采用全新模式,資源使用率達(dá) 100%,實(shí)踐結(jié)果顯示,通常能節(jié)省 10%-90% 的成本。

也就是說(shuō),借助函數(shù)計(jì)算意味著開(kāi)發(fā)者可以專注在產(chǎn)品代碼上,而無(wú)須管理和操作云端或本地的服務(wù)器或運(yùn)行時(shí)。生產(chǎn)實(shí)踐中,用戶用幾百行代碼就可以實(shí)現(xiàn)一個(gè)規(guī)模上億、日調(diào)用次數(shù)幾十億次的圖片處理服務(wù)。

從云計(jì)算 1.0 時(shí)代到 2.0 時(shí)代

云計(jì)算 1.0 時(shí)代,基礎(chǔ)設(shè)施的云化(IaaS)為用戶提供了和傳統(tǒng) IT 環(huán)境近乎一致的體驗(yàn),讓用戶能把應(yīng)用無(wú)縫遷移到云端。當(dāng)人人都能獲取所需的計(jì)算資源后,如何更高效的管理和使用計(jì)算資源,函數(shù)即服務(wù)(FaaS)則是云計(jì)算 2.0 時(shí)代最為重要的問(wèn)題。阿里云函數(shù)計(jì)算這樣的無(wú)服務(wù)器計(jì)算服務(wù),能夠從工程效率、可靠性、性能、成本和安全性等方面給用戶帶來(lái)巨大的價(jià)值,為廣大開(kāi)發(fā)者打開(kāi)了一扇通往美麗新世界的大門。

10 月 9 日,阿里云宣布正式推出函數(shù)計(jì)算 2.0 解決方案,為用戶提供更具性價(jià)比和更高效開(kāi)發(fā)運(yùn)維體驗(yàn)的 Serverless 計(jì)算服務(wù)。函數(shù)計(jì)算 2.0 提供了豐富的計(jì)費(fèi)方式,全新的實(shí)例類型、靈活的自定義運(yùn)行時(shí)、全方位升級(jí)的工具鏈。

從函數(shù)計(jì)算架構(gòu)看 Serverless 的演進(jìn)與思考
圖 7 -?預(yù)付費(fèi)和后付費(fèi)

函數(shù)計(jì)算 2.0?通過(guò)一系列創(chuàng)新的功能,解決了當(dāng)前 Serverless 計(jì)算服務(wù)在成本、性能、應(yīng)用構(gòu)建等方面的痛點(diǎn),極具競(jìng)爭(zhēng)力。

全球首家推出預(yù)付費(fèi)(包年包月)的計(jì)費(fèi)模式。相較于后付費(fèi),預(yù)付費(fèi)單價(jià)降低 70% 以上。應(yīng)用所需資源中穩(wěn)定部分使用預(yù)付費(fèi)模式,單價(jià)低;彈性部分使用后付費(fèi),資源利用率高。結(jié)合預(yù)付費(fèi)和后付費(fèi),用戶能夠顯著降低成本。

從函數(shù)計(jì)算架構(gòu)看 Serverless 的演進(jìn)與思考
圖 8 -?預(yù)留實(shí)例和按量實(shí)例

更重要的是,函數(shù)計(jì)算 2.0 新增預(yù)留實(shí)例類型,允許用戶自行管理實(shí)例的申請(qǐng)和釋放。

通過(guò)預(yù)留實(shí)例,用戶能夠提前預(yù)熱函數(shù)或者長(zhǎng)期保持常駐實(shí)例,杜絕因?yàn)閷?shí)例啟動(dòng)帶來(lái)的請(qǐng)求延遲。當(dāng)負(fù)載超過(guò)預(yù)留實(shí)例處理能力,系統(tǒng)會(huì)自動(dòng)擴(kuò)容,使用按量實(shí)例處理請(qǐng)求。同時(shí)函數(shù)計(jì)算提供了詳細(xì)的實(shí)例使用指標(biāo),幫助用戶輕松預(yù)留合理數(shù)目的實(shí)例。

從函數(shù)計(jì)算架構(gòu)看 Serverless 的演進(jìn)與思考
圖 9 - 用戶體驗(yàn)

用戶在函數(shù)計(jì)算平臺(tái)上構(gòu)建彈性高可用的云原生應(yīng)用,如果沒(méi)有好用的開(kāi)發(fā)、調(diào)試、運(yùn)維工具,使用體驗(yàn)將大打折扣。

函數(shù)計(jì)算 2.0 大幅增強(qiáng)了 Serverless 應(yīng)用構(gòu)建、運(yùn)維等方面的用戶體驗(yàn)。用戶可以在自己的開(kāi)發(fā)機(jī)本地環(huán)境中創(chuàng)建和云端運(yùn)行環(huán)境一致的沙盒,進(jìn)行依賴包安裝、斷點(diǎn)調(diào)試等操作。

函數(shù)計(jì)算 2.0 也提供了 VSCode,Intellij Idea,PyCharm 等流行開(kāi)發(fā)工具的插件,通過(guò)圖形用戶界面的交互方式,進(jìn)一步降低了工具的使用門檻。

“ 阿里巴巴云×××icloudnative×××erverless、容器、Service Mesh等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢(shì)、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開(kāi)發(fā)×××

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI