- Serverless工程實(shí)踐:從入門到進(jìn)階
- 劉宇
- 1867字
- 2021-07-30 09:07:49
1.4 典型應(yīng)用場(chǎng)景
Serverless架構(gòu)自提出到現(xiàn)在經(jīng)過若干年的發(fā)展,已經(jīng)在很多領(lǐng)域中有著非常多的最佳實(shí)踐。但是Serverless自身也有局限性,由于其無狀態(tài)、輕量化等特性,Serverless在一部分場(chǎng)景下可以有非常優(yōu)秀的表現(xiàn),但是在另外一些場(chǎng)景下可能表現(xiàn)得并不理想。CNCF總結(jié)的Serverless架構(gòu)所適合的用戶場(chǎng)景如下。
- 異步并發(fā),組件可獨(dú)立部署和擴(kuò)展。
- 突發(fā)或服務(wù)使用量不可預(yù)測(cè)。
- 短暫、無狀態(tài)的應(yīng)用,對(duì)冷啟動(dòng)時(shí)間不敏感。
- 需要快速開發(fā)迭代。
CNCF還列舉了Serverless架構(gòu)可以更好支持的領(lǐng)域。
- 響應(yīng)數(shù)據(jù)庫(kù)更改(插入、更新、觸發(fā)、刪除)的執(zhí)行邏輯;
- 對(duì)物聯(lián)網(wǎng)傳感器輸入消息(如MQTT消息)進(jìn)行分析;
- 處理流處理(分析或修改動(dòng)態(tài)數(shù)據(jù));
- 管理單次提取、轉(zhuǎn)換和存儲(chǔ)需要在短時(shí)間內(nèi)進(jìn)行大量處理(ETL);
- 通過聊天機(jī)器人界面提供認(rèn)知計(jì)算(異步);
- 調(diào)度短時(shí)間內(nèi)執(zhí)行的任務(wù),例如CRON或批處理的調(diào)用;
- 機(jī)器學(xué)習(xí)和人工智能模型;
- 持續(xù)集成管道,按需為構(gòu)建作業(yè)提供資源,而不是保持一個(gè)構(gòu)建從主機(jī)池等待作業(yè)分派的任務(wù)。
CNCF基于Serverless架構(gòu)的特點(diǎn),從理論上描述了Serverless架構(gòu)適合的場(chǎng)景或業(yè)務(wù)。云廠商則會(huì)站在自身的業(yè)務(wù)角度來描述Serverless架構(gòu)的典型場(chǎng)景。不同云廠商描述的典型場(chǎng)景雖然可能有所不同,但是實(shí)際上整體思路或類型是類似的,如表1-1所示。
表1-1 不同云廠商/產(chǎn)品所提供的典型場(chǎng)景表

1.4.1 實(shí)時(shí)文件處理
視頻應(yīng)用、社交應(yīng)用等場(chǎng)景下,用戶上傳的圖片、音視頻往往總量大、頻率高,對(duì)處理系統(tǒng)的實(shí)時(shí)性和并發(fā)能力都有較高的要求。例如,對(duì)于用戶上傳的圖片,可以使用多個(gè)函數(shù)對(duì)其分別處理,包括圖片的壓縮、格式轉(zhuǎn)換、鑒黃鑒恐等,以滿足不同場(chǎng)景下的需求,如圖1-24所示。

圖1-24 實(shí)時(shí)文件處理示例
1.4.2 數(shù)據(jù)ETL處理
通常要對(duì)大數(shù)據(jù)進(jìn)行處理,需要搭建Hadoop或Spark等相關(guān)大數(shù)據(jù)的框架,同時(shí)要有一個(gè)處理數(shù)據(jù)的集群。通過Serverless技術(shù),只需要將獲得的數(shù)據(jù)不斷存儲(chǔ)到對(duì)象存儲(chǔ),并且通過對(duì)象存儲(chǔ)相關(guān)觸發(fā)器觸發(fā)數(shù)據(jù)拆分函數(shù)進(jìn)行相關(guān)數(shù)據(jù)或任務(wù)的拆分,然后再調(diào)用相關(guān)處理函數(shù),處理完成之后,存儲(chǔ)到云數(shù)據(jù)庫(kù)中。函數(shù)計(jì)算近乎無限擴(kuò)容的能力可以使用戶輕松地進(jìn)行大容量數(shù)據(jù)的計(jì)算。利用Serverless架構(gòu)可以對(duì)源數(shù)據(jù)并發(fā)執(zhí)行多個(gè)mapper和reducer函數(shù),在短時(shí)間內(nèi)完成工作,整個(gè)流程可以簡(jiǎn)化為如圖1-25所示。相比傳統(tǒng)的工作方式,使用Serverless架構(gòu)更能避免資源的閑置浪費(fèi),從而節(jié)省成本。

圖1-25 數(shù)據(jù)ETL處理示例
1.4.3 實(shí)時(shí)數(shù)據(jù)處理
基于Serverless架構(gòu)所支持的豐富的事件源和事件觸發(fā)機(jī)制,可以通過幾行代碼和簡(jiǎn)單的配置對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,例如對(duì)對(duì)象存儲(chǔ)壓縮包進(jìn)行解壓、對(duì)日志或數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行清洗、對(duì)MNS消息進(jìn)行自定義消費(fèi)等,如圖1-26所示。

