華為云計(jì)算 云知識(shí) 看華為云Serverless 4大特性如何讓軟件架構(gòu)更絲滑
看華為云Serverless 4大特性如何讓軟件架構(gòu)更絲滑

【摘要】 Serverless可以看作是一種 云計(jì)算 服務(wù)模型,它允許開發(fā)者在不需要管理服務(wù)器的情況下通過事件驅(qū)動(dòng)的方式運(yùn)行應(yīng)用代碼。

軟件架構(gòu)的發(fā)展從原先的單體架構(gòu)到近十幾年的微服務(wù)架構(gòu),再到現(xiàn)在新興的Serverless架構(gòu)。單體架構(gòu)通常把應(yīng)用的邏輯和功能耦合在一起,部署在BMS裸金屬機(jī)或VM上,耦合模式使得一些通用功能或通用邏輯無法靈活復(fù)用,經(jīng)常出現(xiàn)重復(fù)造輪子的現(xiàn)象,架構(gòu)整體上是相對(duì)封閉的。

微服務(wù)時(shí)代對(duì)應(yīng)用做了拆分,組件服務(wù)化,誕生了一系列優(yōu)秀的設(shè)計(jì)原則,如接口標(biāo)準(zhǔn)化、CS/CD 自動(dòng)化 ,使得應(yīng)用初步具備了彈性和自動(dòng)容錯(cuò)的能力。

在Serverless的框架下,應(yīng)用的粒度更細(xì),例如以函數(shù)為粒度進(jìn)行管理和開發(fā)迭代,應(yīng)用通過事件驅(qū)動(dòng)的方式觸發(fā)運(yùn)行。

Serverless可以看作是一種云計(jì)算服務(wù)模型,它允許開發(fā)者在不需要管理服務(wù)器的情況下通過事件驅(qū)動(dòng)的方式運(yùn)行應(yīng)用代碼,主要解決資源托管、調(diào)度、運(yùn)維管理等一系列平臺(tái)型問題,可以看作是DevOps的進(jìn)一步延伸。

從傳統(tǒng)微服務(wù)向Serverless演進(jìn)的過程中,資源管理的邊界逐步上移。在微服務(wù)時(shí)代,虛機(jī)/容器時(shí)代,開發(fā)者發(fā)布應(yīng)用,需要管理虛擬化層或更向上的運(yùn)行時(shí)細(xì)節(jié);而從IaaS到Serverless,抽象度越來越高,底層細(xì)節(jié)的屏蔽度也越來越高,對(duì)于開發(fā)者而言,云的易用性性也在增強(qiáng),門檻在降低。

Serverless將是下一代的云計(jì)算范式,得益于它在按因付費(fèi)、自動(dòng)彈性、免運(yùn)維等方面的顯著優(yōu)勢。通用全場景的Serverless能夠幫助企業(yè)解決更廣泛的計(jì)算和運(yùn)行交付的問題。實(shí)際上,Serverless也在過去幾年的發(fā)展中,逐步增長成為下一代云上交付、運(yùn)行與交付標(biāo)準(zhǔn)的框架。

Serverless平臺(tái)的應(yīng)用托管流程

Serverless的特點(diǎn)是按用計(jì)費(fèi)、按需計(jì)費(fèi),如果終端沒有流量,平臺(tái)會(huì)自動(dòng)回收應(yīng)用資源,不需要為空閑時(shí)間付費(fèi),需要再次使用時(shí),通過重新啟動(dòng)的方式再次加載。

冷啟動(dòng)或進(jìn)一步延伸到高并發(fā)下的彈性問題,用戶側(cè)應(yīng)用托管到Serverless平臺(tái)上,如果頻繁經(jīng)歷冷啟動(dòng),應(yīng)用的QoS下降,最直觀體現(xiàn)在終端用戶頁面的Web 應(yīng)用響應(yīng)很慢,有超時(shí)的風(fēng)險(xiǎn),導(dǎo)致用戶側(cè)體驗(yàn)下降。對(duì)云平臺(tái)側(cè),冷啟動(dòng)和彈性關(guān)系著資源利用率,例如多租戶進(jìn)行混合部署時(shí),預(yù)熱效率的提升問題,以及平臺(tái)多用戶多應(yīng)用流量并發(fā)上漲時(shí)的彈性問題。因此,冷啟動(dòng)和彈性問題是Serverless領(lǐng)域廣泛關(guān)注的技術(shù)重點(diǎn)。

為了解決上述問題,華為云Serverless做了一系列的探索。

鏈路加速:通過高性能解壓縮轉(zhuǎn)換與共享內(nèi)存加速技術(shù),能夠把性能提升2-11倍;通過公共依賴包分離、預(yù)解壓與動(dòng)態(tài)按需 link 技術(shù),加速應(yīng)用冷啟動(dòng) 5- 10 倍。

池化預(yù)熱、彈性調(diào)度:通過資源池化預(yù)熱、分層預(yù)加載與彈性水位控制,實(shí)現(xiàn)毫秒級(jí) (< 10 ms) 彈性。

智能預(yù)熱:以智能、分層資源預(yù)熱實(shí)現(xiàn)負(fù)載感知,自適應(yīng)池化水位控制;采用負(fù)載、資源壓力預(yù)測框架,實(shí)現(xiàn)良好擴(kuò)展性、數(shù)據(jù)驅(qū)動(dòng)、以及工程師經(jīng)驗(yàn)的規(guī)則注入。

預(yù)留實(shí)例智能推薦策略:通過建模的方式推算給定時(shí)間段大概需要的實(shí)例數(shù)量,提供高性能、平衡、低成本三種預(yù)留實(shí)例配置策略。

案例一:Mock 服務(wù)接入 Serverless

客戶Mock服務(wù)可以模擬接口的響應(yīng),常用于服務(wù)打樁,避免由于依賴服務(wù)的不穩(wěn)定,造成自身開發(fā)和測試進(jìn)度的阻塞。在華為云Serverless 的幫助下,從手動(dòng)擴(kuò)縮容變成毫秒級(jí)的自動(dòng)彈性,提升開發(fā)、上線效率 100%,資源成本降低 50%

案例二:視頻業(yè)務(wù)基于函數(shù)實(shí)現(xiàn) BFF (Backends For Frontends) 模式

使用函數(shù)BFF架構(gòu)后,華為視頻登錄速度提升0.6~1s,相比原有方案快30%~40%。

案例三:基于 Serverless 構(gòu)建的視頻轉(zhuǎn)碼服務(wù)

基于Serverless構(gòu)建的視頻轉(zhuǎn)碼服務(wù),函數(shù)編排的能力,由多個(gè)函數(shù)協(xié)同提供完整的功能,比如一個(gè)視頻處理業(yè)務(wù)下,有多個(gè)視頻處理的算子,能夠自動(dòng) 彈性伸縮 。完整改造后,整個(gè)成本降低了80%。

未來,邊緣、中間件、托管、 大數(shù)據(jù) 將全面Serverless化,最底層是Serverless的BaaS的資源、資源池的自動(dòng)化管理和快速彈性的能力。在底座之上,是跟業(yè)務(wù)相關(guān)的函數(shù)計(jì)算、容器和托管,三種共存。Serverless容器將下沉到Serverless底座,只需要對(duì)底座資源進(jìn)行管理。在邊緣端,傳統(tǒng)的容器或是虛機(jī)可能無法支撐,采用Serverless + WASM是更可行的方案。