????????Hi~各位讀者朋友們,感謝您閱讀本文,我是笠泱,本期簡單分享下Serverless。Serverless是一種云計算服務模式,為業務代碼提供運行環境及調度服務。開發者只需專注于編寫業務邏輯代碼,無需管理底層基礎設施(如服務器、存儲和網絡)。
什么是Serverless
????????“Serverless無服務器”術語最早出現在 2012 年,這一詞的出現意味著開發人員不再需要考慮那么多的物理容量或其他基礎設施資源管理責任,通過消除后端基礎設施的復雜性,讓開發人員可將注意力從服務器級別轉移到任務級別。
????????Serverless無服務器被廣泛關注,要追溯到亞馬遜云科技2014 年推出的 Amazon Lambda 服務,隨后各大廠商紛紛進入無服務器市場,Serverless逐漸被更多開發者所熟知,并逐漸成為一個發展“熱詞”。
Serverful架構
????????在傳統Serverful架構下,產品架構復雜度較高,并伴隨著固定成本的投入,運維成本高,開發效率低。
Serverless架構
????????相對于Serverful,Serverless可以讓業務人員無需關注服務器,僅聚焦于業務邏輯代碼,平臺為您準備好計算資源,可靠地運行任務,并通過彈性伸縮應對流量峰谷,只需為任務實際消耗的資源付費。
Serverless優勢
Serverless分類
????????各大云平臺的Serverless產品類型大同小異,以阿里云為例,主要分為函數計算(Function Compute,簡稱FC)和應用引擎 (Serverless App Engine,簡稱SAE)。
????????函數計算FC 是事件驅動的全托管計算服務。使用函數計算,您無需采購與管理服務器等基礎設施,只需編寫并上傳代碼或鏡像。函數計算為您準備好計算資源,可靠地運行任務,通過彈性伸縮應對流量峰谷,并提供日志查詢、性能監控和報警等功能。
????????應用引擎SAE 是一款零代碼改造、極簡易用、自適應彈性的應用全托管平臺。SAE能夠讓您免運維IaaS和K8s,秒級完成從源代碼、代碼包、Docker鏡像部署任意語言的在線應用(例如微服務、Job任務)到SAE,并自動伸縮實例按使用量計費,開箱即用日志、監控、負載均衡等配套能力。
計費方式
????????CU :全稱Cost Unit,單位為CU,是阿里云推出的一種計費單位,其他計費項的資源使用量可以轉換成CU使用量。
????????vCPU、內存等資源使用量與CU使用量的轉換邏輯為:CU使用量=資源使用量×CU轉換系數。
????????具體計費規則詳見:SAE計費規則與計費項_Serverless 應用引擎(SAE)-阿里云幫助中心
????????從上圖我們可以看到Serverless采用了階梯單價、按量付費模式,并且還支持根據活躍或閑置、晝夜分時靈活計價,將云的彈性幾乎做到了極致。
工作流程
SAE 常用架構
SAE使用流程如下:
1、在首次部署SAE應用前,需要完成規劃VPC、vSwitch、命名空間(區分測試、預發、生產等環境)的準備工作。除通過控制臺部署應用外,SAE還支持通過Jenkins、IDE插件、Maven插件、Terraform、OpenAPI和云效等多種方式來部署應用。
2、通過以下方式訪問SAE應用。
????????方式一:綁定CLB訪問,一個端口支持綁定一個應用。具體操作,請參見為應用綁定CLB。
????????方式二:配置網關路由訪問,一個端口支持綁定多個應用。具體操作,請參見為應用配置網關路由(CLB)。
????????方式三:綁定EIP訪問,一個實例支持綁定一個EIP。具體操作,請參見基于EIP配置SAE實例公網訪問和訪問公網的能力。
3、為SAE應用配置更多進階功能。例如,企業級權限控制、彈性(降本增效)、Java微服務增強、高可用、存儲等功能。
FC 工作流程
函數計算(Function Compute,簡稱FC)是事件驅動的全托管計算服務。
FC使用流程如下:
1、開發者使用編程語言編寫應用和函數。函數計算支持的開發語言,請參見代碼開發概述。
2、開發者上傳應用到函數計算。
上傳途徑包括以下方式:
- 通過函數計算控制臺上傳。
- 通過Serverless Devs工具上傳。更多信息,請參見什么是Serverless Devs。
- 通過API或SDK上傳。更多信息,請參見SDK參考。
3、觸發函數執行。可以通過控制臺或調用API觸發,開發者也可以給函數計算配置事件源,終端用戶執行事件發生時,自動觸發函數執行。
4、函數計算支持根據用戶請求量自動擴縮容。
5、根據實際執行時長和資源使用量進行計費。函數執行結束后,可以通過賬單來查看函數執行產生的費用。
如何遷移
Serverless實踐
開通
以阿里云的函數計算為例函數計算FC_無服務器計算_Serverless_容器與中間件-阿里云
創建
基于基礎環境
基于自定義鏡像
Demo演示
以Web函數為例創建一個示例代碼的函數
測試通過后,點擊部署代碼
可以根據提供的URL在公網訪問
實現灰度發布
????????需注意的是JAVA 為編譯型語言,直接修改代碼不能直接生效!需要在FC的控制臺右上角“導出代碼”,然后根據 HELP.md 中的說明編譯代碼并重新上傳。修改源代碼讓請求返回"Hello World - v2.0版本",然后mvn clean package重新編譯。
上傳v2.0版本的代碼
創建別名,啟用灰度發布
curl測試發現v1.0和v2.0版本各有50%概率被訪問到
????????另外值得注意的是實例是阿里云函數計算 FC 用來運行函數的最小單元。您的請求就是通過函數實例來進行處理的。請求開始執行前,函數計算會為每個請求分配一個最合適的實例。注意:當前列表中僅展示了當前版本或別名的實例,您可以通過頁面上方的版本或別名下拉框進行切換。提示:按量實例在處理完請求后會被凍結,如果一段時間內(一般為3~5分鐘)不再處理請求,會自動銷毀。點擊這里了解如何手動停止實例。
通過函數計算平臺可以快速創建各式各樣的應用,并相互組合調用構成完整的業務鏈。
本期總結
????????本期內容簡要介紹了Serverless技術,傳統的Serverful模式下企業需要參照流量峰值長期保留固定IaaS資源,導致日常業務中的資源浪費,Serverless可以做到最小化閑置資源為原則,根據應用實際使用的資源按量計費,避免業務在不活躍時段的費用開銷,大大降低資源成本,做到靈活策略,其底層技術就是容器、容器編排、K8S、HPA/VPA等技術,減少服務器租賃和運維成本以及基礎環境的搭建成本,同時能獲取業務極致彈性。。
????????最后,感謝您的閱讀!系列文章會同步更新在微信公眾號@云上的喵醬、阿里云開發者社區@云上的喵醬、CSDN@笠泱,您的點贊+關注+轉發是我后續更新的動力!