Serverless介绍
Serverless 概念
Serverless 是指构建和运行不需要服务器管理的应用程序的概念, 可以理解为运行在 FaaS 中的,使用了 BaaS 的函数。
- BaaS(后端即服务:Backend as a Service)
后端云服务,比如云数据库、对象存储、消息队列等。
- FaaS(Function as a Service)
一些运行函数的平台,比如阿里云的函数计算、AWS 的 Lambda 等。
主要缺点
1. 不适合长时间运行应用
2. 完全会依赖于第三方服务
比如你使用 Lean Cloud 的数据存储服务,如果你想要迁移到 Google Firebase 上去,那么他们的数据和编程模型可能完全不同,这其中的成本有可能是非常巨大的。这些是你需要考虑的一点。
因为服务端被托管给了供应商,无法自己去根据自己的需求对服务端进行优化。
由于服务端本质还是云计算的那套,供应商处于效用最大化原则,你的服务是有可能和其他人的服务公用一个实体资源的。那么可能会产生多租户问题,不论是从安全性还是从性能的角度都要考虑清楚。
3. 无法用于高并发运用
为每个请求启动一个进程开销太高,流量瞬间爆发容易超时。比如淘宝的双十一支付宝高峰期,每秒处理交易笔数8万多笔,也就意味着我们的系统内每秒有8万多个进程创建又被销毁。那么这样就会造成系统开销很大。解释和第一点一样的原理。
4. 安全问题
越多的调用第三方服务,就意味着向外暴露越多的风险点。另外,如果你的服务端完全依靠第三方的话,还有一个重要的问题是你失去了一层服务端的壁垒,很多需要在服务端拦截的内容现在你无法做到了,而放在应用端做这些事情的风险是很大的
### Serverless 的主要特点有:
- 服务端的主机和进程完全由供应商管理
- 可以根据负载进行自动伸缩
- 按照精确的使用情况来计费,就像水和电一样。(效用计算)
主流厂商
- 腾讯云
- 阿里云
- AWS
- 微软
- 谷歌
- IBM
- 华为云