Serverless学习笔记

  |   0 评论   |   0 浏览

背景

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种子进程达到快速启动的效果。

image.png

成本优势

  • 最坏情况下,Serverless模式可以降低成本 28%?
  • 利用应用之间的错峰,A不用的机器给B用
  • 高密度部署,单服务器上部署的实例数是之前的10 ~ 100倍

使用限制

  • 高脉冲型流量业务消耗的成本会更高。
  • 应用尽可能避免后台活动线程的CPU消耗。
  • 应用尽可能无状态。
  • 应用尽可能使用短连接,长链接要能支持断线毫秒级重连能力。

参考