近年來,無服務(wù)器架構(gòu)作為一種新的技術(shù)概念迅速涌現(xiàn)出來。由于無服務(wù)器解決方案能夠幫助企業(yè)輕松構(gòu)建輕量級(jí)、高度靈活和無狀態(tài)的應(yīng)用程序,因此得到了很多企業(yè)的青睞,許多企業(yè)已經(jīng)開始將無服務(wù)器產(chǎn)品納入他們的解決方案。使用此架構(gòu),開發(fā)人員可以為各種行業(yè)創(chuàng)建各種應(yīng)用程序。在這篇文章中,我們將借助阿里巴巴云功能計(jì)算服務(wù)器,通過四種實(shí)際應(yīng)用場(chǎng)景來探討應(yīng)用程序在無服務(wù)器架構(gòu)上的實(shí)際操作。
在開始之前,讓我們先來熟悉一下無服務(wù)器架構(gòu)的歷史和主要優(yōu)勢(shì)。
無服務(wù)器技術(shù)的演進(jìn)
每一個(gè)新技術(shù)概念的引入伴隨著生產(chǎn)力的提高,無服務(wù)器技術(shù)也不例外。開發(fā)人員一直在尋找更有效的方法來維持軟件開發(fā)生命周期,而無服務(wù)器架構(gòu)且可以幫助企業(yè)專注于應(yīng)用程序開發(fā),不再需要擔(dān)心服務(wù)器等基礎(chǔ)設(shè)施的部署建設(shè)和運(yùn)維管理,這即可以很好的降低開發(fā)成本和縮短開發(fā)周期。
無服務(wù)器體系結(jié)構(gòu)的開發(fā)建立在從虛擬化(云計(jì)算)開始的先前成就的基礎(chǔ)上,雖然這個(gè)過程是相當(dāng)連續(xù)的,但它有幾個(gè)值得注意的里程碑:
1、引入虛擬化技術(shù)替代大型物理服務(wù)器虛擬化為獨(dú)立的虛擬機(jī)資源。
2、虛擬化集群被移動(dòng)到簡(jiǎn)單的O.M的云計(jì)算平臺(tái)。
3、基于最小化操作空間的原則,將每個(gè)VM細(xì)分為Docker容器。
4、構(gòu)建在Docker容器上的應(yīng)用程序不需要任何運(yùn)行時(shí)的環(huán)境管理,只需要核心代碼的無服務(wù)器體系結(jié)構(gòu)。
5、Server是為了幫助開發(fā)人員專注于應(yīng)用程序邏輯而不是為服務(wù)器基礎(chǔ)結(jié)構(gòu)引入的。
無服務(wù)器架構(gòu)具有以下特點(diǎn):
1、粒度計(jì)算資源;
2、資源不需要預(yù)先分配;
3、高度可伸縮和靈活的體系結(jié)構(gòu);
4、用戶只需要支付所使用的資源即可。
具體來說,阿里巴巴云函數(shù)計(jì)算為用戶提供以下優(yōu)點(diǎn):
1、沒有基礎(chǔ)設(shè)施管理。函數(shù)計(jì)算使用戶能夠?qū)W⒂陂_發(fā)具有低操作和維護(hù)成本的主業(yè)務(wù)邏輯。
2、與Alibaba Cloud服務(wù)無縫集成。函數(shù)計(jì)算有助于快速構(gòu)建應(yīng)用程序,例如用戶可以用OSS連接一個(gè)函數(shù)來進(jìn)行圖像和視頻數(shù)據(jù)處理。當(dāng)新數(shù)據(jù)上傳到OSS時(shí),自動(dòng)觸發(fā)一個(gè)函數(shù)來處理上傳的數(shù)據(jù)。
3、在毫秒內(nèi)實(shí)現(xiàn)彈性縮放。
4、按需付費(fèi)。只收取實(shí)際使用的計(jì)算資源,大大降低了成本,尤其適用于具有不可預(yù)測(cè)的業(yè)務(wù)模式場(chǎng)景。
應(yīng)用場(chǎng)景一:事件觸發(fā)計(jì)算
無服務(wù)器可應(yīng)用于涉及多個(gè)設(shè)備訪問各種文件類型的場(chǎng)景,例如移動(dòng)電話和PC上傳圖像、視頻和文本文件。
通過使用帶有對(duì)象存儲(chǔ)服務(wù)(OSS)的函數(shù)計(jì)算,用戶可以為阿里巴巴云上的多個(gè)設(shè)備訪問各種文件類型的場(chǎng)景應(yīng)用使用無服務(wù)器體系結(jié)構(gòu)。在用戶將視頻文件上傳到OSS之后,觸發(fā)Function Compute以獲取對(duì)象元數(shù)據(jù)并將其傳輸?shù)胶诵乃惴◣熘小;谠撍惴ǎ诵乃惴◣鞂⑾嚓P(guān)視頻文件推送到CDN源站點(diǎn),對(duì)指定的視頻進(jìn)行熱加載。在另外一個(gè)場(chǎng)景中,視頻文件上傳到OSS后,觸發(fā)Function Compute以同步多個(gè)轉(zhuǎn)碼率并將處理后的視頻文件存儲(chǔ)在OSS中,這樣即提供了輕量級(jí)的數(shù)據(jù)處理的解決方案。
在多媒體處理場(chǎng)景中,大量的文件通常被上傳到OSS進(jìn)行處理,如水印、代碼轉(zhuǎn)換、文件屬性數(shù)據(jù)獲取等。函數(shù)計(jì)算可以通過以下特性幫助用戶快速解決事件觸發(fā)計(jì)算場(chǎng)景中的技術(shù)困難:
1、函數(shù)計(jì)算可以設(shè)置OSS觸發(fā)器來接收事件通知。在函數(shù)計(jì)算中,用戶可以編寫代碼來處理文件,并通過內(nèi)聯(lián)網(wǎng)將文件傳輸?shù)絆SS,云服務(wù)器,整個(gè)過程即簡(jiǎn)單又可以輕松擴(kuò)展。
2、用戶可以將核心代碼構(gòu)建為函數(shù)計(jì)算,并使用代碼并發(fā)處理事件通知。
3、函數(shù)計(jì)算目前已經(jīng)提供與其他產(chǎn)品的內(nèi)部交互支持。
應(yīng)用場(chǎng)景二:實(shí)時(shí)視頻廣播的彈性調(diào)整
無服務(wù)器架構(gòu)是實(shí)時(shí)視頻廣播應(yīng)用場(chǎng)景的理想選擇。在下面的圖片中,廣播室客戶端收集來自主機(jī)和觀眾的音頻和視頻流,并將它們發(fā)送到Function Compute進(jìn)行多路復(fù)用。函數(shù)計(jì)算器將收集到的數(shù)據(jù)發(fā)送到多路復(fù)用服務(wù)進(jìn)行合成,并將合成的視頻流推送到CDN。觀眾可以實(shí)時(shí)地觀看直播流以查看多路復(fù)用和合成視頻。