1、什麼是Serverless數據庫
定義:Serverless是一種無服務器的架構,區別於傳統的Baas,SAAS,做爲FAAS(函數即服務)而存在,函數由事件驅動觸發並按需調用。小程序
按需調用:區別於傳統的7x24小時運行的服務,Serverless只會在特定事件觸發時運行,並按需收費。安全
無需關注基礎設施和底層資源:雖然稱爲無服務器的架構,但並非徹底的無服務器,只是人們再也不操心運行所需的資源,只需關注本身的業務邏輯,即函數,而且爲實際消耗的資源付費,而對於VM,容器和資源(如CPU,內存等資源)則徹底交由第三方服務或平臺去自動化管理。服務器
2、Serverless特性網絡
(1)下降啓動成本:區別傳統的服務啓動一堆初始化等動做,Serverless只需快速拉取容器部署準備一個函數的資源並啓動。架構
(2)新一代微服務:粒度細化至函數的服務less
(3)安全性高:對於虛擬機,容器,網絡等資源的安全問題,徹底由第三方採用高可靠的方式實現,用戶無需關心。函數
(4)提升開發效率:開發者只需關心本身的函數實現,免去了其餘後顧之憂。微服務
(5)拓展性強:Serverless具有的彈性伸縮能力,爲函數的自拓展和容災提供了便利。spa
3、業界主流產品
(1)AWS :提供一系列徹底託管的服務,能夠使用它們構建和運行無服務器應用程序。並提供了計算、API網關適配協議,數據庫、存儲、流處理、消息排隊,公共服務等能力
(2)Microsoft Azure:AWS 支持 Serverless 架構一段時間以後,Azure 做爲競品正穩步發展中。除了支持Serverless的衆多特性外,Azure 提供快速構建Web端,移動端應用程序,以及實時流數據處理,文件處理和計劃任務的自動化,更多內容請參考https://azure.microsoft.com/en-us/services/functions/
(3)OpenWhisk :OpenWhisk 是一個開源項目,具備完整的可視性 FaaS 功能,可擴展也可定製。因爲開源可拓展這一特性,自發布以來獲得了廣大開發者的歡迎,可是目前OpenWhisk的產品和社區還在不斷完善中。
4、Serverless弊端
(1)不適合業務邏輯複雜的應用:Serverless比較適合簡單,運行時間短的應用或小程序,目前也沒有成功的複雜系統的案例。
(2)冷啓動時間:函數在執行以前,都須要通過拉取容器,製做鏡像並部署的過程,此過程佔用函數調用的時間較長。
(3)代碼調試困難:目前已有的Serverless雲開發平臺,都面臨一個巨大的問題,即在線debug代碼,這是不少雲開發平臺共同的瓶頸。
(4)CI/CD困難:在應用自動構建,代碼自動構建上都有不小的難度。
5、Serverless設計原則
(1)單一責任:函數應儘可能保持執行責任單一,儘可能少的對衆多其餘服務或函數造成依賴。
(2)執行時長控制:Serverless是按需執行,按調用次數和時長來收費,因此設計的函數應儘可能在毫秒或秒之內,減小遞歸等,避免形成資金浪費