基於Serverless架構最新應用場景詳解

暖夏未眠丶發表於2018-01-17

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

Serverless概念是近年來特別火的一個技術概念。基於這種架構能構建出很多應用場景,適用於各行各業。只要是對輕計算、高彈性、無狀態等場景有訴求,您都可以通過本文來熟悉一些基礎概念,並從相關場景中獲得啟發。

關於Serverless架構的前世今生,網上比較流行一張描述人類形態發展史的網圖。從爬行猿人到蹲著的類猿人,再到直立人類,最後到使用工具的新興人類。從四隻腳爬行到直立行走,釋放了雙手,從釋放雙手到開始使用工具。

人類的進化每一次都伴隨著生產效率的提升。同理,在整個IT計算的發展里程,也是逐步提高生產效率的里程,具體演進圖如下所示:

d8d956d66eec1d2ce5be9093f6e4d6a86fe9a2ce

從大型物理機到通過虛擬化技術把物理機虛擬成單個的VM資源,從虛擬化叢集到把叢集搬到雲端計算上只做簡單運維,再到把每一個VM按照執行空間最小化切分成更細的Docker容器,再從Doceker容器變成乾脆不用管理任何執行環境的Serverless服務,即僅僅需要編寫核心程式碼即可。

代際的技術變革都是把資源切分得更細緻,讓執行效率變得更高,讓硬體軟體維護變得更加簡單。IT技術架構的演進主要有以下幾個特點:

1、硬體資源使用顆粒度變小

2、資源利用率越來越高

3、運維工作逐步減少

Serverless架構主要有以下特點:

1、實現了細粒度的計算資源分配。

2、不需要預先分配資源。

3、具備真正意義上的高度擴容和彈性。

4、按需使用,按需計費。

根據Serverless的這些通用特點,歸納出下面幾種典型使用場景,供大家參考。

事件請求場景

定製圖片

網店中的商品圖片維護,根據商品陳列位置,要求需要動態切割成不同尺寸圖片,或者打上不同水印,當店家把圖片上傳到阿里雲OSS上,會通過函式計算上定製的trigger來觸發函式計算。根據計算規則,生成不同尺寸的圖片,滿足電商陳列使用,整個過程無需再搭建額外伺服器,也無需網站美工干預。

物聯網中的低頻請求

物聯網行業中,由於物聯網裝置傳輸資料量小,且往往是固定時間間隔進行資料傳輸,因此經常涉及低頻請求場景。

例如:物聯網應用程式每分鐘僅執行一次,每次執行50ms,這意味著CPU的使用率為0.1%/小時,這也意味著其實有1000個相同的應用可以共享計算資源。而Serverless架構下,使用者可以購買每分鐘100ms的資源來滿足計算需求,通過這種方式就能夠有效解決效率問題,降低使用成本。

定製事件

使用者註冊時發郵件驗證郵箱地址,同樣通過定製的事件來觸發後續的註冊流程,而無需再配置額外的應用無伺服器來處理後續的請求。

固定時間觸發

事件觸發固定時間觸發,例如在夜間或者服務空閒時間來處理繁忙時候的交易資料,或者執行批量資料,來生成資料包表,通過Serverless方式,不用再額外購買利用率並不高的處理資源。

流量突發場景

彈性擴充套件應對突發流量

移動網際網路應用經常會面對突發流量場景。例如:移動應用的通常流量情況是QPS 20,但每隔5分鐘會有一個持續10s的QPS 200流量(10倍於通常流量)。傳統架構下,企業必須擴充套件QPS 200的硬體能力來應對業務高峰,即使高峰時間僅佔整個執行時間的4%。

在Serverless架構下,您可以利用彈性擴充套件特性,快速構建新的計算能力來滿足當前需求,當業務高峰後,資源能夠自動釋放,有效節省成本。

轉碼和流量擴容

視訊直播某次專場活動,由於無法預估會有多少點播的觀眾視訊接入,把轉碼和流量擴容這部分內容通過Function來處理,無需考慮併發和流量擴容。

處理大資料場景

由於安全審計問題,您需要從OSS(多個地域)過去一年的資料(1個小時一個檔案)中找出特定關鍵字訪問的日誌,同時做聚合運算(計算出總值)。如果使用阿里雲函式計算,您將高峰期每2小時的訪問日誌,或者低谷期每4小時的訪問日誌交給一個計算函式處理,並將處理結果存到RDS中。使用一個函式分派資料給另一個函式,使其執行成千上萬個相同的例項。

