發(fā)布于:2020-12-24 16:16:44
0
139
0
在21世紀(jì)頭十年,我們看到了從使用物理硬件到虛擬化的轉(zhuǎn)變。這種變化是由時(shí)鐘頻率的增加和現(xiàn)代cpu的核心數(shù)量驅(qū)動(dòng)的。在單個(gè)物理服務(wù)器上運(yùn)行單個(gè)應(yīng)用程序不再具有成本效益。開源和商業(yè)hypervisor解決方案開始在服務(wù)器市場(chǎng)上獲得巨大的流行。
今天,我們看到了從虛擬機(jī)到容器的另一個(gè)轉(zhuǎn)變。容器是運(yùn)行在模擬操作系統(tǒng)本身的操作系統(tǒng)內(nèi)核之上的虛擬運(yùn)行時(shí)環(huán)境。虛擬機(jī)和容器之間的區(qū)別在于,虛擬機(jī)模擬硬件,而容器(運(yùn)行在vm之上)只模擬操作系統(tǒng)。
操作系統(tǒng)仿真有許多好處。在容器中運(yùn)行的進(jìn)程是相互隔離的。容器可以快速啟動(dòng)和終止,因?yàn)樗鼈兊恼加每臻g或大小通常很小,這使它們成為快速擴(kuò)展的最佳選擇。
虛擬機(jī)和容器允許軟件更好地利用購買的硬件。多個(gè)應(yīng)用程序可以在同一硬件上并發(fā)運(yùn)行。對(duì)于財(cái)政部門來說,高利用率意味著資本支出的有效利用。
這就是無服務(wù)器模型的作用。無服務(wù)器計(jì)算描述了一種設(shè)計(jì)為托管云服務(wù)集合的應(yīng)用程序架構(gòu)。像AWS Lambda、Aurora或CloudFront這樣的托管服務(wù)提供了高附加值,并允許您快速構(gòu)建應(yīng)用程序。您要把時(shí)間花在開發(fā)業(yè)務(wù)邏輯上,而不是浪費(fèi)在基礎(chǔ)設(shè)施上,比如確保數(shù)據(jù)庫作為集群運(yùn)行。無服務(wù)器應(yīng)用程序模型幫助您啟動(dòng)應(yīng)用程序堆棧,并輕松地組織和管理與應(yīng)用程序關(guān)聯(lián)的云資源的狀態(tài)。
容器空間的重大技術(shù)進(jìn)步使無服務(wù)器計(jì)算成為可能。努力減少開銷并允許在其平臺(tái)上快速提供資源的云提供商很快發(fā)現(xiàn),有必要開發(fā)新型硬件加速管理程序。
硬件加速的虛擬機(jī)監(jiān)控程序(如AWS Nitro)和虛擬機(jī)監(jiān)控程序(如AWS鞭炮)的結(jié)合允許快速部署和執(zhí)行容器環(huán)境。由于新一代硬件加速管理程序的出現(xiàn),像AWS Lambda這樣的計(jì)算服務(wù)現(xiàn)在提供了更高的CPU、磁盤和網(wǎng)絡(luò)I/O性能。
一個(gè)成本效益高的云環(huán)境完全是關(guān)于提供的資源的高利用率。無服務(wù)器計(jì)算保證您始終以100%的利用率運(yùn)行應(yīng)用程序。在無服務(wù)器上運(yùn)行應(yīng)用程序時(shí),配置總是完美的,因?yàn)槟恢Ц秾?shí)際使用的機(jī)器時(shí)間。
與EC2等經(jīng)典計(jì)算服務(wù)相比,無服務(wù)器計(jì)算可以很好地?cái)U(kuò)展傳入流量。使用經(jīng)典EC2進(jìn)行伸縮通常涉及到另一個(gè)稱為自動(dòng)伸縮的服務(wù)。自動(dòng)伸縮本身是一個(gè)復(fù)雜的特性,用于跟蹤選擇的指標(biāo),比如CPU負(fù)載或虛擬機(jī)的網(wǎng)絡(luò)利用率。自動(dòng)伸縮使用這些指標(biāo)來觸發(fā)警報(bào),以增加或減少EC2實(shí)例的數(shù)量??梢钥闯?,EC2艦隊(duì)擴(kuò)展涉及很多步驟,而且很容易忽略一些東西,因?yàn)槊總€(gè)應(yīng)用程序都很不同。
使用serverless,您可以忘記所有的復(fù)雜性。無服務(wù)器應(yīng)用程序伸縮實(shí)際上只是復(fù)制最終的容器以選擇管理程序,執(zhí)行它,并將所有傳入事件路由到它。如果您的無服務(wù)器應(yīng)用程序符合容器大小和運(yùn)行時(shí)內(nèi)存限制,那么您的應(yīng)用程序就可以適當(dāng)伸縮了。這是由運(yùn)行在更靠近硬件的容器和管理程序啟用的。Serverless幾乎沒有操作系統(tǒng)開銷,因?yàn)樗辉谄淙萜髦羞\(yùn)行內(nèi)核代碼和應(yīng)用程序。
伸縮性是serverless所擅長的,但它也有一些限制。Serverless是基于事件處理的完美計(jì)算模型。web上的大多數(shù)工作負(fù)載都是基于事件的,或者可以轉(zhuǎn)換為事件。目前,由于AWS Lambda和其他云服務(wù)有執(zhí)行限制,serverless不能很好地與長時(shí)間運(yùn)行的流程一起工作。經(jīng)典的VM計(jì)算或其他類型的基于容器的計(jì)算仍然更適合長時(shí)間運(yùn)行的進(jìn)程。只要您的工作負(fù)載可以是事件驅(qū)動(dòng)的,并且處理事件相對(duì)快速且資源需求低,serverless應(yīng)該很適合您。當(dāng)前的無服務(wù)器限制似乎都不是永久的,服務(wù)提供應(yīng)該隨著時(shí)間的推移而發(fā)展和改進(jìn)。昨天還是個(gè)問題的極限明天可能就不存在了。
最后,最重要的一點(diǎn)是:成本。開發(fā)和運(yùn)行沒有服務(wù)器的應(yīng)用程序要便宜多少?我得說,這取決于應(yīng)用程序。當(dāng)您的應(yīng)用程序伸縮性好時(shí),它們將為您和您的用戶提供更好的價(jià)值。你會(huì)更便宜。Serverless幫助消除了對(duì)不使用的計(jì)算資源的過度供應(yīng)和過度支付。雖然serverless提高了伸縮性,但其他可計(jì)費(fèi)的利用率仍然適用——您仍然應(yīng)該考慮使用了多少帶寬、存儲(chǔ)和數(shù)據(jù)庫容量。目前,Serverless還不能幫助您更好地利用這些資源,這仍然取決于您和您的應(yīng)用程序。
你可能在因特網(wǎng)上讀過關(guān)于無服務(wù)器和供應(yīng)商鎖定的文章。我認(rèn)為您仍然可以在應(yīng)用程序的體系結(jié)構(gòu)中控制這些方面。無服務(wù)器計(jì)算有許多好處——出色的性能、簡(jiǎn)單的設(shè)置以及快速的開發(fā)和部署。這就是為什么serverless在我的工具箱中成為構(gòu)建高性能應(yīng)用程序的一個(gè)重要工具,該應(yīng)用程序可伸縮性好,同時(shí)保持低成本。如果你還沒有嘗試過serveless,你應(yīng)該試試。首先探索無服務(wù)器應(yīng)用程序模型。
作者介紹
熱門博客推薦