發(fā)布于:2021-01-21 16:23:40
0
108
0
在21世紀頭十年,我們看到了從使用物理硬件到虛擬化的轉(zhuǎn)變。這種轉(zhuǎn)變是由現(xiàn)代cpu中時鐘頻率和內(nèi)核數(shù)量的增加所驅(qū)動的。在單個物理服務(wù)器上運行單個應(yīng)用程序不再具有成本效益。開源和商用虛擬機監(jiān)控程序解決方案開始在服務(wù)器市場獲得巨大的普及。
今天,我們看到了另一個從虛擬機到容器的轉(zhuǎn)變。容器是運行在操作系統(tǒng)內(nèi)核之上的虛擬運行時環(huán)境,模擬操作系統(tǒng)本身。虛擬機和容器之間的區(qū)別在于虛擬機模擬硬件,而運行在虛擬機上的容器只模擬操作系統(tǒng)。
操作系統(tǒng)仿真有許多好處。在容器中運行的進程彼此隔離。容器可以快速啟動和終止,因為它們的占用空間或大小通常是最小的,這使它們成為快速擴展的最佳選擇。
虛擬機和容器允許軟件更好地利用購買的硬件。多個應(yīng)用程序可以在同一硬件上同時運行。對于財政部門來說,高利用率意味著資本支出的有效利用。
這就是無服務(wù)器模式的用武之地。無服務(wù)器計算將應(yīng)用程序體系結(jié)構(gòu)描述為托管云服務(wù)的集合。像AWS Lambda、Aurora或CloudFront這樣的托管服務(wù)提供了高附加值,并允許您快速構(gòu)建應(yīng)用程序。您將時間花在開發(fā)業(yè)務(wù)邏輯上,而不是擺弄基礎(chǔ)設(shè)施,比如確保數(shù)據(jù)庫作為集群運行。無服務(wù)器應(yīng)用程序模型可以幫助您加速應(yīng)用程序堆棧,并輕松組織和管理與應(yīng)用程序關(guān)聯(lián)的云資源的狀態(tài)。
集裝箱空間的重大技術(shù)進步使無服務(wù)器計算成為可能。云提供商努力減少開銷,并允許在他們的平臺上快速調(diào)配資源,很快發(fā)現(xiàn)有必要開發(fā)新型的硬件加速虛擬機監(jiān)控程序。
硬件加速的hypervisor(如awsnitro)和虛擬機監(jiān)視器(如awsfielcracker)的結(jié)合允許快速部署和執(zhí)行容器環(huán)境。由于新一代的硬件加速虛擬機監(jiān)控程序,像AWS Lambda這樣的計算服務(wù)現(xiàn)在提供了更高的CPU、磁盤和網(wǎng)絡(luò)I/O性能。
一個經(jīng)濟高效的云環(huán)境完全是關(guān)于所提供資源的高利用率。無服務(wù)器計算保證您始終以100%的利用率運行應(yīng)用程序。在無服務(wù)器上運行應(yīng)用程序時,您的資源調(diào)配總是完美的,因為您只需為實際使用的機器時間付費。
與經(jīng)典的計算服務(wù)(如EC2)相比,無服務(wù)器計算可以很好地適應(yīng)傳入的流量。使用經(jīng)典EC2進行擴展通常涉及另一個稱為auto Scaling的服務(wù)。自動伸縮本身是一項復(fù)雜的功能,它可以跟蹤選定的指標,如CPU負載或虛擬機的網(wǎng)絡(luò)利用率。自動縮放使用這些度量觸發(fā)警報,以向上或向下縮放EC2實例群。正如您所知,EC2艦隊擴展涉及很多步驟,而且很容易遺漏一些東西,因為每個應(yīng)用程序都非常不同。
使用無服務(wù)器,您可以忘記所有的復(fù)雜性。無服務(wù)器應(yīng)用程序擴展實際上只是復(fù)制最終的容器來選擇hypervisor,執(zhí)行它,并將所有傳入的事件路由到它。如果您的無服務(wù)器應(yīng)用程序符合容器大小和運行時內(nèi)存限制,那么您就可以開始了,您的應(yīng)用程序?qū)⒖梢赃m當?shù)財U展。這是由運行在硬件附近的容器和虛擬機監(jiān)控程序?qū)崿F(xiàn)的。Serverless幾乎沒有操作系統(tǒng)開銷,因為它只運行內(nèi)核代碼和容器中的應(yīng)用程序。
可伸縮性是serverless擅長的,但它也有一些局限性。無服務(wù)器是基于事件處理的完美計算模型。web上的大多數(shù)工作負載都是基于事件的,或者可以轉(zhuǎn)換為事件。目前,serverless不能很好地處理長時間運行的進程,因為AWS Lambda和其他云服務(wù)有執(zhí)行限制。經(jīng)典的VM計算或其他類型的基于容器的計算仍然更適合長時間運行的進程。只要您的工作負載可以是事件驅(qū)動的,并且處理事件的速度相對較快,而且資源需求較低,那么無服務(wù)器應(yīng)該可以很好地滿足您的需要。當前的無服務(wù)器限制似乎都不是永久性的,服務(wù)產(chǎn)品應(yīng)該隨著時間的推移而發(fā)展和改進。昨天有問題的限制明天可能就不存在了。
最后,最重要的是:成本。開發(fā)和運行無服務(wù)器應(yīng)用程序要便宜多少?我得說這取決于應(yīng)用程序。當您的應(yīng)用程序擴展良好時,它們將為您和您的用戶提供更好的價值。你可以便宜一點。無服務(wù)器的幫助是,消除了對不使用的計算資源的過度配置和過度支付。雖然serverless改進了可伸縮性,但其他收費利用率仍然適用您仍然應(yīng)該考慮您使用了多少帶寬、存儲和數(shù)據(jù)庫卷。無服務(wù)器目前無法幫助您更好地利用這些資源,這仍取決于您和您的應(yīng)用程序。
你可能在網(wǎng)上看到過關(guān)于無服務(wù)器和供應(yīng)商鎖定的帖子。我想說,您仍然可以在應(yīng)用程序的體系結(jié)構(gòu)中控制這些方面。無服務(wù)器計算有許多好處—性能優(yōu)異、安裝簡單、開發(fā)和部署迅速。這就是為什么serverless成為我工具箱中的一個重要工具,用于構(gòu)建高性能的應(yīng)用程序,同時保持低成本。如果你還沒試過做仆人,你應(yīng)該做。從探索無服務(wù)器應(yīng)用程序模型開始。