隨着雲計算技術的深刻發展,無服務器架構正在興起。2019 年 2 月,加州大學伯克利分校發表了名爲《Cloud Programming Simplified: A Berkerley View on Serverless Computing》的論文,對 Serverless 的造成、現狀以及將來進行了全面的梳理和總結,指出 Serverless 即將成爲下一代雲服務的主流形態。值得一提的是,在 2009 年的 《Above the Clouds: A Berkeley View of Cloud Computing》 一文中,伯克利所預測的當時雲計算所面臨的挑戰將會被逐一解決,雲計算將會繁榮昌盛起來,現在已一一實現。html
Serverless Computing,顧名思義是無服務器計算,無服務器計算將用戶從繁瑣的底層設備管理和運維配置工做中解放出來,只需關心業務邏輯,這種模式極大地下降了研發門檻,提高業務構建效率,得到了大量開發者的青睞。git
儘管無服務器計算帶來了極其使人振奮的開發模式,但隨之而來的限制阻礙着開發者將更多的應用遷移到無服務器計算平臺。github
針對企業應用難以全面遷移至無服務器計算的問題,阿里雲進行了持續的探索和研究。阿里雲無服務器計算服務 函數計算(Function Compute) 爲以上問題交出了答卷!golang
函數計算 2.0 引入了豐富的資源類型,全新的計費方式,靈活的自定義運行環境和全方位升級的工具鏈,爲開發者消除遷移至函數計算的顧慮,爲應用的全面遷移掃清障礙!服務器
全新推出 預留實例 功能,支持按量實例和預留實例兩種實例類型。架構
按量實例是指函數實例的分配和釋放徹底由函數計算系統負責,有函數調用請求時,函數計算動態調度資源,爲用戶提供彈性可靠的執行環境。可是資源的動態調度不可避免地存在冷啓動延時,對於時延敏感的在線業務有必定影響。併發
預留實例將函數實例的分配和釋放徹底交由用戶管理。經過預留實例,用戶能提早預熱函數或者長期保持常駐實例,消除實例伸縮帶來的延時波動。less
根據業務場景,用戶既能夠單獨使用按量實例或預留實例,又能夠混合使用兩種實例。當混合使用按量和預留實例時,函數計算保證優先使用預留實例。當請求的併發度超過預留實例所能提供的併發度時,函數計算會動態調度按量實例,輕鬆應對業務的波峯波谷!運維
使用相同壓力對機器學習場景的 貓狗識別器 進行測試,使用預留實例與不使用預留實例的表現效果以下:機器學習
因爲機器學習的模型很大,冷啓動加載代碼包須要耗時 20s 左右。
只使用按量實例時,函數執行耗時有明顯毛刺。
使用預留實例,且請求所需實例數小於預留實例數時,函數執行時延相對平穩,基本維持在百毫秒內。
組合使用按量實例、預留實例,能夠有效保障應用的性能穩定。
函數計算提供了預付費和後付費兩種計量模式,幫助用戶在不一樣場景下得到顯著的成本優點。
預付費 是指用戶先判斷應用的資源需求,預先購買指定數量的資源消費券後再使用,單價相較於後付費下降 70%!後付費則是根據實際使用的資源按需付費。
建議開發者觀察應用的負載狀況,針對負載中穩定的部分使用預付費功能預購計算力,預付費計算力能夠抵扣實際使用的計算力,預付費計算力沒法抵扣的部分使用後付費計費。
靈活使用預付費、後付費計費方式,能夠大幅優化成本,節約上雲開銷。
下表介紹了預留實例的規格和訂價:
預留實例規格 | 計算力(CU) | 預付費單價(元/CU-秒) | 後付費單價(元/CU-秒) | 預付費單價(元/CU-小時) | 後付費單價(元/CU-小時) |
---|---|---|---|---|---|
0.67 vCPU,1024 MB 內存 | 1 | 0.00003167 | 0.00011108 | 0.114 | 0.4 |
1 vCPU, 1536 MB 內存 | 1.5 | 0.000047505 | 0.00016662 | 0.171 | 0.6 |
1.33 vCPU,2048 MB 內存 | 2 | 0.00006334 | 0.00022216 | 0.228 | 0.8 |
1.67 vCPU,2560 MB 內存 | 2.5 | 0.000079175 | 0.0002777 | 0.285 | 1 |
2 vCPU,3072 MB 內存 | 3 | 0.00009501 | 0.00033324 | 0.342 | 1.2 |
爲了協助開發者更好地開發、調試、部署無服務器應用,函數計算的工具鏈作了不少努力,但願在函數的開發部署過程當中兼有開發者以往的開發調試體驗。 工具鏈家族目前包含資源編排工具 Funcraft,圖形化開發調試工具 VSCode 插件 與集成開發環境 WebIDE 。
Funcraft 是函數計算的應用部署工具,能夠幫助用戶快速地構建基於函數計算的彈性高可用無服務器應用。
Aliyun Serverless VSCode Extension 是一款基於 VSCode 的開發調試工具,VSCode 插件是使用傳統開發工具開發者的好幫手。
WebIDE 是一個基於 H5 支持多語言的集成開發環境。已經與 函數計算控制檯 深度集成,提供與 VSCode 體驗一致的網頁版編輯器。
加強的 Funcraft ,便捷的 VSCode 插件,全新的控制檯 將有效解決用戶調試難,打包難,部署難的痛點,顯著提高應用開發和運維效率,大幅提升用戶體驗。
函數計算最新支持 Custom Runtime,徹底由用戶定義函數的運行環境。 用戶便可以基於自定義運行環境定製個性化語言的執行環境,例如函數計算官方推出的 基於 Custom Runtime 打造 golang runtime
又能夠將現有的 Web 應用不作任何改造,一鍵遷移至函數計算,輕鬆構建彈性高可用的 Serverless Web 應用。
函數計算拓展了單一雲服務的邊界,函數工做流拓展了函數計算的邊界 函數計算集成了13個雲服務,讓這些事件源的數據處理變得空前容易。用戶能夠利用事件觸發機制構建鬆耦合的分佈式應用。新發布的函數工做流讓用戶在 Serverless 的道路上更進一步,讓無狀態的函數也能夠構建有狀態的,長時間運行的,多步驟的複雜應用。函數工做流在編排函數的同時也能夠經過事件觸發和回調機制編排運行在任何地方的分佈式任務,觸達函數還沒有觸達之地,讓應用構建博採衆長。
函數計算 2.0 以用戶爲中心,持續不斷的優化性能、下降成本有效地解決了無服務器計算中難以免的性能毛刺,價格昂貴,遷移成本高等問題,有效提升用戶體驗,拓寬無服務器計算的使用場景,爲應用大規模遷移至無服務器計算掃清障礙!
至此,無服務器計算的前景更加明朗,Serverless Computing 開啓新的篇章!