做边缘计算的 fastly 公司开源了他们的 lucet 项目,这是一个 WebAssembly 的编译器和 runtime。他们是想用 Wasm 来做一种轻量的容器来跑边缘计算程序。lucet 声称只需要 50 微秒,kilobytes 级的内存成本,而相对 V8 的 Wasm 引擎就需要 5 毫秒 和 megabytes 级别的内存。
去年年底的 GIAC 大会上,我还和 @柳烟堆雪 ,柴树杉聊了这种想法,把区块链上实验过的沙箱,比如 Wasm,Nervos 的基于 RISC-V 的 vm,搬过去做 FaaS 的容器应该不错。没想到这么快就有人实现了。
FaaS 现在各家的做法基本都是根据不同语言做不同的方案,也有试图来用 docker 做 FaaS 的统一方案的,但 docker 还是太重,每次调用启动一次,无论是延迟还是资源消耗都太高。
FaaS 方案里面临的另外一个问题就是应用状态。Function 本身是无状态的,状态要存到外部。但外部存储的接口如何暴露给 Function?Function 中自己初始化数据库连接然后写?这样太重了,也不可控。
而前面说的轻量沙箱机制就能很好解决这两个问题,并且已经在区块链上实验过了。区块链上都是每个交易启动一次 VM,计算完成后要么平台捕获 VM 的状态,要么程序通过外部注入接口将状态存到外部。应用程序只需要和 ABI 打交道,不需要知道操作系统,外部存储等信息,生命周期完全托管给平台。
当然现阶段这些沙箱对编程语言的支持都不太友好,但只要有应用场景和商业前景,这些都不是问题,技术人最爱干的就是造各种轮子了。
github:github.com/fastly/lucet
去年我的微博:http://t.cn/EJ3xmKb
lucet 的例子
docker co-founder 的评价
ps:最近长文写的少,这种短文都发微博上了,很少搬过来。感兴趣的可以关注我的微博 @jolestar




