1.什么是serverless
直接翻译过来serverless “无服务”,其实并不是没有服务器,而是说服务器部署、扩容、运维、监控等都交给云服务器厂商来做,无服务器架构所有的底层资源和系统运维工作都由第三方封装好了,并不需要我们关注。
serverless 发展到现在有两类,函数即服务(Function as a service, FaaS)以及后台即服务(Backend as a Service, BaaS)。这两种服务都支持多种后端语言,Java、PHP、Python、node等都支持
2.serverless 核心能力介绍
- 计算能力
特性1:资源按需分配,无需申请资源
比如:当一个请求来时,它才会时时的申请资源,创建函数,而且申请资源是云厂商后台自动申请,无需用户任何操作
特性2:不同维度的隔离策略
比如:mvm进行账号级别的隔离(每个账号对有多个云函数),docker进行进程上的隔离(每个函数都会被调度到一个docker容器中)(毫秒级)
特性3:实时扩容、阶梯缩容
k8s的扩缩容是根据CPU和内存进行扩缩,但是对CPU和内存的采集需要时间,并且一般是采集某个时间段的平均值所以它的扩容是分钟级的
云函数在创建的时候会让用户选择函数的配置,可以选择内存大小,每一个内存大小映射后台一个cpu,基本是可以满足函数运行的基本需求。云函数是根据请求量来进行扩容的,根据上一个时间段的请求量和内部算法计算出下个时间段内的请求量,从而预先创建出一批容器资源,当新的一批请求来的时候可以时时的调度到创建好的容器上,如果突然的请求暴增,也可以时时的创建资源来得到满足,因为创建资源是毫秒级的,用户那边的感觉就是延时了几毫秒,所以整体而言,从请求开始到调度层到执行完函数返回整个链路就能穿起来了,做到了时时的扩容
云函数的缩容是阶梯型的,每个云函数的缩容是分阶段进行缩容的,如果请求量掉下去,云函数会默认保留之前创建好的容器30分钟,30分钟内没有新的请求调度进来,容器会被销毁即缩容。为什么要保留30分钟是为了防止下一时刻用量增加,频繁的创建容器损耗资源
扩容是时时的,缩容是阶梯的,特别适合波峰波谷明显的业务
*冷启动&&热启动(温启动)
冷启动:一次函数请求会创建一个docker容器
热启动:一次函数请求会被调度到一个空闲的,正在运行的docker容器
优化点:尽量避免冷启动
- 系统运维能力
系统资源由云厂商代为托管
优势1:性能保障
优势2:安全保障(CAM访问授权、提供虚拟机mvm账户隔离、容器进程隔离)
优势3:自动弹性扩容
优势4:自愈能力(代码必须做到彻底无状态,两次调用间不能共享内存状态)
- 业务运维能力
工具建设
VS Code插件、云API、WebIDE、SDK、Command Line Tool:scf
DevOps支持
Coding
故障排查(日志)
监控警告
3.运维能力对比
- 部署环境

1.开发部门申请资源
2.运维部门根据需求文档申请一批虚拟机,配置好网络、防火墙等等的配置
3.安装部分运维的软件,需要配合调试等等
4.部署环境
时间周期以周为单位
- 监控告警


- 扩缩容

- 故障恢复

- 性能调优

- 保障安全

