支撐無伺服器計算,傳統儲存方案已經行不通了

儲存頻道發表於2019-01-28

   什麼是無伺服器儲存/無伺服器資料庫?它與其他的儲存/資料庫服務有什麼不同?這篇文章將介紹無伺服器儲存服務應具有的基本屬性,並透過無伺服器計算中的一些用例,舉例說明不同的無伺服器儲存和無伺服器資料庫之間的區別。最後,我們將繼續討論尚未出現的無伺服器儲存服務,並展望這一領域的未來。

   無伺服器(Serverless )就是沒有伺服器?


  來源 -

  “無伺服器”這個用詞其實並不合適。無伺服器並不是說不再需要伺服器,而是採用了使技術抽象化、遠離使用者的概念,讓使用者不需要再擔心伺服器,其他人(雲提供商)將幫助使用者完成相關的工作。

   無伺服器計算

  如今,無伺服器是一個非常流行的詞彙。儘管“無伺服器”這個術語已經存在了一段時間,但它變得如此流行詞的主要原因是2014年AWS Lambda的推出。隨著2015年7月亞馬遜API閘道器的推出,無伺服器得到進一步普及。一般來說,無伺服器(或者說無伺服器計算)指的是伺服器端邏輯由開發人員編寫,在無狀態計算容器中執行的應用程式——這些容器是事件觸發的,短暫的(可能只持續一次呼叫),並由第三方全面管理。這也稱為功能即服務(FaaS)。

   無伺服器計算的無狀態性以及儲存的需求

  無伺服器計算或FaaS的一個特性是,它是無狀態的。因此,在一般設計中不可能出現在相同功能的兩次執行之間保持狀態。這就是無伺服器儲存引入的原因,如果需要在兩個FaaS功能執行之間保持狀態,則應將其儲存在外部儲存服務中。

   傳統儲存的問題

  傳統儲存解決方案被設計於在單個地理位置的一組固定伺服器上持續執行,要正確使用這些儲存解決方案,開發人員需要了解很多有關配置的詳細資訊。在最壞的情況下,高可用性和效能的優劣取決於開發人員對資料庫內部的瞭解。開發人員需要弄清楚且配置好區域、空間、卷、記憶體、計算容量和軟體版本等內容。開發團隊必須花費數小時的時間考慮容量規劃、配置、分片、備份、效能調整和監控。當你需要花80%的時間來設定和運算元據庫,而且只是為了支援無伺服器功能時,這就有點不合適了。雖然無伺服器計算為計算層增加了彈性,但當儲存層無法提供與之相當的彈性時,你可能就無法完全發揮其優勢。

   真正的無伺服器儲存

  理想情況下,真正無伺服器的儲存應具有以下屬性:

   · 無需配置

   · 真正有彈性(無需運營人員干預的縱向擴充套件)

   · 按需付費

  使用無伺服器儲存時,開發人員不必擔心任何基礎架構細節,如節點大小,記憶體或儲存大小等。與AWS Lambda按單個功能呼叫進行收費的方式相同,無伺服器儲存中的資源消耗應根據不同工作負載使用的計算和儲存量來衡量。這是無伺服器資料庫的本質,使用者永遠不會為閒置容量付費,儲存使用情況反映了功能呼叫和工作負載。

  使用傳統儲存產品,過度資源配置是準備應對流量高峰的唯一策略,無伺服器儲存的彈性可防止可能帶來浪費的過度配置。由於無伺服器儲存能夠在沒有使用者干預的情況下進行彈性擴充套件,因此開發人員無需進行容量規劃即可啟動,並且應用程式始終具有足夠的容量。此外,按需付費定價模式將確保沒有閒置資源增加使用者的成本,無伺服器儲存的成本只隨著使用而擴充套件,你永遠不會為未使用的容量付錢。

   無伺服器儲存可選項

  如今,有多種無伺服器儲存類別,通常會有多個雲供應商提供或多或少的相同服務。在本節中,我們將介紹這些不同的無伺服器儲存類別,以及每個類別的示例和它們的一些用例。

   無伺服器物件儲存

  物件儲存是一種無層次結構的資料儲存方法,通常用於雲中。與其他資料儲存方法不同,基於物件的儲存不使用目錄樹。離散的資料單元(物件)存在於儲存池中的同一級別。每個物件都有一個唯一的標識名稱,應用程式使用該名稱來檢索它。此外,每個物件可能都有的用於檢索的後設資料。無伺服器物件儲存的一些常見示例是Amazon S3,Google雲端儲存,Azure儲存和IBM雲端儲存。在無伺服器計算環境中使用無伺服器物件儲存的一個常見示例是縮圖生成。

  1、移動應用程式將影像上傳到物件庫。

  2、無伺服器物件儲存在上傳映像後觸發更改事件,從而執行無伺服器功能。

  3、無伺服器功能基於上傳的影像建立縮圖。

  4、在將縮圖上傳到無伺服器儲存之後,無伺服器功能向移動應用程式傳送推送通知。

  5、移動應用程式下載縮圖並相應地更新使用者介面。

   無伺服器關係型資料庫

  無伺服器關聯式資料庫的一個例子是2017年最後一個季度推出的Amazon Aurora Serverless,它有兩個分別與MySQL和PostgreSQL相容的不同版本,但它也與MariaDB,Oracle等其他已知系統相容。Amazon Aurora Serverless是一種按需自動擴充套件資料庫服務,資料庫將根據應用程式的需要自動啟動、關閉以及擴充套件容量。它使使用者能夠在雲中執行其資料庫,而無需實際管理任何資料庫例項。對於不常見、間歇性或不可預測的工作負載,它是一種簡單、經濟高效的選擇,因此非常適用於無伺服器計算。

   無伺服器NoSQL資料庫

   無伺服器Key-value和文件儲存

  目前有多個不同型別的無伺服器NoSQL資料庫,最常見的是Key-value儲存和文件儲存。Key-value資料庫是一種資料儲存範例,用於儲存、檢索和管理關聯陣列,這種資料結構現在通常被稱為辭典或雜湊表。辭典包含一組物件或記錄,這些物件或記錄又包含許多不同的欄位,每個欄位都包含資料。這些物件透過使用唯一標識記錄的Key被儲存和檢索,並用於快速查詢資料庫中的資料。面向文件的資料庫或文件儲存是用於儲存、檢索和管理面向文件的資訊的儲存,也稱為半結構化資料。舉幾個例子:Amazon DynamoDB,Google Cloud Datastore和IBM Cloudant NoSQL DB。此前,亞馬遜宣佈推出了DynamoDB on-demand,它為按需付費模式的DynamoDB提供按需讀/寫容量選項。這種無伺服器Key-value和文件儲存有各種用途,其中一個簡單的用例是使用無伺服器功能處理“聯絡我們”(Contact Us)表單。

   無伺服器時間序列資料庫

  時間序列資料庫(TSDB)是一種最佳化用於處理時間序列資料的軟體系統,時間序列資料是按時間(日期時間或日期時間範圍)索引的數字陣列。時間序列資料具有特定的特徵,例如通常以時間順序形式到達,資料是隻追加(Append-only)的,並且查詢總是在一個時間間隔內。雖然關聯式資料庫可以儲存這些資料,但在處理這些資料時效率很低,因為它們缺乏最佳化,例如按時間間隔儲存和檢索資料。無伺服器時間序列資料庫的一個例子是最近公佈的Amazon Timestream,它是一個專用的時間序列資料庫,可以按時間間隔有效地儲存和處理記錄。

  來源-

   無伺服器圖資料庫

  很簡單,圖資料庫(Graph Database)的設計,將資料之間的關係視為與資料本身同等重要,它在儲存資料時不會將其限制為預定義的模型。相反,資料就像繪製出來一樣被儲存——顯示每個實體如何與其他實體連線或相關。FaunaDB是一個無伺服器圖資料庫,它是一個通用的、事務性的、時態的、地理上分佈的、強一致的和關係型的資料庫。FaunaDB還支援文件儲存和時間序列資料庫功能。

   展望未來,還缺乏什麼?

   無伺服器記憶體資料儲存/快取

  無伺服器儲存中尚未提供的儲存型別之一是記憶體資料儲存。我們目前用於快取的選項之一是在API Gateway進行快取。Amazon DynamoDB具有單位數毫秒延遲,如果使用者需要稍微減少延遲,那麼即使尚未完全實現無伺服器,也可以使用DynamoDB加速器(DAX)。此外,AWS ElastiCache提供Redis和Memcached,但尚未將它們作為完全託管服務提供。另外,Google App Engine提供Memcache作為記憶體快取服務,但是隻能在App Engine本身中訪問。

   結論

  隨著IT行業中無伺服器計算的增長和高度適應,無伺服器儲存正在快速增長。我們希望這些服務能夠得到不斷的最佳化和進步,從而幫助開發人員實現真正的無伺服器應用程式開發。

  原文來源:Medium 作者:Rajind Ruparathna

  原文連結:


來自 “ Medium ”,原文連結:http://blog.itpub.net/31545805/viewspace-2565081/,如需轉載,請註明出處,否則將追究法律責任。

相關文章