當前位置:
首頁 > 最新 > 一文讀懂什麼是無伺服器資料庫

一文讀懂什麼是無伺服器資料庫

閱讀本文你可以了解到多個知名的「無伺服器」資料庫產品以及它們的優缺點。

初識無伺服器架構

無伺服器架構是雲計算的一種運行模型,其含義是由雲服務商動態地管理計算資源的分布。我們寶貴的計算資源的消費者本質上講是函數執行。如果你用基於函數運行所消耗的內存和執行時間(四捨五入到100ms為單位)來計費,AWS和Azure會帶來極大的成本開銷。AWS Lambda當前的價格是$0.00001667/GB-秒,而Azure function是$0.000016/GB-秒。了解這些數據之後你就可以預估成本上升的的速度。因為分配的內存量是可以在128MB-1.5GB之間可配置的,函數執行的具體花費會根據你配置的不同而不同。每100ms執行時間的開銷其最大配置可能是基本配置(128MB)的12倍多。

無伺服器計算(serverless)仍然是需要伺服器的,這也是無伺服器資料庫的切入點。先了解自身的需求無疑會讓你更加容易地選擇合適的資料庫服務,也更加容易地使用當今最先進的技術方案。

各種無伺服器資料庫

市面上已經有了多個知名的資料庫服務,比如Azure Data Lake。(Azure是微軟的公有雲服務)

Google Cloud Store

**Google Cloud Store**是一個面向文檔的資料庫方案,作為一個獨立服務給Google App Engine提供資料庫組件。Google還提供有一個Firebase服務,這項服務提供給客戶兩種支付方式:固定付費或者按量付費。而且Firebase也包含有一個層次化的資料庫。

FaunaDB

**FaunaDB**是全球分散式的最大的事務性資料庫服務。它的技術是基於twitter。

Amazon Aurora Serverless

Amazon Aurora Serverless 在2017年的最後一個季度發布了技術預覽版。它有兩個不同版本分別與MySQL和PostgreSQL兼容,但是它也與其他的知名資料庫系統兼容,比如MariaDB, Oracle等。 Amazon Aurora serverless database是完全雲端管理並可以自動擴展到64T的資料庫存儲。

DynamoDB

Amazon還提供了另一個服務,DynamoDB, 是一個完全雲端管理的資料庫服務。它可以提供可預測的高速的性能且支持無縫擴展。使用DynamoDB創建資料庫和表的操作變得相當簡單直接,你可以存儲和查詢任意數量的數據,並且DynamoDB也能服務於任意量級的請求流量。

MongoDB

MongoDB雖然不是一個無伺服器資料庫,但是我們還是要提一下,因為它也有一個資料庫即服務(Database as a Service)的產品,名字叫MongoDB Atlas。MongoDB是免費開源的,發行許可證是GNU Affero General Public License。MongoDB在存儲數據(JSON這樣的文檔數據)方面非常靈活,這樣它每個文檔的列都是不同的,而且數據結構也會隨時間而變化。

我繼續回來說MongoDB Atlas,它是一個DBaaS工具。它有很多特彆強大的功能,比如自動化運維,你可以在幾分鐘內創建和部署集群並且保證你的集群宕機時間為0。它也提供基於角色的訪問控制來對你的數據做保護。同時支持加密和網路隔離,當然還有認證服務。

MongoDB Atlas的另一個強大功能是它簡化了垂直擴展和水平擴展操作,支持一鍵觸發。你也可以跨多個區region來部署集群來提供更好的讀性能和數據保證。這些集群是地理上分散式的,支持自愈,並且有優秀的容錯性。MongoDB Atlas的持續性備份提供了基於時間點恢復和快照(可查詢)的能力。搜索任何細節都十分輕鬆而且查看的性能是實時的。你可以自定義報警,優化的面板會突出顯示關鍵的歷史度量值。

使用伺服器資料庫的優勢

成本效率

採購一定數量的伺服器會在很長時間內資源得不到充分利用,算起來比使用無伺服器資料庫更昂貴。除了省錢之外,部署一套自動擴展組也會跟有效率,因為對計算機資源的裝箱優化更加高效。最直接的成本優勢包括沒有操作系統的成本(許可證,安裝,維護,支持,修復補丁)。通常的描述會被理解為一種按使用量付費的計算模式,因為你只會為你代碼執行時所使用的內存和時間付費。

運維,可擴展性和產出

無伺服器架構意味著開發人員和運維人員不用再搭建環境,調優自動化擴展策略或者系統而節省時間。是雲服務提供商為我們根據需求來無縫地擴展容量。小的開發者團隊可以獨立的運行代碼,而不需要另外找基礎設施的運維支持團隊。更多的開發人員會掌握DevOps,這樣一個傳統的軟體工程師與一個DevOps工程師現在也沒啥區別了。

無伺服器資料庫的缺點

性能和資源限制

採用無伺服器的資料庫常常會導致資料庫遭受比傳統的獨立資料庫多得多的響應延遲,這裡傳統資料庫是表示一個專用資料庫伺服器,或者虛擬機,或者容器。這背後的原因是如果你的無伺服器資料庫沒被使用的話,雲服務提供商會把庫給「停掉」,這樣如果此時程序運行時需要一定的時間來啟動的話,這會帶來非常多的延時。無伺服器計算對類似於高性能計算這樣的負載是不合適的。這個限制的原因一方面來自於雲服務提供商,他們對資源使用做了限制;另一個原因是,你在某個特定的時期按照實際需求來批量部署伺服器可能更加的划算。

監控和調試

相比傳統的資料庫結構,診斷無伺服器架構下的性能問題或者資源超量使用問題變得異常的困難。儘管完整的函數可以被計時,但是我們沒辦法對它使用探針,調試器或者其他AMP工具下鑽得到更多細節。我們必須清楚無伺服器架構的運行環境通常不是開源的,這也意味著我們很難在本地環境來精確的復現其性能。幸運的是,市面上已經有一些不錯的無伺服器監控工具供你使用了。

安全

無伺服器資料庫有時會被錯誤地認為比傳統伺服器更加安全。在某個程度上是對的,因為雲服務提供商會負責OS級別的漏洞。但是攻擊量也會高一些因為對比傳統的架構他們用的組件要多得多,每個元素都是無伺服器應用的一個入口。客戶用來保護他們雲端負載的安全手段就變得不那麼重要了因為他們在endpoint和網路層(比如IDS/IPS的控制和部署)上不能做任何事。

原文連接:

https://dzone.com/articles/what-is-a-serverless-database-overview-of-provider

譯者介紹

姚洪,Red Hat 高級系統工程師, Team Lead


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

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


請您繼續閱讀更多來自 雲技術實踐 的精彩文章:

Ubuntu Linux 18.04 LTS 有哪些新特性?

TAG:雲技術實踐 |