技術(shù)
導(dǎo)讀:從四種場(chǎng)景出發(fā),詳細(xì)解讀無服務(wù)器架構(gòu)的落地應(yīng)用 無服務(wù)器架構(gòu)作為一種新的技術(shù)概念迅速涌現(xiàn)出來。由于無服務(wù)器解決方案能夠幫助企業(yè)輕松構(gòu)建輕量級(jí)、高度靈活和無狀態(tài)的應(yīng)用程序,因此得到了很多企業(yè)的青睞,許多企業(yè)已經(jīng)開始將無服務(wù)器產(chǎn)品納入他們的解決方案。
近年來,無服務(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ù)胶诵乃惴◣熘??;谠撍惴?,核心算法庫將相關(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,整個(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ù)用和合成視頻。
在某些實(shí)況視頻應(yīng)用場(chǎng)景中,多個(gè)觀眾成員能夠交互,因此主機(jī)可以同時(shí)連接到多個(gè)麥克風(fēng)。主機(jī)可以將多個(gè)觀眾或朋友連接到屏幕上,并將圖片合成為單個(gè)場(chǎng)景,然后將其提供給現(xiàn)場(chǎng)觀眾。
無服務(wù)器架構(gòu)解決了在這樣的應(yīng)用場(chǎng)景中可能出現(xiàn)的困難。作為主機(jī)和連接麥克風(fēng)的實(shí)時(shí)音頻和視頻轉(zhuǎn)發(fā)集群,F(xiàn)unction Compute根據(jù)并發(fā)卷自動(dòng)調(diào)整用于處理實(shí)時(shí)數(shù)據(jù)流的多個(gè)執(zhí)行環(huán)境的大小。在流量高峰之后,功能計(jì)算可以適當(dāng)?shù)販p少資源量。由于代碼管理功能部署在云上,因此允許用戶隨時(shí)修改和維護(hù)代碼迭代,不再需要管理多個(gè)軟件運(yùn)行時(shí)的環(huán)境。
應(yīng)用場(chǎng)景三:物聯(lián)網(wǎng)數(shù)據(jù)處理
無服務(wù)器架構(gòu)可以應(yīng)用于物聯(lián)網(wǎng)(IOT)場(chǎng)景中,如下圖所示:
該應(yīng)用體系結(jié)構(gòu)分為兩個(gè)部分:
1、Web應(yīng)用:模擬社交媒體內(nèi)容更新和數(shù)據(jù)處理流程。Web用戶的請(qǐng)求從API網(wǎng)關(guān)轉(zhuǎn)發(fā)到函數(shù)計(jì)算以進(jìn)行處理。函數(shù)計(jì)算之后更新數(shù)據(jù)庫中的處理內(nèi)容并更新索引。另外一個(gè)Function Compute實(shí)例將索引更新推送到搜索引擎,其中新內(nèi)容由外部客戶檢索,形成一個(gè)閉環(huán)數(shù)據(jù)的處理過程。
2、智能設(shè)備:IOT網(wǎng)關(guān)將智能設(shè)備狀態(tài)推送到處理計(jì)算機(jī)的功能,函數(shù)計(jì)算使用API向Mobile Push發(fā)送消息,Mobile Push將消息推送到移動(dòng)終端進(jìn)行狀態(tài)確認(rèn)和管理。
智能設(shè)備狀態(tài)處理也產(chǎn)生了幾個(gè)關(guān)鍵的技術(shù)難題,用戶必須設(shè)計(jì)一個(gè)高效的非輪詢技術(shù)框架來處理從大量設(shè)備到IoT平臺(tái)的狀態(tài)數(shù)據(jù)。然后,需要一種將處理過的數(shù)據(jù)高效透明地傳輸?shù)狡渌a(chǎn)品的方法,例如寫入數(shù)據(jù)庫或?qū)?shù)據(jù)推送到移動(dòng)終端。
應(yīng)用場(chǎng)景四:共享遞送調(diào)度系統(tǒng)
用戶可以使用調(diào)度平臺(tái)來選擇由各種銷售商提供的服務(wù),如訂購食品或購買產(chǎn)品。然后,調(diào)度平臺(tái)通知最近的交付人員從最近的銷售者那里提取相關(guān)產(chǎn)品并將產(chǎn)品交付給客戶。如下圖所示:
工作流程分為以下5步:
1、客戶通知調(diào)度平臺(tái)訂購產(chǎn)品;
2、調(diào)度平臺(tái)通知最近的投遞人員;
3、調(diào)度平臺(tái)同時(shí)通知賣方銷售產(chǎn)品;
4、送貨人員到指定的賣家領(lǐng)取產(chǎn)品;
5、送貨人員將產(chǎn)品送達(dá)客戶所在地。
這樣的過程可以很容易地以無服務(wù)器架構(gòu)實(shí)現(xiàn)。在下面的圖表中,阿里巴巴云函數(shù)計(jì)算與其他產(chǎn)品一起使用,以開發(fā)配送調(diào)度系統(tǒng)。
操作流程由以下3步:
1、客戶應(yīng)用程序通過API網(wǎng)關(guān)透明地發(fā)送訂單請(qǐng)求到函數(shù)計(jì)算;
2、函數(shù)計(jì)算將處理后的數(shù)據(jù)發(fā)送到表存儲(chǔ)區(qū);
3、表存儲(chǔ)存儲(chǔ)路由數(shù)據(jù)、賣方信息和位置信息。
在此解決方案中,F(xiàn)unction Compute可以提供動(dòng)態(tài)調(diào)整大小的能力,而API網(wǎng)關(guān)執(zhí)行身份驗(yàn)證并確保安全訪問。函數(shù)計(jì)算可以與多個(gè)產(chǎn)品通信,無縫地使用其他資源和內(nèi)容。所有處理的數(shù)據(jù)都存儲(chǔ)在表存儲(chǔ)數(shù)據(jù)庫中,并且所有日志都直接加載到Log Service以供后續(xù)數(shù)據(jù)報(bào)告。
總結(jié):
通過前面四個(gè)應(yīng)用場(chǎng)景案例可以看出,無服務(wù)器架構(gòu)能夠?yàn)殚_發(fā)人員和企業(yè)帶來了許多好處,阿里巴巴云功能計(jì)算能夠幫助用戶開發(fā)無服務(wù)器體系結(jié)構(gòu),同時(shí)解決成本、效率和連接性方面的問題。
雖然函數(shù)計(jì)算適用于許多場(chǎng)景,但它不是一成不變的解決方案。例如,對(duì)于沒有重大請(qǐng)求波動(dòng)的企業(yè)來說,它可能不是最具成本效益的解決方案。此外,F(xiàn)unction Compute的執(zhí)行環(huán)境不記錄狀態(tài),因此無服務(wù)器框架不適合緊密耦合的應(yīng)用程序。
至今為止,作為一種新興技術(shù),無服務(wù)器架構(gòu)仍然沒有發(fā)揮出開發(fā)者和企業(yè)的全部潛力。