跳到主要内容

对比其他方案

对比云托管

云函数2.0 在云托管的基础上提供了函数式代码开发框架,相比直接使用云托管优势在于:

  1. 函数云函数2.0 支持云托管中部署函数式代码,更适合函数式编程风格,更容易编写
  2. 轻量云函数2.0 不涉及容器、镜像等概念,不需要编写 Dockerfile,更轻量
  3. 稳定云函数2.0 框架内部内置 Graceful优雅重启、并发控制、超时控制、参数优化、日志等能力,开发者可以更聚焦业务逻辑编写
  4. 日志云函数2.0 框架提供日志能力,相比直接使用云托管需要自行处理日志更方便
  5. 易用云函数2.0 提供了更多的开发辅助功能,如 cli 工具,本地调试、热重启、函数间路由和代码复用等
  6. 底座云函数2.0 基于云托管,支持云托管的所有功能,如自动扩容、自动伸缩等

对比云函数

相比云函数,云函数2.0 在运行时、触发方式、部署、能力等方面有一些不同。云函数2.0 可以支持 SSE、WebSocket 等长连接能力,支持 Stream 流式响应,支持文件上传下载能力,支持单实例多函数,对数据库长连接场景友好,开发调试更便利,调用耗时更短 等特性。下表对比了 云函数2.0云函数 的主要区别:

运行时

差异项云函数云函数2.0
并发模型单实例单并发单实例多并发
HPA模式云函数平台根据并发数量HPA,可预置并发基于部署平台HPA能力,如k8s容器平台可以基于CPU/MEM配置HPA
内存限制支持MEM大小限制通过运行平台控制
CPU限制不感知CPU核数感知CPU核数,通过运行平台控制
超时控制支持函数执行超时控制,超时后可中断执行支持函数调用超时控制,超时后函数代码可继续执行
调试能力本地调试较难框架支持本地运行,支持热重启,调试更容易
开发体验本地开发不便本地开发较方便,提供 ts 类型支持
日志提供调用记录、高级日志提供访问日志、高级日志,访问日志面向用户提供更多信息
依赖安装支持云端 npm 安装依赖支持云端 npm、yarn、pnpm 安装依赖
运行时版本平台提供的指定 node.js 运行时版本可使用满足最低要求的任意 node.js 运行时版本
冷启动存在冷启动,耗时较短,可通过预置并发降低冷启动率存在冷启动,耗时较长,可通过配置最小实例数避免缩容到0产生冷启动
常驻实例"不支持"(不感知函数实例)感知实例概念,实例可以自定义是否常驻
预置并发支持无此概念,类似于手动扩容
长连接能力不支持支持 SSE、WebSocket 方式的长连接能力
连接数据库基于单实例单并发模型,对数据库长连接不友好跟普通 node.js 程序无区别
异步函数支持,静态配置无法动态切换,限制执行时长支持,函数代码自行控制是否异步执行
异步任务部分版本支持支持,函数代码自行控制是否异步执行
文件上传不支持文件上传支持 form-data 等 HTTP原生二进制 上传能力
文件下载不支持文件下载支持文件下载
流式响应不支持支持 Stream 流式响应
内置路由框架内置路由,支持多函数启动,函数间共享代码更方便,可以在函数间共享内存数据
单实例多函数无此概念支持,可在单个实例内运行多个函数,便于进行代码共享及工程管理

触发方式

分类云函数云函数2.0
触发方式通过云开发SDK、HTTP、定时器触发原生HTTP调用 或 wx.cloud.callContainer,支持获取 HTTP 请求上下文,目前不支持定时器触发
链路差异链路耗时相对较长链路耗时较短

部署

分类云函数云函数2.0
平台依赖性仅支持部署到云开发云函数平台可以部署到任意支持运行 Node.js 的环境中,支持本地运行