無服務(wù)器計(jì)算和平臺(tái)即服務(wù)(PaaS)有何不同?
無服務(wù)器計(jì)算和平臺(tái)即服務(wù)(PaaS)后端架構(gòu)都使整個(gè)后端對(duì)開發(fā)人員不可見,因此有一定的相似性。但是,也有幾個(gè)重要差別能區(qū)分這兩種架構(gòu),而且大多數(shù)用例在其中一種用例中效果最佳,而不是兩者皆一樣。PaaS 與無服務(wù)器之間的主要差異在于可擴(kuò)展性、定價(jià)、啟動(dòng)時(shí)間、工具,以及能否部署到網(wǎng)絡(luò)邊緣。
PaaS 和無服務(wù)器架構(gòu)可擴(kuò)展性較好的是哪個(gè)?
無服務(wù)器應(yīng)用程序可以即時(shí)、自動(dòng)和按需擴(kuò)展,無需開發(fā)人員或供應(yīng)商進(jìn)行任何額外配置。它們天生可以擴(kuò)展。相反,盡管開發(fā)人員可以對(duì) PaaS 托管的應(yīng)用程序進(jìn)行編程,以根據(jù)用戶需求進(jìn)行擴(kuò)展和收縮,但這并不是 PaaS 固有的功能,開發(fā)人員將必須進(jìn)行一定數(shù)量的預(yù)測(cè)才能正確擴(kuò)展。
無服務(wù)器計(jì)算可以比作從自來水管取水,其中水代表了計(jì)算能力。現(xiàn)代家庭中的自來水可以隨時(shí)打開,并可以產(chǎn)生所需的水量。PaaS 更像是使用飲水機(jī)和桶裝水送水服務(wù)。盡管仍然能獲取所需數(shù)量的飲用水,但不如打開水龍頭那樣簡便;一旦需求增加,消費(fèi)者必須要求供應(yīng)商提高供應(yīng)量。這兩種情況下都是由他人處理“后端”(將水凈化,并送入建筑物等),但只有自來水可以精確、按需和實(shí)時(shí)增減數(shù)量。
無服務(wù)器架構(gòu)能夠通過按要求擴(kuò)充應(yīng)用程序功能的新實(shí)例來快速擴(kuò)展。也可在不再需要時(shí)或運(yùn)行了設(shè)定的時(shí)限后,通過關(guān)閉功能來快速縮減。實(shí)際上,無服務(wù)器 Web 應(yīng)用程序能夠一直縮減到無活動(dòng)狀態(tài),然后在幾秒或幾毫秒內(nèi)再次啟動(dòng)以響應(yīng)事件?;?PaaS 構(gòu)建的應(yīng)用程序無法以這樣的速度或程度進(jìn)行縮放。
PaaS 和無服務(wù)器在定價(jià)上有何不同?
繼續(xù)以水作比喻,使用自來水的消費(fèi)者依據(jù)確切用水量支付水費(fèi)。同樣,無服務(wù)器計(jì)費(fèi)極為精確,開發(fā)人員僅支付實(shí)際使用量的費(fèi)用。一些無服務(wù)器供應(yīng)商只向開發(fā)人員收取其功能確切運(yùn)行時(shí)長的費(fèi)用,對(duì)于各項(xiàng)功能的每個(gè)單獨(dú)實(shí)例可以精確到幾分之一秒。其他提供商則按照請(qǐng)求數(shù)來收費(fèi)。
使用飲水機(jī)和桶裝水送水服務(wù)的消費(fèi)者也只為實(shí)際用量付費(fèi),但以桶數(shù)而不是公升數(shù)來計(jì)費(fèi)。同樣,一些 PaaS 供應(yīng)商只向開發(fā)人員收取其應(yīng)用程序使用量的費(fèi)用。但是,計(jì)費(fèi)的準(zhǔn)確性不如無服務(wù)器。其他 PaaS 供應(yīng)商則為其服務(wù)收取固定的月費(fèi)。開發(fā)人員通常能夠自定義要付費(fèi)的計(jì)算能力的大小。但是,這是事先決定的,不能實(shí)時(shí)響應(yīng)使用量的增減。
這種差異并不一定意味著無服務(wù)器架構(gòu)總是更加便宜。就像自來水管不斷流水會(huì)迅速增加費(fèi)用,如果 Web 應(yīng)用程序的使用量持續(xù)較高并且波動(dòng)不大,那么使用服務(wù)器計(jì)算來運(yùn)行會(huì)變得非常昂貴。
PaaS 和無服務(wù)器應(yīng)用程序在啟動(dòng)時(shí)間上有何不同?
如上所述,一旦有事件觸發(fā)應(yīng)用程序功能,無服務(wù)器應(yīng)用程序幾乎能在瞬間變?yōu)榛顒?dòng)狀態(tài)。PaaS 構(gòu)建的應(yīng)用程序可以快速啟動(dòng)和運(yùn)行,但不如無服務(wù)器應(yīng)用程序那樣輕巧,而且需要更長的時(shí)間才能啟動(dòng)和運(yùn)行。為了避免用戶角度的延遲,PaaS 應(yīng)用程序必須至少有某些功能在大多數(shù)時(shí)間或一直保持運(yùn)行。
PaaS 和無服務(wù)器供應(yīng)商提供哪些工具?
一般而言,PaaS 供應(yīng)商會(huì)為開發(fā)人員提供更多工具來構(gòu)建和管理其應(yīng)用程序,包括用于測(cè)試和調(diào)試的工具。無服務(wù)器應(yīng)用程序不會(huì)在指定的機(jī)器上運(yùn)行(不論是虛擬機(jī)還是其他類型),并且無服務(wù)器功能無論如何都應(yīng)以相同狀態(tài)運(yùn)行,因此無服務(wù)器供應(yīng)商可能會(huì)提供一些工具,但不會(huì)提供用于構(gòu)建和測(cè)試應(yīng)用程序的完整環(huán)境。
無服務(wù)器應(yīng)用程序能否部署到網(wǎng)絡(luò)邊緣?
無服務(wù)器代碼不會(huì)在特定的服務(wù)器上運(yùn)行,可以在互聯(lián)網(wǎng)的任何部分上的任意位置上運(yùn)行;因此,無服務(wù)器應(yīng)用程序可以部署到網(wǎng)絡(luò)邊緣非??拷罱K用戶的位置,從而大大減少延遲。例如,Service Workers 和 Cloudflare Workers 就是在用戶附近運(yùn)行的服務(wù)器功能(請(qǐng)參閱無服務(wù)器 JavaScript 如何工作?)。
使用 PaaS 構(gòu)建的應(yīng)用程序能否部署到網(wǎng)絡(luò)邊緣?
從開發(fā)人員的角度來看,PaaS 中沒有服務(wù)器。但是,就代碼的托管位置而言,PaaS 與無服務(wù)器計(jì)算依然不同。PaaS 供應(yīng)商要么利用其他供應(yīng)商的 IaaS(基礎(chǔ)設(shè)施即服務(wù))產(chǎn)品,要么擁有自己的物理數(shù)據(jù)中心。這樣的結(jié)果是,在云平臺(tái)上構(gòu)建的應(yīng)用程序有可能僅在某些指定的機(jī)器上運(yùn)行,導(dǎo)致開發(fā)人員無法通過在邊緣運(yùn)行代碼來優(yōu)化其應(yīng)用程序的性能。