serverless(无服务器架构)简介

196 阅读2分钟

serverless(无服务器架构)是一套低成本、高扩展的开发应用解决方案

运行逻辑

image.png

开发

开发者编写代码(1),上传代码(2)

消费

  • 客户端通过http协议(3)访问函数计算
    • 无运行实例,或并发量高于运行实例上限
      • 平台分配服务器,加载含有开发代码的容器,并启动容器(即冷启动)
    • 有运行实例
      • 容器执行代码,并返回结果

主要平台

  • 阿里云 函数计算
    • 适合商用,serverless的缺点基本上都有解决方案
  • uniCloud
    • 适合个人开发者,有免费的MongoDB,云存储,静态资源CDN
    • 可选阿里云和腾讯云版本
    • 在函数计算的基础上封装了一层,大概会多10-140ms延迟
    • 只有北京区,较远的地区会有延时,如杭州-北京 约40ms,而杭州-杭州约10ms以内

优势

  • 无运维,只需上传代码就能提供服务,不需要买服务器、装nginx、装代码运行环境
  • 成本低,弹性伸缩。无访问时,运行实例为0,不计费
  • 横向扩展无限制,可应对高流量、高并发场景

劣势 & 阿里云解决方案

  • 冷启动有大约5秒延时
  • 无状态,不能依赖本地存储的文件,因为下一个访问可能不是这个实例。所有分布式应用的通病
    • 挂载NAS硬盘,所有实例都可以读写NAS内文件
  • 不是基于端口,而是基于句柄函数回调,很多主流框架不能用
  • 异步函数不能执行。一旦返回数据,进程立即挂起,导致异步任务无法执行甚至丢失。