什麼是 Serverless數據庫
Serverless架構,或者稱爲無服務器架構,是最近幾年新冒出來的一種架構風格。這到底是一種什麼樣的架構?無服務器,就是真的沒有服務器了麼?其實,對於Serverless來講,只是用戶不用更多的去考慮服務器的相關內容了,無需再去考慮服務器的規格大小、存儲類型、網絡帶寬、自動擴縮容問題了;同時,也無需再對服務器進行運維了,無需不斷的打系統補丁、應用補丁、無需進行數據備份、軟件配置等工做了。後端
可是沒有服務器,如何來將程序、應用運行起來呢?這裏要介紹的是Serverless下包含的兩個概念:函數即服務,Function as a Service FaaS,後端即服務,Backend as a Service BaaS。緩存
函數即服務 FaaS安全
函數即服務 FaaS,做爲一種新的計算能力提供方式,讓用戶拋棄了對服務器的配置和管理,僅需編寫和上傳核心業務代碼,交由平臺完成部署、調度、流量分發、彈性伸縮等能力。FaaS的出現,會從底層開始變革計算資源的形態,提供了一種新的方式來提供計算資源,同時也會給軟件架構與應用服務部署帶來新的設計思路,進一步下降雲計算的使用門檻,推進全行業在服務架構上的創新步伐。服務器
後端即服務 BaaS網絡
後端即服務 BaaS,其實你們已經使用好久了,這裏的後端,指的就是各類雲產品和雲服務,例如對象存儲COS,消息隊列CMQ,雲數據庫CDB、TDSQL,雲緩存CRedis、CMemcached,甚至到各類以 API 形式提供的服務如萬象優圖 CI,視頻處理 VC。這些產品或服務,用戶直接開通便可使用,無需考慮部署、擴容、備份、優化、安全等各類運維工做,作到了開箱即用,無需本身去進行服務器或應用的維護和管理,所以一樣也是Serverless的一部分。架構
爲何要 Serverlessless
介紹了什麼是Serverless,可是爲何會出現 Serverless,或者爲何要使用 Serverless 呢?咱們這裏能夠從三個方面來看看,這三個方面能夠類比爲:天時,地利,人和。運維
天時,這裏突出的時,即時間。傳統的服務器模式,應用上線前,還得完成服務器準備,環境部署,數據庫準備,存儲準備等各類工做;上線後,還得面臨計算擴容,存儲擴容,數據庫維護和擴容等各類運維工做。這這個過程當中,應用上線和迭代的時間、節奏,受限於各類準備和維護工做。而利用Serverless,經過使用SCF產品,專一於完成業務相關的核心代碼,經過直接使用COS,CDB,CMQ,CRedis等產品,解決數據存儲,數據庫,消息隊列,緩存等問題,再也不費心運維,而專一在業務開發和迭代上,能更快的完成應用上線,在這個互聯網加速發展的時代,作到一步領先,步步領先。分佈式
地利,這裏突出的利,即費用支出。傳統的服務器模式,不管有沒有用戶正在訪問,應用始終要保持運行,而在有用戶訪問時,又要關注服務器的資源使用率,在使用率達到必定程度時就要考慮擴容,避免突發訪問量致使的資源不足。在這個過程當中的費用,始終是有一部分爲未使用的計算資源而支付。而 Serverless 架構,能確保全部的費用,都是用在了實際的程序運行、數據存儲、用戶訪問中。SCF 雲函數的計費方式,就是經過函數的調用次數和執行時間來統計費用,有用戶訪問或事件產生,纔會有函數執行,纔會有費用計算;相反,沒有函數執行時,則沒有費用支出。同理,其餘的相關雲產品,也是相似,例如 COS 僅收取存儲、外網流量的費用,CMQ 僅收取請求次數、外網流量費用,CRedis 僅按實際使用內存大小收費。據測算,根據不一樣用戶的應用壓力狀況,SCF 能爲用戶帶來 30%~70% 的費用節省程度。
人和,這裏突出的是人。傳統的服務器模式,運維人員要投入大量的精力去維護服務器、數據庫、存儲等各類基礎設施,解決各類集羣、分佈式系統的搭建問題,而實際運維解決自身應用問題的時間,可能只會佔到很小一部分,而開發人員除了對自身業務應用的開發外,也須要投入時間,解決可能存在的各類外圍系統的問題。而 Serverless 架構,無需運維人員再投入到基礎設施中去了,而開發人員也能夠全面關注業務系統的開發。SCF 產品,可讓開發人員直接編寫業務邏輯核心代碼,利用微服務架構,快速上線應用。CMQ,CDB,COS,CRedis 各類雲產品,無需搭建配置,開通便可使用,而將基礎運維工做交由雲來完成。在這種狀況下,脫離了基礎運維的運維人員,能夠提高自身視野,從更高角度來看待運維工做,實現業務運維;而開發人員,能夠充分利用 CICD、DevOps能力,提高整個應用或業務的集成能力。
怎麼用 Serverless
COS、CMQ、CDB、CRedis 這類 BaaS 型雲產品,因爲面世的時間已經很長,對其使用的方式,基本和原有使用 MySQL、Redis等產品相同,或者經過產品提供的 API、SDK直接訪問使用。而 SCF 雲函數,做爲 FaaS 產品,有着稍有不一樣的使用方式。
事件觸發:SCF 的工做模式爲事件觸發,所以要考慮好觸發方式。例如,利用 SCF 來處理圖片生成縮略圖,就能夠利用 COS 事件,在圖片文件上傳 COS 後,上傳事件就能自動觸發函數執行,來生成新的縮略圖並再次存入 COS 中。
無狀態服務:函數須要是無狀態(stateless)的,緩存、日誌、數據庫等所有經過CRedis、COS、CDB這類雲產品來支持,這樣才能保證在業務請求突增時服務能迅速擴展。
微服務:事件驅動(event-driven)和無狀態(stateless)屬性正是微服務架構所須要的。所以,在一開始就將自身的應用設計爲微服務架構,解耦各模塊間關聯,使得應用成爲可生長可進化的系統。
無服務器雲函數 SCF 實現獨立開發、簡化測試和加速部署,可以助力公司在關鍵時期快速上線和迭代,爲初創期的產品提供了很好的解決方案。