基於阿里雲Serverless架構下函數計算的最新應用場景詳解(二)

摘要: Serverless概念是近年來特別火的一個技術概念,基於這種架構能構建出不少應用場景,適合各行各業,只要對輕計算、高彈性、無狀態等場景有訴求的用戶均可以經過本文來普及一些基礎概念,看看這些場景是否對用戶有一些指導意義。數據庫

點此查看原文:http://click.aliyun.com/m/40927/編程

利用彈性擴容(視頻直播多人連麥場景)後端

圖片描述
場景描述:安全

直播間的客戶端把主播和連麥觀衆的音視頻採集發送給函數計算作混流服務,函數計算把數據聚集後交給混流服務進行合成,並把合成畫面視頻流推送給CDN,終端觀衆實時拉取直播流,能實時看到混流合成畫面。服務器

視頻直播應用場景中,有一種場景視頻直播的多人連麥,主播能夠同時和多個工做進行連麥,把多個觀衆或者好友畫面接入,並把畫面合成到一個場景中,供給更多觀看直播的觀衆觀看。這個場景中,有幾個技術難度須要關注:架構

連麥的觀衆不固定,須要考慮適度的併發和彈性。
直播不可能24小時在線,有較爲明顯的業務訪問高峯期和低谷期。
直播是事件或者公衆點爆的場景,更新速度較快,版本迭代較快,須要快速完成對新熱點的技術升級。
綜合以上幾個特色,能夠經過Serverless這種架構的來完美解決以上痛點。併發

函數計算做爲連麥觀衆和主播接入的實時音頻和視頻轉發集羣,當併發量過來時候,函數計算自動擴容多個執行環境來處理實時數據流,當業務高峯期過去後,會適度縮減資源使用,代碼管理部署在雲端,代碼迭代能夠隨時進行修改和維護,無需再多管理一套軟件運行環境。負載均衡

視頻直播場景常規作法:框架

購買負載均衡應付併發。
購買計算資源作數據處理。
業務低谷期須要想辦法釋放硬件資源來節省成本。
多版本要維護多套運行環境。
函數計算解法:less

一、把負載分發程序寫到函數裏。

二、多版本迭代無需更換運行環境,僅僅替換代碼版本便可。

三、業務訪問按需付費,業務低谷期無費用。

物聯網數據處理場景
圖片描述
整個架構圖分紅2部份內容:

一部分是Web應用,模擬一個社交內容更新和數據處理的流程,Web用戶經過API網關把請求轉發到函數計算進行處理,函數計算把處理後的內容更新到數據庫中,並更新索引,另一個函數計算把索引更新推送的搜索引擎供給外部客戶進行檢索,完成整個數據閉環處理。

另外一部分是智能設備經過IoT網關把設備狀態推送到函數計算處理,函數計算經過API接口把消息經過移動推送服務,推送給移動端進行狀態確認和管理。在智能設備狀態處理的場景中,一樣也會碰到幾個核心技術問題要解決,當海量設備把狀態發送到IoT平臺後,如何設計一套高效非輪詢的技術框架來處理設備狀態數據;如何把處理後的數據高效透傳其餘產品,例如寫數據庫或者推送給移動端。

IoT設備狀態場景常規作法:

設置消息通道接收事件,並編寫業務代碼。
購買服務器資源作後端數據處理。
開通多個產品,並調用SDK代碼來完成業務交互。
維護相關硬件軟件環境。

函數計算解法:

定製IoT平臺的事件通知,直接把業務代碼寫到函數計算中。
不須要維護運行環境,用完便可釋放。
控制檯配置,就能夠把信息透傳給相關產品。
經過兩種方式的對比,能看出函數計算的解法更具有通用性和大量減小維護工做。

共享派單系統詳解

客戶經過派單平臺選着某種商家提供的服務,多是餐飲、商品、或者服務。派單平臺通知最近的騎手到最近的商家拿到服務並派送到客戶手裏。一個簡單的流程圖以下:

圖片描述
流程詳解:

步驟一、客戶通知派單平臺下單某商品

步驟二、派單平臺通知最新騎手

步驟三、派單平臺同時通知商家商品售賣出去

步驟四、騎手到指定的商家獲取商品

步驟五、騎手配送到客戶所在地

這個派單場景中,要解決幾個棘手的技術:

整合多種資源,計算資源會涉及到,騎手位置信息、最優路徑規劃、車況狀況、調度系統等

低延遲:派單系統對訂單的響應要求很高,從接單到商家在到客戶,整個閉環都須要在段時間內完成。

海量數據:涉及到三方面的數據,客戶數據、商家數據、平臺騎手數據、位置信息、商品信息等。

請求明顯波峯波谷:派單系統在一天中的資源使用很是不均衡,波峯期,例如外賣,在中午和晚飯達到高峯,平時空閒。

經過技術選型轉化成阿里雲產品的解決方案後,函數計算結合其餘產品比較完美的解決上述問題,解決方案圖以下圖所示:

圖片描述
流程詳解:

客戶APP把訂單請求經過API網關透傳給函數計算,函數計算把處理後的數據傳輸給表格存儲,表格存儲存放了騎行數據、商家信息、位置信息等,其中騎行日誌會存放到日誌服務裏,便於後續作報表分析。騎行過程當中騎手頭像、隨手拍街景會存放到OSS中,騎手位置能夠經過函數計算去拉取第三方地圖信息,例如高德地圖等。這個方案中,函數計算能夠完成動態擴容問題,API網關能夠解決鑑權和安全訪問問題,函數計算打通了多款產品,能夠無縫使用其餘資源和內容。全部處理後的數據能夠存放到表格存儲數據庫中,全部日誌均可以直接加載到日誌服務爲後續數據報表服務。

共享派單系統常規作法:

購買多臺服務器來支持高峯期的訪問,訪問波谷期自行設置釋放原則。
經過編程方式完成多個產品的交互。
爲了保證負載均衡,須要購買相關的產品來支撐。
人工維護相關硬件軟件環境。

函數計算解法:

定製IoT平臺的事件通知,直接把業務代碼寫到函數計算中。
不須要維護運行環境,用完便可釋放。
控制檯配置,就能夠把信息透傳給相關產品。
兩種解法都能達到目標,從資源利用率和可維護性來看,使用Serverless架構的方式會更優。

4. 總結
經過上面幾個個場景的詳解,咱們大體能夠得出這樣的結論,經過事件觸發場景、有業務訪問高峯和低谷的場景、迭代次數較多、須要快速打通多款產品場景,經過函數計算能完美的解決成本、效率、聯通等問題。

表3-1函數計算和傳統自建服務器的優劣對比

圖片描述
圖片描述

函數計算雖然適用於不少場景,但也不是覆蓋所有應用場景的萬金油。例如某些業務在一天中沒有明顯的請求波峯波谷,請求相對平緩,那麼使用函數計算成本不見得會節省多少。Serverless這種框架是新興的技術,目前相應的支持開發工具較少,總體這個框架還在探索中。另外函數計算的執行環境是不記錄狀態的,有些耦合性較強的應用也不太適合用Serverless這種框架。受限於資源大小分配,一些大型的應用程序也不太容易能拆分能搬上來。

相關文章
相關標籤/搜索