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