無服務(wù)器架構(gòu)和 Functions-as-a-Service(FaaS)是云計算的熱點趨勢。除了微軟和亞馬遜,還有許多其他供應(yīng)商也提供FaaS。本文將為大家簡單介紹什么是無服務(wù)器架構(gòu)以及我們會需要無服務(wù)器架構(gòu)。
云計算的演變
在演變過程中,云已經(jīng)有了多種形式和層次。
無論是內(nèi)部部署還是由供應(yīng)商提供的服務(wù),數(shù)據(jù)中心都是云計算的第一步。它抽象化了物理主機環(huán)境,我們開始用硬件單元擴展這些環(huán)境。隨著虛擬化的發(fā)展,我們開始在云環(huán)境中托管虛擬機;我們抽象了硬件和使用的操作系統(tǒng)作為規(guī)模的單位;之后,我們?yōu)樵茦?gòu)建了托管環(huán)境,并抽象了操作系統(tǒng);再之后新的單元是應(yīng)用程序;現(xiàn)在我們已經(jīng)開始嘗試無服務(wù)器架構(gòu)或者是FaaS了。
不同的云模型給予我們不同的責(zé)任。將數(shù)據(jù)中心設(shè)為本地就意味著我們要對所有事務(wù)負有全部責(zé)任,當(dāng)數(shù)據(jù)中心慢慢向云轉(zhuǎn)變時,我們要承擔(dān)的責(zé)任會越來越少。
無服務(wù)器架構(gòu)實際上晚于SaaS,圖中它排在SaaS前面,是因為SaaS,用戶完全不能控制關(guān)于應(yīng)用程序或其基礎(chǔ)設(shè)施的任何事情。
無服務(wù)器架構(gòu)
無服務(wù)器架構(gòu)是指大量依賴第三方服務(wù)(也叫做后端即服務(wù),即“BaaS”)或暫存容器中運行的自定義代碼(函數(shù)即服務(wù),即“FaaS”)的應(yīng)用程序,函數(shù)是無服務(wù)器架構(gòu)中抽象語言運行時的最小單位,在這種架構(gòu)中,我們并不看重運行一個函數(shù)需要多少CPU或RAM或任何其他資源,而是更看重運行函數(shù)所需的時間,我們也只為這些函數(shù)的運行時間付費。無服務(wù)器架構(gòu)中函數(shù)可以多種方式觸發(fā),如定期運行函數(shù)的定時器、HTTP請求或某些相關(guān)服務(wù)中的某個事件。
Mike Roberts曾在他的文中提出了有關(guān)FaaS的六點:
1.從根本上說,F(xiàn)aaS是運行后端代碼,無需管理自己的服務(wù)器系統(tǒng)或自己的服務(wù)器應(yīng)用程序。
2.FaaS產(chǎn)品不需要對特定框架或庫進行編碼。在語言和環(huán)境方面,F(xiàn)aaS函數(shù)是常規(guī)應(yīng)用程序。
3.由于我們沒有要運行的服務(wù)器應(yīng)用程序,所以部署與傳統(tǒng)系統(tǒng)也會有不同,我們將代碼上傳到FaaS供應(yīng)商,供應(yīng)商會做所有的工作。
4.水平擴展是完全自動彈性的,并由提供商管理。
5.FaaS中的函數(shù)可由提供者定義的事件類型觸發(fā)。
6.大多數(shù)提供者還允許函數(shù)來觸發(fā)對HTTP請求的響應(yīng)。
Adrian Cockroft在文中清楚地定義了“無服務(wù)器”:如果你的PaaS可以非常高效地在20毫秒內(nèi)啟動實例,并將該實例運行0.5秒,那可以將其稱之為‘無服務(wù)器’。從中我們可以得出這樣一個結(jié)論,長時間運行的工作流和其他巨大的任務(wù)不適合無服務(wù)器架構(gòu)。
功能服務(wù)
已經(jīng)提供了FaaS服務(wù)的公司有:
·Microsoft – Azure Functions
·Amazon – AWS Lambda
·Auth0 – webtask
·Iron.io – IronWorker
·Planet Rational – webscript
總結(jié)
無服務(wù)器架構(gòu)允許我們構(gòu)建一些有用的代碼,快速運行而不消耗大量的服務(wù)器資源。但這并不意味著FaaS僅在小型場景中可用,雖然函數(shù)是一個小單位,但是它可以每秒調(diào)用數(shù)百萬次,現(xiàn)在問題的關(guān)鍵是我們?nèi)绾螌?yīng)用程序的其他組件和層轉(zhuǎn)到函數(shù)。
分享到微信 ×
打開微信,點擊底部的“發(fā)現(xiàn)”,
使用“掃一掃”即可將網(wǎng)頁分享至朋友圈。