圖1-26 實(shí)時(shí)數(shù)據(jù)處理示例
1.4.4 AI推理預(yù)測(cè)
AI模型完成訓(xùn)練后,在對(duì)外提供推理服務(wù)時(shí),可以使用Serverless架構(gòu)將數(shù)據(jù)模型包裝在調(diào)用函數(shù)中,在實(shí)際用戶請(qǐng)求到達(dá)時(shí)再運(yùn)行代碼。相對(duì)于傳統(tǒng)的推理預(yù)測(cè),這樣做的好處是,無論是函數(shù)模塊、后端的GPU服務(wù)器,還是對(duì)接的其他相關(guān)的機(jī)器學(xué)習(xí)服務(wù),都可以按量付費(fèi)以及自動(dòng)伸縮,從而在保證性能的同時(shí)確保服務(wù)的穩(wěn)定,如圖1-27所示。

圖1-27 AI推理預(yù)測(cè)處理示例
1.4.5 IoT后端
目前很多廠商都推出了智能音箱產(chǎn)品。用戶對(duì)智能音箱說話,智能音箱通過互聯(lián)網(wǎng)將這句話傳遞給后端服務(wù),然后得到反饋結(jié)果并返回給用戶。通過Serverless架構(gòu),可以將API網(wǎng)關(guān)、云函數(shù)以及數(shù)據(jù)庫(kù)產(chǎn)品進(jìn)行結(jié)合來替代傳統(tǒng)的服務(wù)器或者虛擬機(jī)等。這樣一方面可以確保資源的按量付費(fèi),只有在使用的時(shí)候,函數(shù)部分才會(huì)計(jì)費(fèi),另一方面當(dāng)用戶量增加之后,通過Serverless實(shí)現(xiàn)的智能音箱系統(tǒng)的后端也會(huì)進(jìn)行彈性伸縮,可以保證用戶側(cè)的服務(wù)穩(wěn)定。另外,對(duì)其中某個(gè)功能進(jìn)行維護(hù)相當(dāng)于對(duì)單個(gè)函數(shù)進(jìn)行維護(hù),并不會(huì)對(duì)主流程產(chǎn)生額外風(fēng)險(xiǎn),相對(duì)來說更安全、更穩(wěn)定。處理流程示例,如圖1-28所示。

圖1-28 IoT后端處理示例
1.4.6 Web應(yīng)用/移動(dòng)應(yīng)用后端
Serverless架構(gòu)和云廠商所提供的其他云產(chǎn)品進(jìn)行結(jié)合,開發(fā)者能夠構(gòu)建可彈性擴(kuò)展的移動(dòng)或Web應(yīng)用程序,輕松創(chuàng)建豐富的無服務(wù)器后端,而且這些程序可在多個(gè)數(shù)據(jù)中心高可用運(yùn)行,無須在可擴(kuò)展性、備份冗余方面執(zhí)行任何管理工作。Web應(yīng)用后端處理示例如圖1-29所示。

圖1-29 Web應(yīng)用后端處理示例
1.4.7 音視頻轉(zhuǎn)碼
在視頻應(yīng)用、社交應(yīng)用等場(chǎng)景下,用戶會(huì)上傳一些視頻,通常上傳的視頻會(huì)進(jìn)行一些轉(zhuǎn)碼,包括轉(zhuǎn)換為不同的清晰度。Serverless技術(shù)與對(duì)象存儲(chǔ)相關(guān)產(chǎn)品組合后,可利用對(duì)象存儲(chǔ)相關(guān)觸發(fā)器,即上傳者將視頻上傳到對(duì)象存儲(chǔ)中,觸發(fā)Serverless架構(gòu)的計(jì)算平臺(tái)(FaaS平臺(tái))對(duì)其進(jìn)行處理,處理之后將其重新存儲(chǔ)到對(duì)象存儲(chǔ)中,這個(gè)時(shí)候其他用戶就可以選擇編碼后的視頻進(jìn)行播放,還可以選擇不同的清晰度,如圖1-30所示。

圖1-30 音視頻轉(zhuǎn)碼處理示例
綜上所述,Serverless架構(gòu)的典型應(yīng)用場(chǎng)景更多是由Serverless架構(gòu)的特點(diǎn)決定的。當(dāng)然,隨著時(shí)間的不斷推移,Serverless架構(gòu)也在不斷演進(jìn),特點(diǎn)會(huì)更加突出,劣勢(shì)會(huì)被彌補(bǔ),適合的場(chǎng)景也會(huì)更豐富。
- Mastering Entity Framework Core 2.0
- JavaScript高效圖形編程
- 垃圾回收的算法與實(shí)現(xiàn)
- 薛定宇教授大講堂(卷Ⅳ):MATLAB最優(yōu)化計(jì)算
- JavaScript+Vue+React全程實(shí)例
- 深入淺出RxJS
- PHP 7+MySQL 8動(dòng)態(tài)網(wǎng)站開發(fā)從入門到精通(視頻教學(xué)版)
- PySpark Cookbook
- 深入剖析Java虛擬機(jī):源碼剖析與實(shí)例詳解(基礎(chǔ)卷)
- ASP.NET 4.0 Web程序設(shè)計(jì)
- Hacking Android
- Python預(yù)測(cè)分析實(shí)戰(zhàn)
- MongoDB Cookbook
- Koa與Node.js開發(fā)實(shí)戰(zhàn)
- 信息學(xué)奧林匹克競(jìng)賽初賽精講精練