serverless計(jì)算到底帶來(lái)了什么技術(shù)突破?
serverless計(jì)算到底帶來(lái)了什么技術(shù)突破?關(guān)于這個(gè)問(wèn)題有不少爭(zhēng)論,許多人認(rèn)為serverless計(jì)算不過(guò)是一些已有技術(shù)的重組和封裝,只是對(duì)一些PaaS產(chǎn)品(如Heroku, Firebase, Parse)的簡(jiǎn)單整合歸納。甚至有一部分人認(rèn)為上世紀(jì)90年代非常流行的web host共享技術(shù)就已經(jīng)實(shí)現(xiàn)了serverless的功能,比如他們都使用無(wú)狀態(tài)化的編程模型,并且提供多租戶機(jī)制。一個(gè)典型的例子就是CGI (Common Gateway Interface),它甚至允許你直接部署使用不同語(yǔ)言(Perl或PHP)編寫(xiě)的腳本到服務(wù)器上運(yùn)行。而之前提到的GAE早在serverless概念流行起來(lái)的幾年前就提供了相似的功能,但還是遭到了市場(chǎng)的否決,我們憑什么認(rèn)為serverless是一種不同于PaaS和其他這些產(chǎn)品的革新呢?
今天使用cloud functions的serverless計(jì)算和它的前輩們有著幾個(gè)重要的不同,主要體現(xiàn)在:更好的自動(dòng)縮擴(kuò)容、強(qiáng)隔離性、平臺(tái)靈活度以及服務(wù)生態(tài)支持上。
以自動(dòng)縮擴(kuò)容為例,AWS Lambda提供的自動(dòng)縮擴(kuò)容能力和之前存在的類似功能相比拉開(kāi)了顯著的距離:它能夠更精確地追蹤機(jī)器的負(fù)載并且快速響應(yīng)縮擴(kuò)容,甚至允許縮容到零實(shí)例狀態(tài)來(lái)實(shí)現(xiàn)零費(fèi)用。同時(shí),計(jì)費(fèi)的粒度也精細(xì)到了毫秒級(jí)別,而不是之前的小時(shí)級(jí),現(xiàn)在我們可以說(shuō),用戶的服務(wù)是真正按照代碼實(shí)際執(zhí)行的時(shí)間來(lái)收費(fèi)的,而不是之前那樣按照需要執(zhí)行代碼的資源來(lái)收費(fèi)的了。
serverless所需要的多租戶硬件共享依賴于高性能的安全隔離,目前的主流選擇是VM級(jí)隔離,但這里存在一個(gè)問(wèn)題,就是VM的啟動(dòng)速度比較慢,不足以支持serverless所需要的彈性縮擴(kuò)容能力。為了解決這個(gè)問(wèn)題,AWS Lambda使用了兩種VM實(shí)例的資源池,一種稱為“預(yù)熱池(warm pool)”,僅僅是被分配給對(duì)應(yīng)的租戶(但是不啟動(dòng)服務(wù)),另一種則被稱為“激活池(active pool)”,它們是之前已經(jīng)運(yùn)行過(guò)函數(shù)服務(wù)的實(shí)例,并且會(huì)一直保持著去服務(wù)后續(xù)的請(qǐng)求。這些能夠?qū)崿F(xiàn)硬件高利用率的資源生命周期管理和多租戶打包才是serverless的關(guān)鍵技術(shù),使它區(qū)別于原有的類似產(chǎn)品。需要一提的是,為了解決多租戶隔離的開(kāi)支問(wèn)題,現(xiàn)在也有很多除VM之外的隔離方案,比如使用容器、unikernel、libraryOS、語(yǔ)言虛擬機(jī)(如JVM)等。
除了自動(dòng)縮擴(kuò)容和多租戶隔離外,serverless的其他幾個(gè)不同點(diǎn)也為它的成功奠定了基礎(chǔ)。相比于針對(duì)特定使用場(chǎng)景的PaaS服務(wù),serverless計(jì)算所支持的應(yīng)用范圍要廣泛得多,因?yàn)樗试S用戶將外部的庫(kù)打包進(jìn)服務(wù),此外,今天的serverless計(jì)算的規(guī)模比起早起的web host共享技術(shù)要也要大得多。
在第1節(jié)中我們提過(guò),cloud functions讓serverless這一名詞流行了起來(lái)。然而,它們的成功也離不開(kāi)公有云早期時(shí)代出現(xiàn)的BaaS。