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

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

點此查看原文:http://click.aliyun.com/m/40926/後端

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

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

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

圖片描述

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

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

一、硬件資源使用顆粒度變小框架

二、資源利用率愈來愈高less

三、運維工做逐步減小運維

Serverless架構主要有如下特色:

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

二、不須要預先分配資源。

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

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

根據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來運行代碼。函數計算會準備好運行環境,並根據請求峯值來動態擴容運行環境,函數計算是按照執行時間來計費,請求處理完成後,計費中止,對於有業務請求有明顯高峯和低谷的應用來講,相對節省成本。

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

圖片描述

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

步驟2:把代碼上傳到函數計算上,上傳的方式有經過API或者SDK上傳,也能夠經過控制檯頁面上傳上傳,還能夠經過命令行工具Fcli上傳。

步驟3:經過API&SDK來觸發函數計算執行,一樣也能夠經過雲產品的事件源來觸發函數計算執行。

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

步驟5:函數執行結束後,能夠經過帳單來查看執行費用,根據函數的實際執行時間按量計費,收費粒度精確到100ms。

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

事件觸發計算能力

圖片描述

場景描述:用戶經過手機終端,Web應用,或者PC工具把各類文件包括圖片、視頻以及文本等上傳到OSS(對象存儲,下同)後,利用OSS的PutObject的事件能夠觸發函數計算對上傳後的文件進行處理,目前比較典型的場景當用戶把視頻文件上傳到OSS後,觸發函數計算把對象的Meta信息獲取並傳輸給核心算法庫,核心算法庫根據算法把相應的視頻文件推送CDN源站,達到特定視頻熱加載的處理。另一個場景,視頻文件上傳到OSS後也同時觸發函數計算同步作多轉碼率的處理,並把處理後的視頻文件存儲到OSS中,完成輕量的數據處理。

在多媒體的處理場景中,常常會碰到海量文件上傳到OSS後,還須要對文件進行進一步的加工,例如加水印、轉碼率、獲取文件屬性等操做,這個場景中,用戶在處理的時候會遇到如下須要解決的技術難點:

一、 如何接收文件上傳後的動做事件,一般的作法是定製消息通道來接收OSS事件通知,搭建一個運行環境,並編寫相關的代碼來處理事件通知。

二、如何高效的處理完海量上傳的文件。

三、如何無縫的把多個雲產品鏈接起來。

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

事件觸發場景常規作法:

一、設置消息通道接收事件,並編寫業務代碼。

二、購買服務器資源作後端數據處理。

三、設計一套多併發框架完成業務上傳文件峯值的處理。

四、開通多個產品,並調用SDK代碼來完成業務交互。

函數計算解法:

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

二、代碼寫到函數計算裏,不須要管理軟硬件環境。

三、 業務高峯期函數計算會動態伸縮,無需管理。

四、內置打通多款產品,簡單配置就能夠無縫對接。

相關文章
相關標籤/搜索