什么是Vercel的Fluid计算
AI摘要: 本文深入解析了Vercel推出的Fluid计算技术,该技术通过类似操作系统线程池的机制解决传统Serverless架构中的冷启动问题。其核心在于复用已创建的Node.js实例而非频繁新建,实现实时扩展、资源预占、按实际用量计费等特性,并支持流式传输和响应后处理等高级功能。文章指出这种设计模式与计算机操作系统的资源调度策略高度相似,体现了底层系统工程思想在云原生领域的创新应用。
官方原文:https://vercel.com/blog/introducing-fluid-compute
Reddit讨论:https://www.reddit.com/r/nextjs/comments/1iibnj2/eli5_vercels_fluid_compute/?tl=zh-hans
背景
Vercel提供的Serverless计算存在天然的冷启动问题,某时某刻来一个请求,就需要创建一个node实例去处理,冷启动时间无法避免,如果马上再来第二个请求,那么可能运气好命中同一个创建好的实例,如果没有命中,那么就需要再创建另外一个node实例,又是一次冷启动
解决办法
Fluid计算感觉非常像操作系统中常用的线程池。
原先的Serverless就类似操作系统中的一次线程,需要计算一个任务就创建一个线程处理,再来一个任务就再创建一个线程处理,大量频繁的线程创建与销毁成本很高。
如果操作线程池,就能大幅度利用空闲线程去执行新的任务,而不需要专门再创建新的任务
对应到Serverless和fluid计算,就是重用之前创建好的node实例,不要再重复创建,非常相似。
对应到Vercel官方文章提到的几个特点:
- 仅在需要时计算触发器
- 从零到峰值流量的实时扩展
- 在扩展新资源之前先使用现有资源
- 根据实际计算使用情况计费,最大限度地减少浪费
- 预热实例可减少延迟并防止冷启动
- 支持流式传输和响应后处理等高级任务
很多都和线程池的特点对应:
线程池也支持扩展,利用之前已有的先层,线程池也支持预热
总结
这些新功能,本质还是计算机操作系统里面常用的套路