當前位置:
首頁 > 知識 > 無伺服器計算環境中,數據存儲位於何處?

無伺服器計算環境中,數據存儲位於何處?

【IT168 編譯】什麼是無伺服器(serverless)計算?如何實現無伺服器存儲?Serverless是一種將應用程序開發為一組較小的功能組件,然後提交給主機服務以實現彈性伸縮的事件驅動執行的方法。服務提供商負責運行、擴展和運營底層的整個IT堆棧,從而使應用程序所有者可以更多地關注業務價值,而不是IT運維。

因為服務提供商對每個功能進行收費,而不是對預留的基礎設施收費,所以無伺服器的運營成本完全符合應用程序的使用情況。在沒有伺服器的情況下,雲計算的開銷可以直接追溯到應用程序和業務用戶。

無伺服器並不是沒有伺服器,伺服器運行在雲上。幕後可能有虛擬機、容器、伺服器和存儲設備。操作系統和應用伺服器代碼以及IT管理層,可能包括雲編排、虛擬主機和容器管理,比如Kubernetes。服務提供商負責處理通常必須關注的所有網路、可用性、性能、容量和可伸縮性問題。

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

可能更好的叫法是功能即服務,簡單來說,這種功能是一小段事件驅動型代碼,可能是用JavaScript編寫的,它在響應某些觸發器(如web表單提交單擊或物聯網設備事件)時被調用。有些簡單的功能可以簡單地將一條記錄插入資料庫,創建一個日誌條目,觸發另一個事件,發送一條通知消息,轉換一段數據或返回一個計算。

一個完整的無伺服器應用程序由一系列精心編排的功能組成。每個功能都可以獨立地重用,並以大規模並行的方式觸發。功能的執行可以與其他功能垂直伸縮,提供了極大的靈活性,而不會遇到傳統的瓶頸。

當一個精心設計的功能主圖在複雜的事件級聯中彼此觸發時,它不僅可以替代單一應用程序,而且性能更好。無伺服器的一個前提是,您的應用程序可以平穩地伸縮,並且完全具有彈性,遠遠超出任何預定義的或預付的伺服器群或雲機器實例集的限制。

當然,這仍然有點超前,因為應用程序不僅僅由計算功能組成。仍然有數據需要管理、保護和持久化。必須考慮為無伺服器存儲,並開發有效的無伺服器存儲。

無伺服器的存儲

與容器中的微服務一樣,對於無伺服器功能的最初想法是臨時性地構造它們,因此它們不包含任何數據,也不依賴於在內部持久存儲數據。

與長時間運行的應用程序不同,這些功能是由事件觸發的,執行特定的操作後將退役,而不是成為長時間運行的應用程序。無伺服器的功能,能以大規模並行的方式啟動,以此實現快速擴展來滿足需求。那麼,無伺服器的數據存儲在哪裡呢?

實際上,用於無伺服器功能的數據必須存儲於計算環境的外部。由於彈性伸縮和小事件級聯,傳統的存儲卷和文件系統將面臨巨大的困難,成為大規模無伺服器應用程序部署中的明顯瓶頸。

今天,無伺服器功能開發環境可以直接使用存儲服務API。由於可伸縮存儲非常適合於Web級應用程序和容器化應用程序,所以雲數據服務是理想的數據持久性選擇。以下是一些可以很好地為無伺服器計算提供支撐的一些存儲類型:

1、雲資料庫服務。為多租戶、彈性可伸縮性和web風格的訪問而設計的雲資料庫服務是事務持久性的良好選擇。

2、對象存儲服務。如AWS S3,具有簡單的get/put協議,是許多web規模的應用程序和功能設計的理想選擇。

3、應用程序內存緩存。(如Redis)可以滿足高性能數據共享需求。

4、註冊日誌(Journaling logs)。數據被連續地寫到最後,而在總體上是可讀的,這有助於在功能設計中保護流數據。

在使用無伺服器計算環境中的任何數據存儲時,必須非常小心冪等性——這種操作如果應用多次的話就不會產生額外的效果。還必須注意非同步事件假設和時間或競爭條件,特別是,功能設計必須注意並行數據更新和寫鎖定條件。

那麼,什麼是無伺服器存儲呢?

無伺服器的理想狀態是讓它(以及DevOps)擺脫對任何類型的伺服器的管理和操作,包括物理伺服器、虛擬伺服器、容器和雲實例。其理念是將IT部門在出現運營問題時需要隨叫隨到的部分職責移交給無伺服器環境提供商。如果一家公司最終採用了無伺服器的方式,那麼該公司將無需對存儲進行運維和管理。

然而,IT在數據治理、合規性和保護等方面的共同需求,意味著長期混合受保護存儲體系結構。從長遠來看,數據只能通過事件隊列從一個功能傳遞到另一個功能,而不能真正持久,這依賴於事件隊列服務來保護數據。不過,存儲空間還是有的。

原文作者:Mike Matchett

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

數字化時代CIO如何推動創新業務?
全快閃記憶體時代,我們愈發需要分層存儲

TAG:IT168企業級 |