天天看點

入門篇:函數計算的基本概念和通用場景概述Serverless的基本概念Serverless和函數計算的差別函數計算的典型使用者場景

4月26日,阿裡雲正式推出了函數計算這個微服務産品,在此之前serverless的概念被炒的極其火熱,仿佛大家要歡天喜地進入了微服務的狂歡階段,不過光有概念很容易暈,今天我帶大家一起來細化一下serverless的基本概念、serverless跟傳統it架構的對比、serverless和函數計算的差別,以及函數計算最典型場景都有哪些。

serverless是一種基于網際網路的技術架構理念,應用邏輯并非全部在服務端實作,而是采用faas(function as a service)架構,通過功能組合來實作應用程式邏輯。同時,serverless架構能夠讓開發者在建構應用的過程中無需關注計算資源的擷取和運維,由平台來按需配置設定計算資源并保證應用執行的sla,按照調用次數進行計費,有效的節省應用成本。 

我畫個簡單對比圖來對比傳統it架構和serverless的真正差別在哪裡:

入門篇:函數計算的基本概念和通用場景概述Serverless的基本概念Serverless和函數計算的差別函數計算的典型使用者場景

在該架構中,我們在雲伺服器上是部署了web容器來解析web圖檔處理應用,使用者通過手機上的app上傳圖檔,應用程式對圖檔進行定制,例如按使用者屬性分類、按區域分類,稽核鑒黃圖檔、以及建立圖檔索引等個性化資料處理後,把圖檔存儲到雲存儲中,使用者通過最近節點cdn可以讀取經過處理的圖檔,達到圖檔分享的功能。

當應用上線後,在營銷推廣後業務量達到高峰值就要考慮雲伺服器的負載均衡問題,<b>架構就開始演變成叢集模式,詳見叢集架構圖:</b>

<b></b>

入門篇:函數計算的基本概念和通用場景概述Serverless的基本概念Serverless和函數計算的差別函數計算的典型使用者場景

在這個架構中,我們需要做如下事情:

<b>1.</b><b>管理雲伺服器。我們要關心cpu</b><b>數量、記憶體大小、ip</b><b>位址等等系統級的配置。</b>

<b>2.</b><b>管理雲伺服器作業系統,為部署容器設定通路政策,作業系統版本以及容器安全更新檔也不能忽視,否則競争對手可能雇傭黑客來攻擊我們的系統。</b>

<b>3.</b><b>配置整套環境的彈性擴容的政策,應對高峰期突發通路量。</b>

<b>4.</b><b>需要配置雲存儲、cdn</b><b>。</b>

<b>5.</b><b>編寫web</b><b>圖檔處理應用。</b>

<b>serverless(函數計算)架構圖:</b><b></b>

如果使用函數計算,使用者可以設定雲存儲的觸發器(putobject事件),當使用者上傳圖檔到oss會立即觸發一個函數來處理圖檔,同樣當業務通路量是峰值的時候,函數計算會自動擴容來支撐整個業務量的處理。處理後的資料回傳到oss中,其他使用者通過cdn可以通路被處理後的圖檔。

其中架構圖如下:<b></b>

入門篇:函數計算的基本概念和通用場景概述Serverless的基本概念Serverless和函數計算的差別函數計算的典型使用者場景

我随手摘錄網文上介紹的serverless的優勢:

<b>1</b><b>、節約使用成本</b>

在業務突發性極高的場景下,系統為了應對業務高峰,必須建構能夠應對峰值需求的系統,這個系統在大部分時間是空閑的,這就導緻了嚴重的資源浪費和成本上升。在serverless架構下,服務将根據使用者的調用次數進行計費,節省了使用成本,同時,使用者能夠通過共享網絡、硬碟、cpu等計算資源,在業務高峰期通過彈性擴容方式有效的應對業務峰值,在業務波谷期将資源分享給其他使用者,有效的節約了成本

<b>2</b><b>、簡化裝置運維</b>

在原有的it體系中,開發團隊即需要維護應用程式,同時還要維護硬體基礎設施;serverless架構中,開發人員面對的将是第三方開發或自定義的api 和url,底層硬體對于開發人員透明化了,技術團隊無需再關注運維工作,能夠更加專注于應用系統開發

