午夜咖啡午夜咖啡

jolestar 的文章与笔记。

Post

Lucet 的价值,不只是快,而是它把 FaaS 拉回轻量沙箱

2019-03-29 10:16:18Post

Lucet 这类 Wasm 运行时真正值得关注的,是它重新打开了轻量沙箱式 FaaS 的实现空间。

Fastly 开源 Lucet 之后,我最关注的不是它宣称的性能数字本身,而是它背后的方向:

Wasm 做一种足够轻的沙箱,把 FaaS 从“重容器”重新拉回更适合函数计算的执行边界。

现在很多 FaaS 方案的问题,并不只是冷启动,而是整体执行模型本来就不够贴合。

如果还是按不同语言分别维护一套运行方案,平台会越来越碎;如果试图直接拿 Docker 这种容器当统一抽象,又会发现它对“每次调用快速起一个执行单元”来说还是太重了。

启动延迟、资源开销、镜像分发、环境管理,这些成本叠在一起,都会让函数计算离“轻”越来越远。

所以 Lucet 这类基于 Wasm 的运行时有意思的地方在于:

  • 执行边界足够轻
  • 沙箱模型足够清楚
  • 对平台来说更容易统一
  • 对应用来说又保留了可控接口

这让我想到区块链里已经实验过很多年的沙箱思路。

区块链上的每笔交易,本质上就是一次短生命周期 VM 执行:

  • 启动一个受控执行环境
  • 跑完逻辑
  • 把状态写回外部
  • 生命周期完全由平台托管

从这个角度看,很多区块链 VM 或者 Wasm / RISC-V 这类方案,其实天然就和 FaaS 的问题空间接近。

因为 FaaS 最终也要解决两个核心问题:

  • 执行单元够不够轻
  • 外部状态接口怎么暴露得既可控又通用

如果应用逻辑只需要和 ABI 打交道,而不需要直接理解操作系统和底层存储细节,平台就更容易把生命周期、资源调度和状态持久化统一接管。

所以我会觉得,Lucet 值得看的不是“是不是又一个更快的 Wasm runtime”,而是它可能代表了一条更合适的 FaaS 演化路径:

不是把容器一层层裁薄,而是从一开始就回到更轻量的沙箱抽象。

原微博中的媒体