Serverless 函数Serverless
上线与排错把后端代码放到云端,有请求时由平台自动运行
Serverless 并不是没有服务器,而是平台负责运行和扩缩。它适合小型 API、表单和 Webhook;使用前要了解执行时长、冷启动、无状态和平台限制。
请求 → 唤醒函数 → 响应
空闲时不用一直养着一台机器什么时候用
- 小型网站的 API、表单提交、支付回调和定时任务适合短小、事件驱动的任务HTTP提交表单Webhook支付回调Cron每日汇总
- 希望跟随前端一起部署,不想先维护 VPS前端与函数一起部署git push→构建页面 + API→获得网址不必先购买和维护一台 VPS
- 把每个函数设计成短小、无状态、可重复执行状态放到外部服务请求→短时函数→数据库 / 存储
- 在平台设置中配置 环境变量 Env Var,不要写进仓库密钥放平台设置环境变量AI_API_KEY = ••••••••Git 仓库不包含密钥
什么时候不用
- 不要把长时间转码或永久连接直接放进短时函数任务时间超过函数上限视频转码预计 10 分钟 → 函数上限10 秒后超时
- 依赖函数内存保存状态:下一次请求可能换一台机器下一次请求可能换实例实例 A 内存count = 8 → 实例 B 内存count = 0需要保留的数据应该写入数据库或缓存
- 忽略超时、区域、并发和计费限制上线前先看平台限制超时10s区域sin1并发100本月调用82%
- 把平台绑定写满业务每一层,未来难以迁移业务逻辑被平台 API 包住vercel.only.doBusinessRule()cloudflare.only.saveOrder()迁移时不得不重写核心规则
组成结构 · Anatomy
平台入口→函数实例→外部状态
1平台入口Gateway平台负责网址、HTTPS、扩缩容和请求分发
2函数Function你的代码只在请求或事件到来时执行
3外部状态External State持久数据放数据库或存储服务,不依赖函数内存
典型使用场景
Next.js API Route
Next.js API Route和前端项目一起发布
git push→Vercel 构建→/api/contact 上线
联系表单发送邮件
联系表单一次请求发送一封邮件
发送
函数结果邮件已发送
支付平台回调
支付回调收到平台事件后更新订单
payment.succeeded→验证签名→订单改为已支付
函数可重复执行,避免同一回调重复记账
每天运行一次定时任务
定时任务每天自动执行一次汇总
计划每天 09:00动作生成昨日数据最近运行✓ 12.4s