在云計算領(lǐng)域,容器和無服務(wù)器計算已經(jīng)占據(jù)了發(fā)展前列。
作者 | Emra Samdan
翻譯 | bocloudresearch
在不久以前,應(yīng)用程序的開發(fā)、部署和維護(hù)要比現(xiàn)在復(fù)雜得多,耗時也多。在最初,維護(hù)不僅需要修復(fù)應(yīng)用程序的代碼,還需要修復(fù)對物理機(jī)器的支持。保持服務(wù)器、硬件和軟件的更新也是非常關(guān)鍵的任務(wù)。
在本世紀(jì)初,一種名為“基礎(chǔ)設(shè)施即服務(wù)(IaaS)”的新模式迅速流行起來。IaaS提供了從第三方提供商租用遠(yuǎn)程服務(wù)器和虛擬機(jī)的可能性,這些提供商可以完全負(fù)責(zé)管理硬件、網(wǎng)絡(luò)和預(yù)訂。
IaaS出現(xiàn)之后,消除開發(fā)人員的所有非編碼職責(zé)來簡化開發(fā)人員工作,這一想法推動了新方法、模型和服務(wù)的創(chuàng)新。
Docker的官方網(wǎng)站提供了以下簡短而優(yōu)雅的定義:“容器是一個標(biāo)準(zhǔn)的軟件單元,它將代碼及其所有依賴項打包,從而使應(yīng)用程序在不同的計算環(huán)境之間快速、可靠地運行。換句話說,通過使用容器,開發(fā)人員可以確保他們的應(yīng)用程序可以在任何云平臺或本地服務(wù)器上運行。在某些方面,容器類似于虛擬機(jī),比如兩者都是隔離資源。但是,虛擬機(jī)模擬物理設(shè)備,而容器創(chuàng)建應(yīng)用程序?qū)拥某橄蟆?/p>
在無服務(wù)器計算中,整個應(yīng)用程序或應(yīng)用程序的一部分被解耦為多個函數(shù),每個函數(shù)都響應(yīng)諸如HTTP請求、新消息到達(dá)消息隊列、或在存儲中保存或修改新對象等時間觸發(fā)的。平臺可以在特定的時間或周期運行這些函數(shù),這對cron jobs(定時任務(wù))很有幫助。
要使此系統(tǒng)工作,開發(fā)人員只需編寫功能代碼,并將其及其依賴項打包到zip文件中,然后將該zip文件發(fā)送到無服務(wù)器端點,由提供商負(fù)責(zé)供應(yīng)和擴(kuò)展。
無服務(wù)器的關(guān)鍵特性之一是“按需付費”模型,在這種模型中,公司僅按函數(shù)的實際執(zhí)行時間付費。如今,AWS Lambda應(yīng)該是最受歡迎的無服務(wù)器提供商。
是的?,F(xiàn)在,無服務(wù)器和容器都很流行,它們允許開發(fā)人員專注于自己的代碼而不是基礎(chǔ)設(shè)施,這極大地提高了開發(fā)速度。容器和 serverless 都非常適合于微服務(wù)和基于組件的體系結(jié)構(gòu)。在使用它們時,部署和擴(kuò)展通常比使用傳統(tǒng)的單體架構(gòu)更快、更具成本效益,因為你操作的是應(yīng)用程序的一小部分,而不是整個應(yīng)用程序。雖然容器和serverless 有這些共性,但是每種技術(shù)都有自己的優(yōu)勢、弊端和用例。
容器的第一個優(yōu)勢是可移植性。由于容器已經(jīng)包含了它需要運行的所有內(nèi)容,因此只需放置一臺安裝了容器引擎的機(jī)器即可運行。容器與平臺無關(guān),因此它們可以運行在Linux、Windows、macOS、Mesos、Docker、Swarm或Kubernetes上。它們甚至可以在另一個容器中運行。
在計算資源使用方面,容器也比虛擬機(jī)更高效。盡管容器和虛擬機(jī)都是虛擬化的,但是虛擬機(jī)會使用自己的操作系統(tǒng)來模擬整個計算機(jī),因此會消耗更多的資源。另一方面,容器可以共享同一操作系統(tǒng),從而使操作系統(tǒng)更小,更快地啟動和關(guān)閉。
容器的另一個好處是允許開發(fā)人員完全控制應(yīng)用程序。雖然這意味著必須手動配置系統(tǒng)設(shè)置,但這也意味著擁有真正的靈活性。這在serverless上是無法實現(xiàn)的,因為無服務(wù)器的所有內(nèi)容都是由云提供商管理的。
當(dāng)我們想要將一些大型的單體應(yīng)用程序重構(gòu)為更小的獨立部分, 以便遷移到微服務(wù)體系結(jié)構(gòu)并獲得更好的性能、可測試性和擴(kuò)展速度時,容器確實是很有幫助的。例如,將以前的大型應(yīng)用程序拆分為幾個獨立的服務(wù):其中一個負(fù)責(zé)用戶管理,另一個負(fù)責(zé)轉(zhuǎn)換媒體文件等。每個服務(wù)都可以輕松擴(kuò)展,以便在其職責(zé)范圍的負(fù)載增加時提供更好的性能。但這對于單體應(yīng)用程序來說是不可能實現(xiàn)的,在單體應(yīng)用程序中,需要向整個系統(tǒng)添加新實例,這既昂貴又耗時。
因此,容器適合于長時間運行的應(yīng)用程序,以及具有特定系統(tǒng)需求的應(yīng)用程序,如果沒有對系統(tǒng)的完全控制,這些應(yīng)用程序很難設(shè)置。
由于上面提到的“按需付費”模型,托管無服務(wù)器應(yīng)用程序的成本可能比使用任何其他方法都要低得多。無需為功能的空閑時間付費,如果沒有流量,那么每月的賬單上就不會有費用。幾乎所有無服務(wù)器的提供商都有免費層,其中包括每月固定數(shù)量的請求和執(zhí)行時間。通常情況下,所提供的數(shù)量足以使小網(wǎng)站或初創(chuàng)公司免費運行。
對于容器,將應(yīng)用程序分發(fā)到部件或微服務(wù)是關(guān)鍵步驟。在serverless中,它是將應(yīng)用程序或其各個部分分發(fā)到單個函數(shù)中,每個函數(shù)負(fù)責(zé)特定的邏輯段。工程師更容易理解和開發(fā)單個功能的邏輯,這極大地提高了開發(fā)和部署速度。與部署整個應(yīng)用程序相比,部署一小部分功能的風(fēng)險更小。
無服務(wù)器的另一個巨大優(yōu)勢是自動伸縮。無服務(wù)器的函數(shù)在提供者控制下的小型、無狀態(tài)的臨時容器中運行。提供者對響應(yīng)負(fù)載峰值的擴(kuò)展承擔(dān)全部責(zé)任,并且可以在幾秒鐘內(nèi)啟動數(shù)百個實例。而且,仍然只需要為所有函數(shù)的總執(zhí)行時間付費。
Serverless的事件驅(qū)動特性使得它對于不總是需要運行的應(yīng)用程序(或其部分)非常有用。
假設(shè)你正在為一個現(xiàn)有的應(yīng)用程序開發(fā)媒體處理功能。新模塊雖然不會經(jīng)常使用,但是仍然需要足夠的計算能力來完成它的任務(wù)。將其放如應(yīng)用程序中可能需要切換到更強(qiáng)大的實例——這是一個冒險的舉動,因為如果同時運行一些繁重的任務(wù),可能會導(dǎo)致其他所有用戶的延遲。在這種情況下,還需要支付更多的費用,并且仍然面臨由上述瓶頸所導(dǎo)致的一些問題。
相反,如果選擇了serverless,那么媒體處理功能將與應(yīng)用程序的其余部分隔離。當(dāng)它不被使用時,就不需要為此付費,并且可以始終確保它不會影響到應(yīng)用程序的其他部分。
即使沒有人使用應(yīng)用程序,也至少有一個承載容器的虛擬機(jī)實例始終在運行。由此導(dǎo)致容器比無服務(wù)器更昂貴。
即使容器可以在共享計算機(jī)中快速擴(kuò)展,但由于需要對計算機(jī)本身進(jìn)行擴(kuò)展,因此其他擴(kuò)展也不很快。 但是,將容器與業(yè)務(wù)流程系統(tǒng)(如Kubernetes或AWS ECS)一起使用可以使擴(kuò)展更智能。
對于大多數(shù)開發(fā)人員來說,serverless最可怕的部分是供應(yīng)商鎖定。當(dāng)你提交到serverless時,實際上是在單個云提供商上進(jìn)行堆棧。這些函數(shù)中使用的無服務(wù)器應(yīng)用程序和 api 的體系結(jié)構(gòu)因不同的提供商而有所不同,因此更改提供商或切換到內(nèi)部解決方案的成本可能很高。盡管如此,有一些專家并不同意這個觀點,他們聲稱廠商鎖定實際上并不是一個問題。
使用無服務(wù)器方法不容易實現(xiàn)可觀察性、監(jiān)視和調(diào)試。由于應(yīng)用程序可以被分散到多個部分,而每個部分都有自己的 bug 和錯誤,所以控制和查看全局變得非常重要。
容器和無服務(wù)器可以一起操作,答案是肯定的。將主要應(yīng)用程序功能作為一個容器化的微服務(wù)來運行,同時將無服務(wù)器使用于某些后臺操作或很少使用的功能(但占用CPU),可能會非常有效。
另一個有趣的組合是AWS Fargate提供的。該服務(wù)結(jié)合了無服務(wù)器和容器的優(yōu)點,允許你更好地控制你的應(yīng)用程序,而不必?fù)?dān)心伸縮難題。
容器和無服務(wù)器通常被認(rèn)為是相互競爭的技術(shù)。但仔細(xì)觀察就會發(fā)現(xiàn)它們只是不同的技術(shù),當(dāng)在同一個項目中使用時,它們實際上可以彌補(bǔ)彼此的缺陷。重要的是要記住,“舊的”并不意味著“過時”,“新的”并不意味著“更好”。解決方案的有效性取決于特定的用例、項目需求、團(tuán)隊經(jīng)驗和團(tuán)隊偏好。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章名稱:ContainersvsServerless:本質(zhì)區(qū)別是什么?-創(chuàng)新互聯(lián)
本文URL:http://m.2m8n56k.cn/article48/dociep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、響應(yīng)式網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計公司、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容