產(chǎn)品優(yōu)勢
產(chǎn)品優(yōu)勢
“0”資源浪費
? Serverless 應用支持按實際調(diào)用次數(shù)收費,即“用多少,花多少”,實現(xiàn)閑置成本降低10%-90%
? 同時Serverless 應用按底層計算資源調(diào)度情況自動化、毫秒級擴縮容,實現(xiàn)資源的自動“吞吐”,為用戶帶來更經(jīng)濟的計費模式和更無感的擴容體驗
“0”業(yè)務改動
? Serverless 應用下,企業(yè)無需配備大量的開發(fā)、維護人員,去管理、運維底層設施。因為在Serverless環(huán)境中,開發(fā)人員只需要編寫云函數(shù),選擇觸發(fā)云函數(shù)運行的事件就可以完成工作,存量業(yè)務0改動,這為客戶省去了大量的運維時間和成本,從而能更專注于業(yè)務本身
“0”基礎運維
? 只需編寫業(yè)務函數(shù)代碼并設置運行的條件,全周期無需配置和管理基礎設施,毫秒級冷啟動,性能提升400%
? 對于時延敏感型的Java應用程序,突發(fā)流量下會冷啟速度慢,導致用戶體驗下降。這時企業(yè)無需提前預留資源或者對自己的應用進行性能調(diào)優(yōu),來減少冷啟動發(fā)生的頻率。華為云搭建的Serverless應用提供基于進程級快照的冷啟動加速解決方案,實現(xiàn)用戶幾乎無感知應用的冷啟動
豐富的應用場景,滿足極致彈性計算需求
Serverless 相關產(chǎn)品
Serverless 相關產(chǎn)品
Serverless 應用中心
函數(shù)應用程序由FunctoinGraph函數(shù)、觸發(fā)器和其他資源組合而成,這些資源相互配合,共同執(zhí)行任務。Serverless應用中心為您提供了豐富的預置應用模板,幫助你一鍵快速部署函數(shù)應用
Serverless 函數(shù)工作流 FunctionGraph
是一項基于事件驅(qū)動的函數(shù)托管計算服務。用戶無需配置和管理服務器等基礎設施,只需編寫業(yè)務函數(shù)代碼并設置運行的條件,即可以彈性、免運維、高可靠的方式運行
Serverless API網(wǎng)關 APIG
是為企業(yè)和開發(fā)者提供的高性能、高可用、高安全的云原生網(wǎng)關服務,融合安全、負載均衡、 流量入口治理、微服務流量治理、運維等多項能力,幫助企業(yè)輕松實現(xiàn)API安全開放、API高并發(fā)調(diào)用和入口流量、 微服務流量精細化治理,簡單、快速、低成本、低風險地實現(xiàn)內(nèi)部系統(tǒng)集成和業(yè)務能力開放變現(xiàn)
Serverless 事件網(wǎng)格 EG
事件網(wǎng)格EventGrid是華為云提供的一款Serverless事件總線服務,支持華為云服務、自定義應用、SaaS 應用以標準化、中心化的方式接入,通過標準化的CloudEvents協(xié)議在這些應用之間以靈活方式路由事件,幫助您 輕松構建松耦合、分布式的事件驅(qū)動架構
云應用引擎CAE
是一個面向應用的Serverless托管服務,提供極速部署、極低成本、極簡運維的一站式應用 托管方案。支持從源碼、軟件包、鏡像包快速發(fā)布應用,秒級彈性伸縮、按量付費??勺龅交A設施免運維,根據(jù)可 觀測的運行指標對應用進行生命周期管理
華為云Serverless常見問題解答
華為云Serverless常見問題解答
什么是 Serverless?這是否意味著沒有服務器,或者到底是如何運作的
Serverless是云原生的實現(xiàn)方式并把底層計算資源當成基礎設施,每個產(chǎn)品的實現(xiàn)方式也不一樣,但并不代表無服務器,只是底層服務器對用戶透明并完全由廠商負責運維。
Serverless架構與傳統(tǒng)云計算有什么區(qū)別?
Serverless計算允許開發(fā)者專注于編寫和部署代碼,而無需管理服務器,自動按需擴展資源。
Serverless架構相比傳統(tǒng)云計算,是在底層計算資源的基礎上更高階的抽象和使用,并允許開發(fā)者專注于編寫和部署代碼,而無需管理服務器,自動按需擴展資源。傳統(tǒng)云計算對底層計算資源進行編排,但仍需客戶運維。
Serverless的冷啟動問題:函數(shù)在初始請求時是否會由于需要初始化產(chǎn)生延遲,影響到應用的體驗?
冷啟動一直是Serverless領域面臨的優(yōu)化難題之一,華為云創(chuàng)新提出了基于進程級快照的冷啟動加速解決方案,致力于在用戶幾乎無感知的前提下,有效提升應用的冷啟動性能。特別是Java應用冷啟動速度慢的問題尤為突出,華為云在冷啟動性能優(yōu)化方面做到90%+性能提升。
哪些類型的應用最適合遷移到 Serverless 架構?
以下幾種類型的應用最適合遷移到 Serverless 架構:
1、事件驅(qū)動應用:包括 IoT 設備數(shù)據(jù)處理、文件上傳后的圖像處理、日志分析、視頻直播/轉(zhuǎn)碼等,這些應用以事件驅(qū)動的方式執(zhí)行服務,按需供給,開發(fā)者無需關注業(yè)務波峰波谷,節(jié)省閑時成本,最終降低運維成本。
2、Web 應用和移動后端:RESTful API 和 GraphQL等接口可以很好地與 Serverless 結合,實現(xiàn)按需計算和自動擴展。
3、微服務:Serverless 的無狀態(tài)特性和自動擴展能力非常適合構建獨立部署的服務單元。
4、定時任務:例如數(shù)據(jù)備份、報告生成、定期清理等工作,可以通過計劃事件來觸發(fā) Serverless 函數(shù)執(zhí)行。
5、AI/ML 推理:短期的機器學習模型推理任務,尤其是那些不需要長期占用資源的情況。
6、臨時或階段性項目:比如活動期間的限時促銷、封閉測試等,這類應用可以在需求高峰期迅速擴展,并在非活躍期減少開銷。
在按需付費模型下,是如何通過Serverless實現(xiàn)成本效率。尤其是在高訪問量的情況下,Serverless的成本是否會高于傳統(tǒng)架構?
1、在高訪問量情況下,Serverless 的初期成本優(yōu)勢明顯。傳統(tǒng)架構需要提前預估流量并采購和配置足夠的服務器、存儲設備和網(wǎng)絡設備等硬件資源,這涉及到大量的資金投入。而 Serverless 無需預先購買這些硬件,只需在流量到來時根據(jù)實際使用情況付費,對于一些創(chuàng)業(yè)公司或者新上線的應用,這種方式可以大大減輕資金壓力。
2、Serverless 的自動伸縮特性在高訪問量下可以有效控制成本。盡管隨著訪問量增加,Serverless 的費用會相應上升,但它的增長是與實際的請求處理量緊密相關的。而傳統(tǒng)架構為了應對峰值流量,往往會過度配置資源,在平時就會造成這些資源的閑置浪費,即使在高訪問量期間,也可能因為架構不夠靈活而無法充分利用資源。
3、如果應用處于長時間、穩(wěn)定的高訪問量狀態(tài),并且對性能有非常高的要求(例如要求極低的延遲),在某些情況下 Serverless 成本可能會高于傳統(tǒng)架構,Serverless 的計費方式是基于函數(shù)執(zhí)行次數(shù)和資源消耗,在長時間高負載下,這些費用可能會累積到一個較高的水平,Serverless 的冷啟動和精細的計費方式可能會導致成本上升。
在實際應用中如何實現(xiàn)和管理Serverless的可伸縮性:?
一、利用華為云Serverless函數(shù)托管服務FunctionGraph的自動伸縮功能
以 華為云FunctionGraph 為例,它會根據(jù)傳入請求的速率自動調(diào)整函數(shù)執(zhí)行實例的數(shù)量。當請求流量增加時, FunctionGraph 會自動啟動更多的實例來處理請求;當流量減少時,會關閉多余的實例。這種自動伸縮是基于內(nèi)置的算法,該算法會考慮請求的并發(fā)數(shù)、函數(shù)執(zhí)行時間以及可用函數(shù)實例資源等多種因素。例如,假設一個基于 FunctionGraph 的 Web 應用,平時每秒只有 10 個請求, FunctionGraph 會維持少量的函數(shù)實例。但如果在促銷活動期間,每秒請求數(shù)增加到 1000 個, FunctionGraph 會迅速啟動足夠多的實例來處理這些請求,確保應用的響應性能。
二、基于指標的伸縮管理,即監(jiān)控關鍵指標
1、彈性實例數(shù)和并發(fā)數(shù):
彈性實例數(shù)反映了單位時間內(nèi)運行的彈性實例數(shù)量,并發(fā)數(shù)則表示在同一時刻正在處理的請求數(shù)量。這兩個指標是監(jiān)控伸縮性的基礎。通過實時監(jiān)控這些指標,可以提前預測流量的變化趨勢,從而做好資源準備。
例如,使用云服務提供商提供的監(jiān)控工具(如 華為云的AOM)來跟蹤這些指標。當發(fā)現(xiàn)并發(fā)數(shù)持續(xù)上升,并且并發(fā)數(shù)接近設置的單函數(shù)最大實例數(shù)的閾值時,就可以考慮調(diào)整伸縮策略,如提高單函數(shù)最大實例數(shù)限制或增加預留實例數(shù)量。
2、函數(shù)執(zhí)行時間和資源利用率:
函數(shù)執(zhí)行時間直接影響用戶體驗,較長的執(zhí)行時間可能導致用戶等待時間過長。資源利用率(CPU、內(nèi)存)則反映了函數(shù)運行的效率。如果發(fā)現(xiàn)函數(shù)執(zhí)行時間過長或者資源利用率過高,可能需要優(yōu)化函數(shù)代碼,或者調(diào)整資源分配。
例如,一個日志加工函數(shù)在處理日志時執(zhí)行時間過長。通過監(jiān)控發(fā)現(xiàn)這個問題后,可以考慮優(yōu)化算法來縮短執(zhí)行時間,或者增加分配給函數(shù)的內(nèi)存資源來提高處理效率。同時,監(jiān)控資源利用率可以幫助企業(yè)確定是否有資源浪費的情況,例如,如果一個函數(shù)一直占用大量內(nèi)存但實際使用很少,就可以適當減少分配的內(nèi)存。
Serverless是事件驅(qū)動架構,那么企業(yè)如何構建和優(yōu)化事件驅(qū)動的應用
一、企業(yè)構建事件驅(qū)動的應用:
1、企業(yè)首先需要明確應用中的事件來源。事件源可以是多種多樣的,例如用戶App中的操作(如點擊按鈕、提交表單等)、消息隊列中的消息(如來自其他系統(tǒng)的業(yè)務消息)等。梳理出所有可能的事件源,為后續(xù)的事件處理做好準備。
2、根據(jù)事件的類型和業(yè)務需求,編寫相應的 Serverless函數(shù)來處理事件。每個函數(shù)應該具有明確的單一職責,例如,一個處理用戶注冊事件的函數(shù)可能負責驗證用戶輸入的信息、將用戶數(shù)據(jù)存儲到數(shù)據(jù)庫等操作。
以一個電商應用為例,當有用戶下單的事件發(fā)生時,對應的 Serverless 函數(shù)會負責驗證訂單信息(包括商品庫存檢查、價格計算等)、生成訂單記錄、通知倉庫發(fā)貨等一系列操作。這些函數(shù)可以使用不同的編程語言編寫,如 Python、Node.js 等,具體取決于企業(yè)開發(fā)團隊的技能和應用的需求。
但對于復雜的業(yè)務場景,可能需要多個 Serverless 函數(shù)協(xié)同工作來處理事件。這時就需要進行事件流的編排,確定事件在不同函數(shù)之間的傳遞順序和觸發(fā)條件。可以使用工作流引擎或者事件編排工具來實現(xiàn)。
例如,在一個企業(yè)級的供應鏈管理系統(tǒng)中,一個采購訂單事件可能首先觸發(fā)庫存檢查函數(shù),根據(jù)庫存情況決定是否需要觸發(fā)采購申請函數(shù),采購申請批準后再觸發(fā)供應商下單函數(shù)等。通過事件流編排工具(如 FunctionGraph的 workflow)可以清晰地定義和管理這些事件流程。
3、企業(yè)需要為事件處理過程中產(chǎn)生的數(shù)據(jù)選擇合適的存儲方案。對于臨時的數(shù)據(jù),可以使用內(nèi)存存儲(如在函數(shù)執(zhí)行期間存儲一些中間計算結果)、 緩存(如Redis)、消息(如Kafka) ;對于持久化的數(shù)據(jù),如用戶記錄、業(yè)務訂單等,可以使用數(shù)據(jù)庫(如關系型數(shù)據(jù)庫 MySQL)。
二、優(yōu)化事件驅(qū)動的 Serverless 應用:
1、優(yōu)化 Serverless 函數(shù)的代碼是提高性能的關鍵。這包括減少函數(shù)的執(zhí)行時間、降低資源消耗(如內(nèi)存、CPU)??梢酝ㄟ^代碼重構、算法優(yōu)化、使用高效的庫等方式來實現(xiàn)。
2、由于網(wǎng)絡、系統(tǒng)等原因,事件處理可能會失敗。企業(yè)需要建立重試機制,當函數(shù)執(zhí)行失敗時,自動進行重試??梢栽O置重試次數(shù)、重試間隔等參數(shù),根據(jù)不同的事件重要性和失敗類型來靈活調(diào)整。
3、成本優(yōu)化,優(yōu)化資源分配,確保 Serverless 函數(shù)使用的資源(如內(nèi)存、執(zhí)行時間)與實際需求相匹配。避免過度分配資源導致不必要的成本增加??梢酝ㄟ^性能測試和成本分析來確定最佳的資源配置方案。
例如,在一個測試環(huán)境中,模擬不同的流量場景,觀察函數(shù)在不同資源配置下的性能和成本。通過分析結果,找到一個既能滿足性能要求又能降低成本的資源分配點,如將一個函數(shù)的內(nèi)存分配從 4096MB 降低到 1024MB,同時保證其在高流量情況下的執(zhí)行時間仍在可接受范圍內(nèi)。
由于 Serverless 應用是分布式的,開發(fā)者如何有效調(diào)試和監(jiān)控這樣的應用,特別是在出現(xiàn)問題時,如何追蹤錯誤?
開發(fā)者可以基于以下關鍵策略:
1、使用日志聚合服務LTS收集和分析事件信息和錯誤日志,并確保日志信息結構化,便于讀取和分析。
2、利用調(diào)用鏈工具比如APM等來追蹤請求完整路徑,識別性能瓶頸和故障點。
3、上報關鍵指標數(shù)據(jù),比如成功率等,并設置告警及時通知。
Serverless 是如何改變開發(fā)和部署流程,以及是否需要新的技能或工具來適應這種架構?
Serverless將計算資源的管理抽象化,顯著改變了傳統(tǒng)的開發(fā)和部署流程,主要包括以下改變:
1、無服務器函數(shù):開發(fā)者可以專注于編寫業(yè)務邏輯,無需關心底層基礎設施的配置和維護。
2、事件驅(qū)動:應用設計圍繞事件觸發(fā),提高了系統(tǒng)的響應性和可擴展性。
3、按需資源:云服務自動分配和管理計算資源,開發(fā)者只需上傳代碼,無需手動部署或擴展服務器。
4、持續(xù)集成/持續(xù)部署(CI/CD):Serverless環(huán)境與CI/CD工具的集成更加緊密,實現(xiàn)代碼的自動測試、構建和部署。
建議掌握以下技能:
1、事件驅(qū)動編程:理解和設計基于事件觸發(fā)的業(yè)務流程。
2、無狀態(tài)設計:確保函數(shù)或服務能夠獨立處理請求,不依賴于會話狀態(tài)。
3、微服務架構:將應用分解為獨立的、可重用的組件,提高系統(tǒng)的靈活性和可維護性。
4、云服務API:熟悉云平臺提供的API,如FunctionGraph等。
5、監(jiān)控和日志工具:掌握如LTS、AOM等工具,用于監(jiān)控和調(diào)試Serverless應用。
6、CI/CD工具:如Jenkins、GitLab CI、CircleCI等,用于自動化測試和部署流程。
7、容器技術:雖然Serverless主要關注函數(shù)級別的無服務器,但了解容器(如Docker)和容器編排(如Kubernetes)對于構建和部署微服務仍然重要。
在 Serverless 應用中,如何有效管理和集成多個第三方服務的 SDK,以避免增加整合難度和維護負擔?
1、使用模塊化設計,將每個第三方服務的集成封裝為獨立的模塊或函數(shù),避免代碼耦合,便于單獨測試和維護。
2、針對第三方依賴,可以使用云服務提供的依賴包進行管理,使用平臺提供的依賴包能力進行版本管理。
3、使用ServiceBridge函數(shù)作為BaaS訪問統(tǒng)一入口,業(yè)務使用輕量SDK訪問BaaS服務,無需關注連接邏輯。
華為云Serverless精選文章推薦
華為云Serverless精選文章推薦
Serverless 高速發(fā)展,華為云推出 FunctionGraph2.0
FunctionGraph2.0 作為華為云 Serverless 解決方案重要產(chǎn)品之一,是一項基于事件驅(qū)動的函數(shù)托管計算服務,開發(fā)者只需編寫業(yè)務函數(shù)代碼并設置運行的條件,無需配置和管理服務器等基礎設施,函數(shù)以彈性、免運維、高可靠的方式運行。
全域Serverless+AI,華為云加速大模型應用開發(fā)
為了更好的支撐AIGC應用,華為云提供了全域Serverless能力,推出了CCE Autopilot、FunctionGraph、CAE等Serverless產(chǎn)品,將一系列的AI原生技術構筑成后端服務,形成BaaS for AI能力,調(diào)用即可得。結合完善的工具鏈,幫忙企業(yè)快速構建應用。
“元戎”首席架構師講述華為云Serverless進階故事
“元戎”最開始時還不叫“元戎”,它就是被簡單地稱為FaaS。從功能來看,F(xiàn)aaS就是一個更細?;馁Y源虛擬化過程。其實,云計算本身就是資源虛擬化的過程,從虛機到容器、再到FaaS,只不過現(xiàn)在可以把內(nèi)核、內(nèi)存搞得更加細致,用一個比容器更小的資源——“函數(shù)”來實現(xiàn),并且它還是獨立的。
Serverless憑什么被譽為未來云計算范式?
信通院給出定義:即以應用為中心,無需關注基礎設施的計算模式。FaaS不是其唯一的形態(tài),Serverless是一整套能力的合集,越來越多的第三方服務演進為全托管的Serverless形態(tài)。
華為云全域Serverless技術創(chuàng)新:全球首創(chuàng)通用Serverless平臺被ACM SIGCOMM錄用
華為云全域Serverless化背后的“基石”——元戎,中稿全球頂尖學術會議ACM SIGCOMM 2024。