跳到主要内容

对比其他方案

对比云托管

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

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

对比云开发·云函数

下表对比了 函数式托管云开发·云函数 的主要区别:

运行时

分类云开发·云函数函数式托管
并发模型单实例单并发单实例多并发
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 流式响应

触发方式

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

部署

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