這樣會同時執行近千個計算函式(24 x 365 / 10),在不到一分鐘的時間內完成整個工作。同樣的事情交給ECS+計算指令碼來做計算,單單為這些instance配置網路就讓人頭疼(不同地域無法走內網下載OSS檔案):instance的數量可能已經超出了子網中剩餘IP地址的數量(比如,您的VPC使用了24位掩碼)。

下面結合阿里雲的函式計算產品來講解各個應用場景中架構以及如何解決的場景中的痛點。阿里雲的函式計算是基於Serverless這種架構實現的一個全託管產品,使用者只需要上傳核心程式碼到函式計算,就可以通過事件源或者SDK&API來執行程式碼。函式計算會準備好執行環境,並根據請求峰值來動態擴容執行環境,函式計算是按照執行時間來計費,請求處理完成後,計費停止,對於有業務請求有明顯高峰和低谷的應用來說,相對節省成本。

下圖是函式計算的一個開發者試用操作流程:

918aa9e18325e5855f8a49c2dd18bda9aaf6a9db

步驟1:開發者編寫程式碼,目前支援的語言Java、NodeJS、Python等語言。

步驟2:把程式碼上傳到函式計算上,上傳的方式有通過API或者SDK上傳,也可以通過控制檯頁面上傳上傳,還可以通過命令列工具Fcli上傳。

步驟3:通過API&SDK來觸發函式計算執行,同樣也可以通過雲產品的事件源來觸發函式計算執行。

步驟4:函式計算在執行過程中,會根據使用者請請求量動態擴容函式計算來保證請求峰值的執行,這個過程對使用者是透明無感知的。

步驟5:函式執行結束後,可以通過賬單來檢視執行費用,根據函式的實際執行時間按量計費,收費粒度精確到100ms。

講解完上面的流程後,下面會詳細講解3個Serverless的應用場景,通過案例分享能讓您對Serverless這種架構有更清晰的認識。

056cf4606d7b18ab74d22b2fd982cedc74daa4c8

場景描述:使用者通過手機終端,Web應用,或者PC工具把各種檔案包括圖片、視訊以及文字等上傳到OSS(物件儲存,下同)後,利用OSS的PutObject的事件可以觸發函式計算對上傳後的檔案進行處理,目前比較典型的場景當使用者把視訊檔案上傳到OSS後,觸發函式計算把物件的Meta資訊獲取並傳輸給核心演算法庫,核心演算法庫根據演算法把相應的視訊檔案推送CDN源站,達到特定視訊熱載入的處理。另外一個場景,視訊檔案上傳到OSS後也同時觸發函式計算同步做多轉位元速率的處理,並把處理後的視訊檔案儲存到OSS中,完成輕量的資料處理。

在多媒體的處理場景中,經常會碰到海量檔案上傳到OSS後,還需要對檔案進行進一步的加工,例如加水印、轉位元速率、獲取檔案屬性等操作,這個場景中,使用者在處理的時候會遇到以下需要解決的技術難點:

1、 如何接收檔案上傳後的動作事件,通常的做法是定製訊息通道來接收OSS事件通知,搭建一個執行環境,並編寫相關的程式碼來處理事件通知。

2、如何高效的處理完海量上傳的檔案。

3、如何無縫的把多個雲產品連線起來。

通過函式計算能比較方便解決以上幾個技術難點,首先函式計算可以設定OSS的觸發器來接收事件通知,在函式計算中編寫業務程式碼來處理檔案,並通過內網把檔案傳輸到OSS中,整個流程簡單易用可擴充套件。可以把核心程式碼部署到函式計算中,通過函式計算來併發處理事件通知。函式計算目前打通了多款產品的內部互動,通過控制檯簡單配置就可以高效的解決產品間連線問題。

事件觸發場景常規做法:

1、設定訊息通道接收事件,並編寫業務程式碼。

2、購買伺服器資源做後端資料處理。

3、設計一套多併發框架完成業務上傳檔案峰值的處理。

4、開通多個產品,並呼叫SDK程式碼來完成業務互動。

函式計算解法:架構


1、在控制檯上配置事件源通知,編寫業務程式碼。

2、程式碼寫到函式計算裡,不需要管理軟硬體環境。

3、 業務高峰期函式計算會動態伸縮,無需管理。

4、內建打通多款產品,簡單配置就可以無縫對接。


關於函式計算更多詳情,請移步這裡!

原文連結


相關文章