什么是無服務器計算以及無服務器存儲的工作原理是什么?
無服務器是指開發(fā)應用程序作為一組較小功能組件,然后將這些功能提交給主機服務,以實現(xiàn)彈性可擴展的事件驅(qū)動執(zhí)行。在這方面,由服務提供商負責運行、擴展和運行整個IT堆棧,這使應用程序所有者可以更專注于業(yè)務價值而不是IT運營。
由于服務提供商按功能執(zhí)行而非基礎架構收費,因此無服務器運營成本完全等同于應用程序使用成本。通過無服務器,云計算費用可直接追溯到應用程序和業(yè)務用戶。 無服務器并非真的沒有服務器;只是這臺服務器位于云端的某個地方。在幕后,可能還有虛擬機、容器、服務器和存儲。還有操作系統(tǒng)和應用程序服務器代碼,以及多層級IT管理,可能包括云編排、虛擬主機和容器管理,例如Kubernetes。服務提供商處理所有網(wǎng)絡、可用性、性能、容量和可擴展性問題,而這是當IT企業(yè)管理自己的應用程序時通??赡苄枰P注的問題。 功能即服務 對于無服務器,更好的名稱可能是功能即服務。在其最簡單的形式,這種函數(shù)是一小段事件驅(qū)動的代碼,可能用JavaScript編寫,被設置為在響應某些觸發(fā)器時調(diào)用,例如web表單提交點擊或IoT設備事件。簡單的函數(shù)可以簡單地將記錄插入數(shù)據(jù)庫、創(chuàng)建日志條目、觸發(fā)另一個事件、發(fā)送通知消息、轉(zhuǎn)換數(shù)據(jù)或返回計算。 完整的無服務器應用程序?qū)木幣怕?lián)級功能。每個功能都可以獨立重復使用,并以大規(guī)模并行方式觸發(fā)。一個函數(shù)的執(zhí)行可以從其他函數(shù)正交擴展,從而提供極大的靈活性而不會遇到傳統(tǒng)的瓶頸。 當精心設計的主要功能(在復雜聯(lián)級實踐中相互觸發(fā))大規(guī)模部署時,它不僅可以取代單個應用程序,而且還略勝一籌。
無服務器的前提之一是你的應用程序可以平滑擴展并具有完全彈性,遠遠超出任何預定義或預付費服務器群集或云計算機實例的限制。 當然,這仍然有點未來主義,因為應用程序不僅僅包含計算功能,還有數(shù)據(jù)需要管理、保護和存儲。我們還必須考慮無服務器的存儲問題,并開發(fā)有效的無服務器存儲。
針對無服務器的存儲 與容器中的微服務一樣,無服務器功能的最初想法是短暫構建它們,因此它們不包含任何數(shù)據(jù),并且不依賴于內(nèi)部存儲數(shù)據(jù)。 與長期運行的應用程序不同,無服務器功能由事件觸發(fā),執(zhí)行特定操作后撤離,而不是作為長期應用程序。無服務器功能可大規(guī)模并行啟動,可快速擴展以滿足需求。那么無服務器數(shù)據(jù)存儲在哪里? 實際上,無服務器功能的數(shù)據(jù)存儲必須在計算環(huán)境外部。由于這種彈性擴展和小事件級聯(lián),傳統(tǒng)存儲卷和文件系統(tǒng)在大規(guī)模無服務器應用程序部署很難發(fā)揮作用并會成為明顯的瓶頸。
現(xiàn)在,無服務器功能開發(fā)環(huán)境可以直接使用存儲服務API。由于可擴展存儲適合Web規(guī)模應用程序和容器化應用程序,云數(shù)據(jù)服務是理想的數(shù)據(jù)存儲方式。以下是適用于無服務器的存儲類型: 云數(shù)據(jù)庫服務,針對多租戶,具有彈性可擴展性和Web式訪問,使其成為事務性存儲的不錯選擇。 對象存儲服務,例如AWS S3,具有簡單get / put協(xié)議,它是很多Web規(guī)模應用程序和功能設計的理想選擇。 應用程序內(nèi)存緩存(例如Redis)可以滿足高性能數(shù)據(jù)共享需求。 Journaling日志功能,其中數(shù)據(jù)串行寫入到最后,雖然數(shù)據(jù)匯總為可讀,但可以幫助保護功能設計中的流數(shù)據(jù)。 當任何數(shù)據(jù)存儲用于無服務器時,必須非常注意冪等性-即操作應用多次,都不會產(chǎn)生額外影響。還必須注意異步事件假設和時間或競爭條件。特別是,功能設計必須注意并行數(shù)據(jù)更新和寫入鎖定條件。 那么究竟什么是無服務器存儲? 無服務器的理想是讓IT和DevOps擺脫管理和運營任何類型的服務器,包括物理服務器、虛擬服務器、容器和云實例。
這里的想法是強制IT將所有操作問題的責任交給無服務器環(huán)境提供商。而如果企業(yè)部署無服務器,最終的目的是同時擺脫運營和管理存儲。 但是,IT確保數(shù)據(jù)管理、合規(guī)性和保護的工作要求將意味著企業(yè)將長期采用混合保護存儲架構。那么,從長遠來看呢?數(shù)據(jù)可以通過事件隊列從函數(shù)傳遞到函數(shù),并且,從不實際保存,依靠事件排隊服務來進行數(shù)據(jù)保護。但是,在某處還是會有存儲。