從四種場景出發,詳細解讀無伺服器架構的落地應用
近年來,無伺服器架構作為一種新的技術概念迅速湧現出來。由於無伺服器解決方案能夠幫助企業輕鬆構建輕量級、高度靈活和無狀態的應用程式,因此得到了很多企業的青睞,許多企業已經開始將無伺服器產品納入他們的解決方案。使用此架構,開發人員可以為各種行業建立各種應用程式。在這篇文章中,我們將藉助阿里巴巴雲功能計算伺服器,通過四種實際應用場景來探討應用程式在無伺服器架構上的實際操作。
在開始之前,讓我們先來熟悉一下無伺服器架構的歷史和主要優勢。
無伺服器技術的演進
每一個新技術概念的引入伴隨著生產力的提高,無伺服器技術也不例外。開發人員一直在尋找更有效的方法來維持軟體開發生命週期,而無伺服器架構且可以幫助企業專注於應用程式開發,不再需要擔心伺服器等基礎設施的部署建設和運維管理,這即可以很好的降低開發成本和縮短開發週期。
無伺服器體系結構的開發建立在從虛擬化(雲端計算)開始的先前成就的基礎上,雖然這個過程是相當連續的,但它有幾個值得注意的里程碑:
1、引入虛擬化技術替代大型物理伺服器虛擬化為獨立的虛擬機器資源。
2、虛擬化叢集被移動到簡單的O.M的雲端計算平臺。
3、基於最小化操作空間的原則,將每個VM細分為Docker容器。
4、構建在Docker容器上的應用程式不需要任何執行時的環境管理,只需要核心程式碼的無伺服器體系結構。
5、Server是為了幫助開發人員專注於應用程式邏輯而不是為伺服器基礎結構引入的。
無伺服器架構具有以下特點:
1、粒度計算資源;
2、資源不需要預先分配;
3、高度可伸縮和靈活的體系結構;
4、使用者只需要支付所使用的資源即可。
具體來說,阿里巴巴雲函式計算為使用者提供以下優點:
1、沒有基礎設施管理。函式計算使使用者能夠專注於開發具有低操作和維護成本的主業務邏輯。
2、與Alibaba Cloud服務無縫整合。函式計算有助於快速構建應用程式,例如使用者可以用OSS連線一個函式來進行影象和視訊資料處理。當新資料上傳到OSS時,自動觸發一個函式來處理上傳的資料。
3、在毫秒內實現彈性縮放。
4、按需付費。只收取實際使用的計算資源,大大降低了成本,尤其適用於具有不可預測的業務模式場景。
應用場景一:事件觸發計算
無伺服器可應用於涉及多個裝置訪問各種檔案型別的場景,例如行動電話和PC上傳影象、視訊和文字檔案。
通過使用帶有物件儲存服務(OSS)的函式計算,使用者可以為阿里巴巴雲上的多個裝置訪問各種檔案型別的場景應用使用無伺服器體系結構。在使用者將視訊檔案上傳到OSS之後,觸發Function Compute以獲取物件元資料並將其傳輸到核心演算法庫中。基於該演算法,核心演算法庫將相關視訊檔案推送到CDN源站點,對指定的視訊進行熱載入。在另外一個場景中,視訊檔案上傳到OSS後,觸發Function Compute以同步多個轉位元速率並將處理後的視訊檔案儲存在OSS中,這樣即提供了輕量級的資料處理的解決方案。
在多媒體處理場景中,大量的檔案通常被上傳到OSS進行處理,如水印、程式碼轉換、檔案屬性資料獲取等。函式計算可以通過以下特性幫助使用者快速解決事件觸發計算場景中的技術困難:
1、函式計算可以設定OSS觸發器來接收事件通知。在函式計算中,使用者可以編寫程式碼來處理檔案,並通過內聯網將檔案傳輸到OSS,整個過程即簡單又可以輕鬆擴充套件。
2、使用者可以將核心程式碼構建為函式計算,並使用程式碼併發處理事件通知。
3、函式計算目前已經提供與其他產品的內部互動支援。
應用場景二:實時視訊廣播的彈性調整
無伺服器架構是實時視訊廣播應用場景的理想選擇。在下面的圖片中,廣播室客戶端收集來自主機和觀眾的音訊和視訊流,並將它們傳送到Function Compute進行多路複用。函式計算器將收集到的資料傳送到多路複用服務進行合成,並將合成的視訊流推送到CDN。觀眾可以實時地觀看直播流以檢視多路複用和合成視訊。
在某些實況視訊應用場景中,多個觀眾成員能夠互動,因此主機可以同時連線到多個麥克風。主機可以將多個觀眾或朋友連線到螢幕上,並將圖片合成為單個場景,然後將其提供給現場觀眾。
無伺服器架構解決了在這樣的應用場景中可能出現的困難。作為主機和連線麥克風的實時音訊和視訊轉發叢集,Function Compute根據併發卷自動調整用於處理實時資料流的多個執行環境的大小。在流量高峰之後,功能計算可以適當地減少資源量。由於程式碼管理功能部署在雲上,因此允許使用者隨時修改和維護程式碼迭代,不再需要管理多個軟體執行時的環境。
應用場景三:物聯網資料處理
無伺服器架構可以應用於物聯網(IOT)場景中,如下圖所示:
該應用體系結構分為兩個部分:
1、Web應用:模擬社交媒體內容更新和資料處理流程。Web使用者的請求從API閘道器轉發到函式計算以進行處理。函式計算之後更新資料庫中的處理內容並更新索引。另外一個Function Compute例項將索引更新推送到搜尋引擎,其中新內容由外部客戶檢索,形成一個閉環資料的處理過程。
2、智慧裝置:IOT閘道器將智慧裝置狀態推送到處理計算機的功能,函式計算使用API向Mobile Push傳送訊息,Mobile Push將訊息推送到移動終端進行狀態確認和管理。
智慧裝置狀態處理也產生了幾個關鍵的技術難題,使用者必須設計一個高效的非輪詢技術框架來處理從大量裝置到IoT平臺的狀態資料。然後,需要一種將處理過的資料高效透明地傳輸到其他產品的方法,例如寫入資料庫或將資料推送到移動終端。
應用場景四:共享遞送排程系統
使用者可以使用排程平臺來選擇由各種銷售商提供的服務,如訂購食品或購買產品。然後,排程平臺通知最近的交付人員從最近的銷售者那裡提取相關產品並將產品交付給客戶。如下圖所示:
工作流程分為以下5步:
1、客戶通知排程平臺訂購產品;
2、排程平臺通知最近的投遞人員;
3、排程平臺同時通知賣方銷售產品;
4、送貨人員到指定的賣家領取產品;
5、送貨人員將產品送達客戶所在地。
這樣的過程可以很容易地以無伺服器架構實現。在下面的圖表中,阿里巴巴雲函式計算與其他產品一起使用,以開發配送排程系統。
操作流程由以下3步:
1、客戶應用程式通過API閘道器透明地傳送訂單請求到函式計算;
2、函式計算將處理後的資料傳送到表儲存區;
3、表儲存儲存路由資料、賣方資訊和位置資訊。
在此解決方案中,Function Compute可以提供動態調整大小的能力,而API閘道器執行身份驗證並確保安全訪問。函式計算可以與多個產品通訊,無縫地使用其他資源和內容。所有處理的資料都儲存在表儲存資料庫中,並且所有日誌都直接載入到Log Service以供後續資料報告。
總結:
通過前面四個應用場景案例可以看出,無伺服器架構能夠為開發人員和企業帶來了許多好處,阿里巴巴雲功能計算能夠幫助使用者開發無伺服器體系結構,同時解決成本、效率和連線性方面的問題。
雖然函式計算適用於許多場景,但它不是一成不變的解決方案。例如,對於沒有重大請求波動的企業來說,它可能不是最具成本效益的解決方案。此外,Function Compute的執行環境不記錄狀態,因此無伺服器框架不適合緊密耦合的應用程式。
至今為止,作為一種新興技術,無伺服器架構仍然沒有發揮出開發者和企業的全部潛力。
【責任編輯:張誠 TEL:(010)68476606】