無服務(wù)器計(jì)算環(huán)境中,數(shù)據(jù)存儲(chǔ)位于何處?

無服務(wù)器并不是沒有服務(wù)器,服務(wù)器運(yùn)行在云上。幕后可能有虛擬機(jī)、容器、服務(wù)器和存儲(chǔ)設(shè)備。操作系統(tǒng)和應(yīng)用服務(wù)器代碼以及IT管理層,可能包括云編排、虛擬主機(jī)和容器管理,比如Kubernetes。服務(wù)提供商負(fù)責(zé)處理通常必須關(guān)注的所有網(wǎng)絡(luò)、可用性、性能、容量和可伸縮性問題。

什么是無服務(wù)器(serverless)計(jì)算?如何實(shí)現(xiàn)無服務(wù)器存儲(chǔ)?Serverless是一種將應(yīng)用程序開發(fā)為一組較小的功能組件,然后提交給主機(jī)服務(wù)以實(shí)現(xiàn)彈性伸縮的事件驅(qū)動(dòng)執(zhí)行的方法。服務(wù)提供商負(fù)責(zé)運(yùn)行、擴(kuò)展和運(yùn)營底層的整個(gè)IT堆棧,從而使應(yīng)用程序所有者可以更多地關(guān)注業(yè)務(wù)價(jià)值,而不是IT運(yùn)維。

因?yàn)榉?wù)提供商對(duì)每個(gè)功能進(jìn)行收費(fèi),而不是對(duì)預(yù)留的基礎(chǔ)設(shè)施收費(fèi),所以無服務(wù)器的運(yùn)營成本完全符合應(yīng)用程序的使用情況。在沒有服務(wù)器的情況下,云計(jì)算的開銷可以直接追溯到應(yīng)用程序和業(yè)務(wù)用戶。

無服務(wù)器并不是沒有服務(wù)器,服務(wù)器運(yùn)行在云上。幕后可能有虛擬機(jī)、容器、服務(wù)器和存儲(chǔ)設(shè)備。操作系統(tǒng)和應(yīng)用服務(wù)器代碼以及IT管理層,可能包括云編排、虛擬主機(jī)和容器管理,比如Kubernetes。服務(wù)提供商負(fù)責(zé)處理通常必須關(guān)注的所有網(wǎng)絡(luò)、可用性、性能、容量和可伸縮性問題。

將其看作Functions as a Service(功能即服務(wù))

可能更好的叫法是功能即服務(wù),簡單來說,這種功能是一小段事件驅(qū)動(dòng)型代碼,可能是用JavaScript編寫的,它在響應(yīng)某些觸發(fā)器(如web表單提交單擊或物聯(lián)網(wǎng)設(shè)備事件)時(shí)被調(diào)用。有些簡單的功能可以簡單地將一條記錄插入數(shù)據(jù)庫,創(chuàng)建一個(gè)日志條目,觸發(fā)另一個(gè)事件,發(fā)送一條通知消息,轉(zhuǎn)換一段數(shù)據(jù)或返回一個(gè)計(jì)算。

一個(gè)完整的無服務(wù)器應(yīng)用程序由一系列精心編排的功能組成。每個(gè)功能都可以獨(dú)立地重用,并以大規(guī)模并行的方式觸發(fā)。功能的執(zhí)行可以與其他功能垂直伸縮,提供了極大的靈活性,而不會(huì)遇到傳統(tǒng)的瓶頸。

當(dāng)一個(gè)精心設(shè)計(jì)的功能主圖在復(fù)雜的事件級(jí)聯(lián)中彼此觸發(fā)時(shí),它不僅可以替代單一應(yīng)用程序,而且性能更好。無服務(wù)器的一個(gè)前提是,您的應(yīng)用程序可以平穩(wěn)地伸縮,并且完全具有彈性,遠(yuǎn)遠(yuǎn)超出任何預(yù)定義的或預(yù)付的服務(wù)器群或云機(jī)器實(shí)例集的限制。

當(dāng)然,這仍然有點(diǎn)超前,因?yàn)閼?yīng)用程序不僅僅由計(jì)算功能組成。仍然有數(shù)據(jù)需要管理、保護(hù)和持久化。必須考慮為無服務(wù)器存儲(chǔ),并開發(fā)有效的無服務(wù)器存儲(chǔ)。

