← [ BACK_TO_NOTES ]

Vercel Functions 与 Fluid Compute

解释 Next.js 部署到 Vercel 后的托管函数执行模型,以及 Fluid Compute 如何通过并发复用、动态扩缩容和实例挂起改变传统 serverless 心智模型。

#synthesis #growing #deploy #backend

[!info] related notes

  • 所属 MOC: nextjs-moc
  • 相关概念:
  • 易混淆概念:
  • 相关资源:

Vercel Functions 与 Fluid Compute

核心模型

Next.js 部署到 Vercel 后,服务端代码通常运行在平台托管的 Functions 中。应用不再拥有一台“永远在线、由自己管理进程生命周期”的 VPS,而是把请求执行交给平台调度。

Browser
→ Vercel Edge / CDN
→ Vercel Function
→ database / API / service

Fluid Compute 是 Vercel 当前的函数执行模型之一:它保留按需扩缩容,同时允许一个函数实例处理更多并发请求,并在等待 I/O 时更有效复用计算资源。

与传统 VPS 的关键差异

VPS / long-lived server
→ 进程通常长期存在
→ 内存状态可能持续到进程重启
→ 连接池由应用长期管理

Managed Functions
→ 实例生命周期由平台决定
→ 可能创建、复用、挂起或回收实例
→ 不能把本机内存当 durable state
→ 数据库连接必须考虑并发实例与连接上限

因此模块级对象可以作为“当前实例内可复用资源”,但不能被当作跨实例唯一事实。

什么可以放内存,什么不可以

适合实例内缓存 / 复用:

  • 数据库连接池对象
  • SDK client
  • 编译后的 schema / validator
  • 无需跨实例一致的短期计算缓存

不应依赖实例内存作为权威状态:

  • 用户 Session 的唯一记录
  • Job 当前状态的唯一副本
  • 全局计数器
  • 唯一锁
  • 未落盘的重要业务数据

这些应进入数据库、Redis、队列或真正 owning service。

Region 与数据位置

函数位置会影响:

Function ↔ Database latency
Function ↔ downstream service latency

因此部署 region 应尽量接近主要数据源,而不是只追求离浏览器最近。对数据库密集型应用,函数到数据库的 RTT 往往比前端 CDN 的几毫秒差异更重要。

Fluid Compute 不等于“没有 Serverless 问题”

Fluid Compute 改善了传统 serverless 中的一些冷启动、并发和连接复用问题,但仍应保留以下原则:

  • 不假设实例永久存在
  • 不假设只有一个实例
  • 不用进程内状态表达分布式唯一事实
  • 数据库连接数要有上限
  • 外部调用必须有 timeout / cancellation / retry policy

最短判断

需要 durable / globally consistent state?
→ 外部持久化系统

只需要当前实例复用?
→ module-level client / pool 可以

部署后数据库连接暴涨?
→ 先检查实例并发 × pool size × database max connections

这部分是 Full Stack Open Part 14 从“本地 Next.js”走到“真实托管运行时”时最重要的新增心智模型。

创建于 2026/9/16 更新于 2026/9/16
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本