Serverless学习笔记
背景
Serverless中文即无服务器计算。使用云原生架构,在不考虑服务器的情况下,构建并运行应用程序。
优势
用户获得的便利性如下:
- 无服务器管理:不需要管理基础设施。
- 灵活扩展:可以切换占用资源(吞吐量、内存)的单位数来调整容量进行扩展。
- 按价值付费:为吞吐量或执行时间付费,而不是为机器持有付费。
- 自动化的高可用性:内置可用性和容错功能。
特点
Serverless默默做了下面的事情:
- 云逻辑层:定义、协调和运行容器化应用程序和微服务。
- 协调和状态管理:管理每个分布式组件或微服务的状态。
- 响应式数据源:可选的数据源和提供商种类多。
- 应用程序建模框架:
- 开发人员生态系统:
- 应用程序和集成库:
- 安全和访问记录:
- 可靠性和性能:
- 全球规模和覆盖性:
服务
- IaaS: 按需付费
- PaaS: 按需付费
- SaaS: 按请求付费,如DB、Cache、MQ。
问题和挑战
对应新应用,使用FaaS方式直接开发Serverless应用。但是对于存量应用,如何迁移到Serverless架构上来呢?
对于存量应用,有两个挑战:
- 资源分配速度:分钟级 -->
- 应用程序启动速度:10分钟+ --> 毫秒级
应用程序启动速度优化
方案一:应用冷启动资源压缩方案
L1:应用提前启动,但是冻结。CPU占用率为0,RAM占用相当于之前的1/20。启动速度极快,但是需要消耗资源,且只能垂直弹性。
L2: 应用程序启动后在RAM中的指令和数据结构 dump到磁盘文件,只需要在机器之间拷贝文件即可以达到横向弹性的能力。这个时间消耗主要是数据的网络传输时间+内存拷贝时间,大约在5秒左右可以完成。L2的成本开销只有网络磁盘容量,开销极低,可忽略不计。
方案二:应用热复制启动加速方案
L1采用通过fork种子进程达到快速启动的效果。
成本优势
- 最坏情况下,Serverless模式可以降低成本 28%?
- 利用应用之间的错峰,A不用的机器给B用
- 高密度部署,单服务器上部署的实例数是之前的10 ~ 100倍
使用限制
- 高脉冲型流量业务消耗的成本会更高。
- 应用尽可能避免后台活动线程的CPU消耗。
- 应用尽可能无状态。
- 应用尽可能使用短连接,长链接要能支持断线毫秒级重连能力。