Serverless介紹
Serverless 概念
Serverless 是指構建和運行不需要服務器管理的應用程序的概念, 可以理解為運行在 FaaS 中的,使用了 BaaS 的函數(shù)。
- BaaS(后端即服務:Backend as a Service)
后端云服務,比如云數(shù)據(jù)庫、對象存儲、消息隊列等。
- FaaS(Function as a Service)
一些運行函數(shù)的平臺,比如阿里云的函數(shù)計算、AWS 的 Lambda 等。
主要缺點
1. 不適合長時間運行應用
2. 完全會依賴于第三方服務
比如你使用 Lean Cloud 的數(shù)據(jù)存儲服務,如果你想要遷移到 Google Firebase 上去,那么他們的數(shù)據(jù)和編程模型可能完全不同,這其中的成本有可能是非常巨大的。這些是你需要考慮的一點。
因為服務端被托管給了供應商,無法自己去根據(jù)自己的需求對服務端進行優(yōu)化。
由于服務端本質(zhì)還是云計算的那套,供應商處于效用最大化原則,你的服務是有可能和其他人的服務公用一個實體資源的。那么可能會產(chǎn)生多租戶問題,不論是從安全性還是從性能的角度都要考慮清楚。
3. 無法用于高并發(fā)運用
為每個請求啟動一個進程開銷太高,流量瞬間爆發(fā)容易超時。比如淘寶的雙十一支付寶高峰期,每秒處理交易筆數(shù)8萬多筆,也就意味著我們的系統(tǒng)內(nèi)每秒有8萬多個進程創(chuàng)建又被銷毀。那么這樣就會造成系統(tǒng)開銷很大。解釋和第一點一樣的原理。
4. 安全問題
越多的調(diào)用第三方服務,就意味著向外暴露越多的風險點。另外,如果你的服務端完全依靠第三方的話,還有一個重要的問題是你失去了一層服務端的壁壘,很多需要在服務端攔截的內(nèi)容現(xiàn)在你無法做到了,而放在應用端做這些事情的風險是很大的
### Serverless 的主要特點有:
- 服務端的主機和進程完全由供應商管理
- 可以根據(jù)負載進行自動伸縮
- 按照精確的使用情況來計費,就像水和電一樣。(效用計算)
主流廠商
- 騰訊云
- 阿里云
- AWS
- 微軟
- 谷歌
- IBM
- 華為云
