初識無服務器架構
無服務器架構是云計算的一種運行模型,其含義是由云服務商動態(tài)地管理計算資源的分布。我們寶貴的計算資源的消費者本質上講是函數(shù)執(zhí)行。如果你用基于函數(shù)運行所消耗的內存和執(zhí)行時間(四舍五入到100ms為單位)來計費,AWS和Azure會帶來極大的成本開銷。AWS Lambda當前的價格是$0.00001667/GB-秒,而Azure function是$0.000016/GB-秒。了解這些數(shù)據之后你就可以預估成本上升的的速度。因為分配的內存量是可以在128MB-1.5GB之間可配置的,函數(shù)執(zhí)行的具體花費會根據你配置的不同而不同。每100ms執(zhí)行時間的開銷其最大配置可能是基本配置(128MB)的12倍多。
無服務器計算(serverless)仍然是需要服務器的,這也是無服務器數(shù)據庫的切入點。先了解自身的需求無疑會讓你更加容易地選擇合適的數(shù)據庫服務,也更加容易地使用當今最先進的技術方案。
各種無服務器數(shù)據庫
市面上已經有了多個知名的數(shù)據庫服務,比如Azure Data Lake。(Azure是微軟的公有云服務)
Google Cloud Store
**Google Cloud Store**是一個面向文檔的數(shù)據庫方案,作為一個獨立服務給Google App Engine提供數(shù)據庫組件。Google還提供有一個Firebase服務,這項服務提供給客戶兩種支付方式:固定付費或者按量付費。而且Firebase也包含有一個層次化的數(shù)據庫。
FaunaDB
**FaunaDB**是全球分布式的最大的事務性數(shù)據庫服務。它的技術是基于twitter。
Amazon Aurora Serverless
Amazon Aurora Serverless 在2017年的最后一個季度發(fā)布了技術預覽版。它有兩個不同版本分別與MySQL和PostgreSQL兼容,但是它也與其他的知名數(shù)據庫系統(tǒng)兼容,比如MariaDB, Oracle等。 Amazon Aurora serverless database是完全云端管理并可以自動擴展到64T的數(shù)據庫存儲。
DynamoDB
Amazon還提供了另一個服務,DynamoDB, 是一個完全云端管理的數(shù)據庫服務。它可以提供可預測的高速的性能且支持無縫擴展。使用DynamoDB創(chuàng)建數(shù)據庫和表的操作變得相當簡單直接,你可以存儲和查詢任意數(shù)量的數(shù)據,并且DynamoDB也能服務于任意量級的請求流量。
MongoDB
MongoDB雖然不是一個無服務器數(shù)據庫,但是我們還是要提一下,因為它也有一個數(shù)據庫即服務(Database as a Service)的產品,名字叫MongoDB Atlas。MongoDB是免費開源的,發(fā)行許可證是GNU Affero General Public License。MongoDB在存儲數(shù)據(JSON這樣的文檔數(shù)據)方面非常靈活,這樣它每個文檔的列都是不同的,而且數(shù)據結構也會隨時間而變化。
我繼續(xù)回來說MongoDB Atlas,它是一個DBaaS工具。它有很多特別強大的功能,比如自動化運維,你可以在幾分鐘內創(chuàng)建和部署集群并且保證你的集群宕機時間為0。它也提供基于角色的訪問控制來對你的數(shù)據做保護。同時支持加密和網絡隔離,當然還有認證服務。
MongoDB Atlas的另一個強大功能是它簡化了垂直擴展和水平擴展操作,支持一鍵觸發(fā)。你也可以跨多個區(qū)region來部署集群來提供更好的讀性能和數(shù)據保證。這些集群是地理上分布式的,支持自愈,并且有優(yōu)秀的容錯性。MongoDB Atlas的持續(xù)性備份提供了基于時間點恢復和快照(可查詢)的能力。搜索任何細節(jié)都十分輕松而且查看的性能是實時的。你可以自定義報警,優(yōu)化的面板會突出顯示關鍵的歷史度量值。
使用服務器數(shù)據庫的優(yōu)勢
成本效率
采購一定數(shù)量的服務器會在很長時間內資源得不到充分利用,算起來比使用無服務器數(shù)據庫更昂貴。除了省錢之外,部署一套自動擴展組也會跟有效率,因為對計算機資源的裝箱優(yōu)化更加高效。最直接的成本優(yōu)勢包括沒有操作系統(tǒng)的成本(許可證,安裝,維護,支持,修復補?。Mǔ5拿枋鰰焕斫鉃橐环N按使用量付費的計算模式,因為你只會為你代碼執(zhí)行時所使用的內存和時間付費。
運維,可擴展性和產出
無服務器架構意味著開發(fā)人員和運維人員不用再搭建環(huán)境,調優(yōu)自動化擴展策略或者系統(tǒng)而節(jié)省時間。是云服務提供商為我們根據需求來無縫地擴展容量。小的開發(fā)者團隊可以獨立的運行代碼,而不需要另外找基礎設施的運維支持團隊。更多的開發(fā)人員會掌握DevOps,這樣一個傳統(tǒng)的軟件工程師與一個DevOps工程師現(xiàn)在也沒啥區(qū)別了。
無服務器數(shù)據庫的缺點
性能和資源限制
采用無服務器的數(shù)據庫常常會導致數(shù)據庫遭受比傳統(tǒng)的獨立數(shù)據庫多得多的響應延遲,這里傳統(tǒng)數(shù)據庫是表示一個專用數(shù)據庫服務器,或者虛擬機,或者容器。這背后的原因是如果你的無服務器數(shù)據庫沒被使用的話,云服務提供商會把庫給“停掉”,這樣如果此時程序運行時需要一定的時間來啟動的話,這會帶來非常多的延時。無服務器計算對類似于高性能計算這樣的負載是不合適的。這個限制的原因一方面來自于云服務提供商,他們對資源使用做了限制;另一個原因是,你在某個特定的時期按照實際需求來批量部署服務器可能更加的劃算。
監(jiān)控和調試
相比傳統(tǒng)的數(shù)據庫結構,診斷無服務器架構下的性能問題或者資源超量使用問題變得異常的困難。盡管完整的函數(shù)可以被計時,但是我們沒辦法對它使用探針,調試器或者其他AMP工具下鉆得到更多細節(jié)。我們必須清楚無服務器架構的運行環(huán)境通常不是開源的,這也意味著我們很難在本地環(huán)境來精確的復現(xiàn)其性能。幸運的是,市面上已經有一些不錯的無服務器監(jiān)控工具供你使用了。
安全
無服務器數(shù)據庫有時會被錯誤地認為比傳統(tǒng)服務器更加安全。在某個程度上是對的,因為云服務提供商會負責OS級別的漏洞。但是攻擊量也會高一些因為對比傳統(tǒng)的架構他們用的組件要多得多,每個元素都是無服務器應用的一個入口??蛻粲脕肀Wo他們云端負載的安全手段就變得不那么重要了因為他們在endpoint和網絡層(比如IDS/IPS的控制和部署)上不能做任何事。
原文連接:
https://dzone.com/articles/what-is-a-serverless-database-overview-of-provider
譯者介紹
姚洪,Red Hat 高級系統(tǒng)工程師, Team Lead
參考:
大話Oracle集群,分布式數(shù)據庫與區(qū)塊鏈-云計算專區(qū)
http://cloud.it168.com/a2018/0730/3216/000003216526.shtml