無服務(wù)器的存儲(chǔ)

與容器中的微服務(wù)一樣,對(duì)于無服務(wù)器功能的最初想法是臨時(shí)性地構(gòu)造它們,因此它們不包含任何數(shù)據(jù),也不依賴于在內(nèi)部持久存儲(chǔ)數(shù)據(jù)。

與長時(shí)間運(yùn)行的應(yīng)用程序不同,這些功能是由事件觸發(fā)的,執(zhí)行特定的操作后將退役,而不是成為長時(shí)間運(yùn)行的應(yīng)用程序。無服務(wù)器的功能,能以大規(guī)模并行的方式啟動(dòng),以此實(shí)現(xiàn)快速擴(kuò)展來滿足需求。那么,無服務(wù)器的數(shù)據(jù)存儲(chǔ)在哪里呢?

實(shí)際上,用于無服務(wù)器功能的數(shù)據(jù)必須存儲(chǔ)于計(jì)算環(huán)境的外部。由于彈性伸縮和小事件級(jí)聯(lián),傳統(tǒng)的存儲(chǔ)卷和文件系統(tǒng)將面臨巨大的困難,成為大規(guī)模無服務(wù)器應(yīng)用程序部署中的明顯瓶頸。

今天,無服務(wù)器功能開發(fā)環(huán)境可以直接使用存儲(chǔ)服務(wù)API。由于可伸縮存儲(chǔ)非常適合于Web級(jí)應(yīng)用程序和容器化應(yīng)用程序,所以云數(shù)據(jù)服務(wù)是理想的數(shù)據(jù)持久性選擇。以下是一些可以很好地為無服務(wù)器計(jì)算提供支撐的一些存儲(chǔ)類型:

1、云數(shù)據(jù)庫服務(wù)。為多租戶、彈性可伸縮性和web風(fēng)格的訪問而設(shè)計(jì)的云數(shù)據(jù)庫服務(wù)是事務(wù)持久性的良好選擇。

2、對(duì)象存儲(chǔ)服務(wù)。如AWS S3,具有簡單的get/put協(xié)議,是許多web規(guī)模的應(yīng)用程序和功能設(shè)計(jì)的理想選擇。

3、應(yīng)用程序內(nèi)存緩存。(如Redis)可以滿足高性能數(shù)據(jù)共享需求。

4、注冊日志(Journaling logs)。數(shù)據(jù)被連續(xù)地寫到最后,而在總體上是可讀的,這有助于在功能設(shè)計(jì)中保護(hù)流數(shù)據(jù)。

在使用無服務(wù)器計(jì)算環(huán)境中的任何數(shù)據(jù)存儲(chǔ)時(shí),必須非常小心冪等性——這種操作如果應(yīng)用多次的話就不會(huì)產(chǎn)生額外的效果。還必須注意異步事件假設(shè)和時(shí)間或競爭條件,特別是,功能設(shè)計(jì)必須注意并行數(shù)據(jù)更新和寫鎖定條件。

那么,什么是無服務(wù)器存儲(chǔ)呢?

無服務(wù)器的理想狀態(tài)是讓它(以及DevOps)擺脫對(duì)任何類型的服務(wù)器的管理和操作,包括物理服務(wù)器、虛擬服務(wù)器、容器和云實(shí)例。其理念是將IT部門在出現(xiàn)運(yùn)營問題時(shí)需要隨叫隨到的部分職責(zé)移交給無服務(wù)器環(huán)境提供商。如果一家公司最終采用了無服務(wù)器的方式,那么該公司將無需對(duì)存儲(chǔ)進(jìn)行運(yùn)維和管理。

然而,IT在數(shù)據(jù)治理、合規(guī)性和保護(hù)等方面的共同需求,意味著長期混合受保護(hù)存儲(chǔ)體系結(jié)構(gòu)。從長遠(yuǎn)來看,數(shù)據(jù)只能通過事件隊(duì)列從一個(gè)功能傳遞到另一個(gè)功能,而不能真正持久,這依賴于事件隊(duì)列服務(wù)來保護(hù)數(shù)據(jù)。不過,存儲(chǔ)空間還是有的。

原文作者:Mike Matchett

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無評(píng)論