介绍
Midway Serverless 能做什么
Midway Serverless 是用于构建 Node.js 云函数的 Serverless 框架。帮助您在云原生时代大幅降低维护成本,更专注于产品研发。
Midway Serverless 和 Midway 的关系
Midway Serverless 是 Midway 产出的一套面 向 Serverless 云平台的开发方案。其内容主要包括函数框架 @midwayjs/faas
,以及一系列跟平台配套的工具链,启动器等。
在 Midway Serverless 2.0 之后,Midway Serverless 和 Midway 的能力复用,有着相同的 CLI 工具链,编译器,装饰器等等。
当前,Midway Serverless 主要面向的是 函数(FaaS)场景。
函数(FaaS)能做什么
很多人对函数还不是很清楚或者不了解他能做什么。当前的函数,可以当做一个小容器,原来我们要写一个完整的应用来承载能力,现在只需要写中间的逻辑部分,以及考虑输入和输出的数据。
通过绑定平台的触发器,可以承载例如 HTTP,Socket 等流量。
通过平台提供的 BaaS SDK,可以对外调用数据库,Redis 等服务。
通过函数,能提供传统的 HTTP API 服务,结合现有的前端框架(react,vue 等)渲染出一个个美丽的页面,也可以做为一个独立的数据模块,等待被调用(触发),比如常见的文件上传变更,解压等等,也能作为定时任务的逻辑部分,到了指定的时间或者时间间隔被执行。
随着时间的更替,平台的迭代,函数的能力会越来越强,而用户的上手成本,服务器成本则会越来越低。
函数不能做什么
函数的架构决定了,有些需求是无法支持的,另外,函数和应用在能力上还是有一定的区别。
函数不适用:
- 执行时间超过函数配置下限制的(最好不超过 5s)
- 有状态,在本地存储数据的
- 长链接,比如 ws 等
- 后台任务,有大数据执行的
- 依赖多进程通信的
- 大文件上传(比如网关限制的 2M 以上)
- 自定义环境的,比如 nginx 配置,c++ 库(c++ addon 动态链接库等),python 版本依赖的
- 大量服务端缓存的
- 固定 ip 的情况
术语描述
函数
逻辑意义上的一段代码片段,通过常见的入口文件包裹起来执行。函数是单一链路,并且无状态的,现在很多人认为,Serverless = FaaS + BaaS ,而 FaaS 则是无状态的函数,BaaS 解决带状态的服务。
函数组
多个函数聚合到一起的逻辑分组名,对应原有的应用概念。
触发器
触发器,也叫 Event(事件),Trigger 等,特指触发函数的方式。 与传统的开发理念不同,函数不需要自己启动一个服务去监听数据,而是通过绑定一个(或者多个)触发器,数据是通过类似事件触发的机制来调用到函数。
函数运行时
英文叫 Runtime,具体指执行函数的环境,具体在各个平台可能是镜像,也可能是 Node.js 代码包,比如常见的社区运行时有 kubeless 等,该代码包会实现对接平台的各种接口,处理异常,转发日志等能力。
发布平台
函数最后承载的平台,现在社区最常见的有阿里云 FC 、腾讯云 SCF,AWS 的 Lambda 等等。
Layer
由于运行时的代码比较简单,且需要保证稳定性无法经常性的更新,Layer 被设计出来扩展运行时的能力,并且可以精简本地的函数代码量(有一些平台限制了上传压缩包的大小)。