<b>3、</b><b>提升可維護性</b>

serverless架構中,應用程式将調用多種第三方功能服務,組成最終的應用邏輯。

例如登入鑒權服務,雲資料庫服務等第三方服務在安全性、可用性、性能方面都進行了大量優化,開發團隊直接內建第三方的服務,能夠有效的降低開發成本,同時使得應用的運維過程變得更加清晰,有效的提升了應用的可維護性。<b></b>

阿裡雲的函數計算(function compute)是基于serverless這種理論架構下推出彈性海量計算平台,是serverless的一種實作,函數計算主打的旋律是輕、快、有彈性,從一定意義上來看也可以認為函數計算就是serverless的一個paas平台。下面來大緻看看函數計算的主要組成部分和基本概念:

<b>包含關系:</b>

入門篇:函數計算的基本概念和通用場景概述Serverless的基本概念Serverless和函數計算的差別函數計算的典型使用者場景

<b>函數概念解釋:</b>

1、service有兩層意義,一層可以按照業務屬性來劃分不同的服務專區,友善使用者做分類識别,另外一層對執行單元的授權、配置專屬日志等,都在service進行配置。

2、一個service可以設定50組function,一個function可以設定10個trigger,一個trigger隻能被一個event定義。

3、function是函數計算最小的執行機關,是核心代碼的執行區域。

阿裡雲函數計算目前是通過事件來觸發函數的執行,處理的函數符合執行無狀态、執行幂等性等特點。一一來講解這些典型使用者場景:

<b>基于事件觸發:</b>

<b>1、iot</b><b>應用</b>:裝置端通過函數計算來訂閱天氣資訊和空氣品質,裝置和裝置之間無依賴,執行過程中無需記錄狀态,擷取到第三方資料即可傳回。

<b>2、web</b><b>應用</b>:某web網站在使用者注冊成功後,會發一封歡迎郵件,通過函數計算把郵件内容定制成模闆,每次觸發,每次執行都是幂等無狀态。

<b>3、圖檔處理</b>:基于oss的事件觸發,當使用者上傳的圖檔轉入到某bucket中後,自動觸發函數歲圖檔進行可定制化處理

<b>4、音頻轉換文字處理:</b>當使用者通過語音來發出某些指令的時候,可以通過函數計算來觸發阿裡雲的et公開api擷取到音頻轉換成文字的方式。

<b>基于雲産品場景的觸發:</b>

<b>1、</b><b>oss</b><b>(雲存儲)應用:</b>

<b>a、圖檔處理:</b>監控bucket、object事件(put、delete、get、head等)觸發使用者對函數運作,比如圖檔的轉碼、水印或者鑒黃後的圖檔分發到多個區域的bucket等。

<b>b、日志處理:</b>通過函數計算事件觸發,把存放的不同區域的bucket下的日志檔案進行彙總,分解,計算,并把計算結果通過回調函數通知invoke程式。

<b>2、</b><b>apigateway</b><b>的應用:</b>

<b>a、</b><b>api</b><b>資料商,</b>通過apigateway連接配接函數計算,并從阿裡雲市場中擷取到的資料,例如天氣、股票、空氣品質等進行資料分析和資料清洗後,通過回調函數傳回運算過的資料,達到自由定制的功能。同時享受apigateway高附加值,例如流控、鑒權、監控的功能。

詳見下圖架構:

入門篇:函數計算的基本概念和通用場景概述Serverless的基本概念Serverless和函數計算的差別函數計算的典型使用者場景

<b>b、</b><b>api</b><b>代理商:</b>通過apigateway分發标準化的api接口,建立自己的生态系統,在apigateway背後調用函數計算把後端對資源和跨産品的能力包裝起來(對圖檔、ai、資料等),形成統一解決方案,例如對空氣品質的定制,對多個來源,ios,android,web,物聯網hub都統一輸出。

以上就是對函數計算産品的綜述,擁有最新、最辣、最火爆的技術,永遠是開發者的終極追求,套用廣告詞,誰用誰知道!

繼續閱讀