導(dǎo)讀:從四種場景出發(fā),詳細(xì)解讀無服務(wù)器架構(gòu)的落地應(yīng)用 無服務(wù)器架構(gòu)作為一種新的技術(shù)概念迅速涌現(xiàn)出來。由于無服務(wù)器解決方案能夠幫助企業(yè)輕松構(gòu)建輕量級、高度靈活和無狀態(tài)的應(yīng)用程序,因此得到了很多企業(yè)的青睞,許多企業(yè)已經(jīng)開始將無服務(wù)器產(chǎn)品納入他們的解決方案。
近年來,無服務(wù)器架構(gòu)作為一種新的技術(shù)概念迅速涌現(xiàn)出來。由于無服務(wù)器解決方案能夠幫助企業(yè)輕松構(gòu)建輕量級、高度靈活和無狀態(tài)的應(yīng)用程序,因此得到了很多企業(yè)的青睞,許多企業(yè)已經(jīng)開始將無服務(wù)器產(chǎn)品納入他們的解決方案。使用此架構(gòu),開發(fā)人員可以為各種行業(yè)創(chuàng)建各種應(yīng)用程序。在這篇文章中,我們將借助阿里巴巴云功能計算服務(wù)器,通過四種實際應(yīng)用場景來探討應(yīng)用程序在無服務(wù)器架構(gòu)上的實際操作。
在開始之前,讓我們先來熟悉一下無服務(wù)器架構(gòu)的歷史和主要優(yōu)勢。
無服務(wù)器技術(shù)的演進(jìn)
每一個新技術(shù)概念的引入伴隨著生產(chǎn)力的提高,無服務(wù)器技術(shù)也不例外。開發(fā)人員一直在尋找更有效的方法來維持軟件開發(fā)生命周期,而無服務(wù)器架構(gòu)且可以幫助企業(yè)專注于應(yīng)用程序開發(fā),不再需要擔(dān)心服務(wù)器等基礎(chǔ)設(shè)施的部署建設(shè)和運維管理,這即可以很好的降低開發(fā)成本和縮短開發(fā)周期。
無服務(wù)器體系結(jié)構(gòu)的開發(fā)建立在從虛擬化(云計算)開始的先前成就的基礎(chǔ)上,雖然這個過程是相當(dāng)連續(xù)的,但它有幾個值得注意的里程碑:
1、引入虛擬化技術(shù)替代大型物理服務(wù)器虛擬化為獨立的虛擬機資源。
2、虛擬化集群被移動到簡單的O.M的云計算平臺。
3、基于最小化操作空間的原則,將每個VM細(xì)分為Docker容器。
4、構(gòu)建在Docker容器上的應(yīng)用程序不需要任何運行時的環(huán)境管理,只需要核心代碼的無服務(wù)器體系結(jié)構(gòu)。
5、Server是為了幫助開發(fā)人員專注于應(yīng)用程序邏輯而不是為服務(wù)器基礎(chǔ)結(jié)構(gòu)引入的。
無服務(wù)器架構(gòu)具有以下特點:
1、粒度計算資源;
2、資源不需要預(yù)先分配;
3、高度可伸縮和靈活的體系結(jié)構(gòu);
4、用戶只需要支付所使用的資源即可。
具體來說,阿里巴巴云函數(shù)計算為用戶提供以下優(yōu)點:
1、沒有基礎(chǔ)設(shè)施管理。函數(shù)計算使用戶能夠?qū)W⒂陂_發(fā)具有低操作和維護(hù)成本的主業(yè)務(wù)邏輯。
2、與Alibaba Cloud服務(wù)無縫集成。函數(shù)計算有助于快速構(gòu)建應(yīng)用程序,例如用戶可以用OSS連接一個函數(shù)來進(jìn)行圖像和視頻數(shù)據(jù)處理。當(dāng)新數(shù)據(jù)上傳到OSS時,自動觸發(fā)一個函數(shù)來處理上傳的數(shù)據(jù)。
3、在毫秒內(nèi)實現(xiàn)彈性縮放。
4、按需付費。只收取實際使用的計算資源,大大降低了成本,尤其適用于具有不可預(yù)測的業(yè)務(wù)模式場景。
應(yīng)用場景一:事件觸發(fā)計算
無服務(wù)器可應(yīng)用于涉及多個設(shè)備訪問各種文件類型的場景,例如移動電話和PC上傳圖像、視頻和文本文件。
通過使用帶有對象存儲服務(wù)(OSS)的函數(shù)計算,用戶可以為阿里巴巴云上的多個設(shè)備訪問各種文件類型的場景應(yīng)用使用無服務(wù)器體系結(jié)構(gòu)。在用戶將視頻文件上傳到OSS之后,觸發(fā)Function Compute以獲取對象元數(shù)據(jù)并將其傳輸?shù)胶诵乃惴◣熘?。基于該算法,核心算法庫將相關(guān)視頻文件推送到CDN源站點,對指定的視頻進(jìn)行熱加載。在另外一個場景中,視頻文件上傳到OSS后,觸發(fā)Function Compute以同步多個轉(zhuǎn)碼率并將處理后的視頻文件存儲在OSS中,這樣即提供了輕量級的數(shù)據(jù)處理的解決方案。
在多媒體處理場景中,大量的文件通常被上傳到OSS進(jìn)行處理,如水印、代碼轉(zhuǎn)換、文件屬性數(shù)據(jù)獲取等。函數(shù)計算可以通過以下特性幫助用戶快速解決事件觸發(fā)計算場景中的技術(shù)困難:
1、函數(shù)計算可以設(shè)置OSS觸發(fā)器來接收事件通知。在函數(shù)計算中,用戶可以編寫代碼來處理文件,并通過內(nèi)聯(lián)網(wǎng)將文件傳輸?shù)絆SS,整個過程即簡單又可以輕松擴展。
2、用戶可以將核心代碼構(gòu)建為函數(shù)計算,并使用代碼并發(fā)處理事件通知。
3、函數(shù)計算目前已經(jīng)提供與其他產(chǎn)品的內(nèi)部交互支持。
應(yīng)用場景二:實時視頻廣播的彈性調(diào)整
無服務(wù)器架構(gòu)是實時視頻廣播應(yīng)用場景的理想選擇。在下面的圖片中,廣播室客戶端收集來自主機和觀眾的音頻和視頻流,并將它們發(fā)送到Function Compute進(jìn)行多路復(fù)用。函數(shù)計算器將收集到的數(shù)據(jù)發(fā)送到多路復(fù)用服務(wù)進(jìn)行合成,并將合成的視頻流推送到CDN。觀眾可以實時地觀看直播流以查看多路復(fù)用和合成視頻。
在某些實況視頻應(yīng)用場景中,多個觀眾成員能夠交互,因此主機可以同時連接到多個麥克風(fēng)。主機可以將多個觀眾或朋友連接到屏幕上,并將圖片合成為單個場景,然后將其提供給現(xiàn)場觀眾。
無服務(wù)器架構(gòu)解決了在這樣的應(yīng)用場景中可能出現(xiàn)的困難。作為主機和連接麥克風(fēng)的實時音頻和視頻轉(zhuǎn)發(fā)集群,F(xiàn)unction Compute根據(jù)并發(fā)卷自動調(diào)整用于處理實時數(shù)據(jù)流的多個執(zhí)行環(huán)境的大小。在流量高峰之后,功能計算可以適當(dāng)?shù)販p少資源量。由于代碼管理功能部署在云上,因此允許用戶隨時修改和維護(hù)代碼迭代,不再需要管理多個軟件運行時的環(huán)境。
應(yīng)用場景三:物聯(lián)網(wǎng)數(shù)據(jù)處理
無服務(wù)器架構(gòu)可以應(yīng)用于物聯(lián)網(wǎng)(IOT)場景中,如下圖所示:
該應(yīng)用體系結(jié)構(gòu)分為兩個部分:
1、Web應(yīng)用:模擬社交媒體內(nèi)容更新和數(shù)據(jù)處理流程。Web用戶的請求從API網(wǎng)關(guān)轉(zhuǎn)發(fā)到函數(shù)計算以進(jìn)行處理。函數(shù)計算之后更新數(shù)據(jù)庫中的處理內(nèi)容并更新索引。另外一個Function Compute實例將索引更新推送到搜索引擎,其中新內(nèi)容由外部客戶檢索,形成一個閉環(huán)數(shù)據(jù)的處理過程。
2、智能設(shè)備:IOT網(wǎng)關(guān)將智能設(shè)備狀態(tài)推送到處理計算機的功能,函數(shù)計算使用API向Mobile Push發(fā)送消息,Mobile Push將消息推送到移動終端進(jìn)行狀態(tài)確認(rèn)和管理。
智能設(shè)備狀態(tài)處理也產(chǎn)生了幾個關(guān)鍵的技術(shù)難題,用戶必須設(shè)計一個高效的非輪詢技術(shù)框架來處理從大量設(shè)備到IoT平臺的狀態(tài)數(shù)據(jù)。然后,需要一種將處理過的數(shù)據(jù)高效透明地傳輸?shù)狡渌a(chǎn)品的方法,例如寫入數(shù)據(jù)庫或?qū)?shù)據(jù)推送到移動終端。
應(yīng)用場景四:共享遞送調(diào)度系統(tǒng)
用戶可以使用調(diào)度平臺來選擇由各種銷售商提供的服務(wù),如訂購食品或購買產(chǎn)品。然后,調(diào)度平臺通知最近的交付人員從最近的銷售者那里提取相關(guān)產(chǎn)品并將產(chǎn)品交付給客戶。如下圖所示:
工作流程分為以下5步:
1、客戶通知調(diào)度平臺訂購產(chǎn)品;
2、調(diào)度平臺通知最近的投遞人員;
3、調(diào)度平臺同時通知賣方銷售產(chǎn)品;
4、送貨人員到指定的賣家領(lǐng)取產(chǎn)品;
5、送貨人員將產(chǎn)品送達(dá)客戶所在地。
這樣的過程可以很容易地以無服務(wù)器架構(gòu)實現(xiàn)。在下面的圖表中,阿里巴巴云函數(shù)計算與其他產(chǎn)品一起使用,以開發(fā)配送調(diào)度系統(tǒng)。
操作流程由以下3步:
1、客戶應(yīng)用程序通過API網(wǎng)關(guān)透明地發(fā)送訂單請求到函數(shù)計算;
2、函數(shù)計算將處理后的數(shù)據(jù)發(fā)送到表存儲區(qū);
3、表存儲存儲路由數(shù)據(jù)、賣方信息和位置信息。
在此解決方案中,F(xiàn)unction Compute可以提供動態(tài)調(diào)整大小的能力,而API網(wǎng)關(guān)執(zhí)行身份驗證并確保安全訪問。函數(shù)計算可以與多個產(chǎn)品通信,無縫地使用其他資源和內(nèi)容。所有處理的數(shù)據(jù)都存儲在表存儲數(shù)據(jù)庫中,并且所有日志都直接加載到Log Service以供后續(xù)數(shù)據(jù)報告。
總結(jié):
通過前面四個應(yīng)用場景案例可以看出,無服務(wù)器架構(gòu)能夠為開發(fā)人員和企業(yè)帶來了許多好處,阿里巴巴云功能計算能夠幫助用戶開發(fā)無服務(wù)器體系結(jié)構(gòu),同時解決成本、效率和連接性方面的問題。
雖然函數(shù)計算適用于許多場景,但它不是一成不變的解決方案。例如,對于沒有重大請求波動的企業(yè)來說,它可能不是最具成本效益的解決方案。此外,F(xiàn)unction Compute的執(zhí)行環(huán)境不記錄狀態(tài),因此無服務(wù)器框架不適合緊密耦合的應(yīng)用程序。
至今為止,作為一種新興技術(shù),無服務(wù)器架構(gòu)仍然沒有發(fā)揮出開發(fā)者和企業(yè)的全部潛力。