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