最近,Golem发布了其旗舰产品Golem Cloud,这是一个耐用的计算平台,允许开发者构建和部署可长时间运行的、有状态的无服务器工作模块,能够抵抗故障、升级和更新。该产品目前处于开发者预览阶段。
Golem Cloud是基于WebAssembly (WASM)的组件模型构建的。部署在Golem Cloud上的任何WebAssembly组件都将继续执行,直到组件完成为止。开发人员可以将他们的项目(用Rust、Zig、Go、Grain、C/C++等语言)编译成WASM组件,并使用Golem CLI或Golem REST API将其上传到Golem Cloud。随后,Golem为快速实例化组件做好准备,并为组件分配一个标识符,开发人员可以使用该标识符创建该组件的新运行实例。
在幕后,这个平台将持续保存每个无服务器工作器的运行状态,并在硬件故障、热点、升级和更新时根据需要将该状态转移到新的机器上。该公司为部署在该平台上的工作器创造了“invincible”的这个术语。
开源软件贡献者John A de Goes在Golem Cloud博客中解释道:
运行工作的节点持续地对工作程序的状态进行快照。不仅包括堆内存和栈内存,还包括所谓的指令指针,它决定了当前时刻代码在某个过程中的执行位置。
此外,他还解释了快照可以在故障后恢复的基本原理:
这些连续快照不是全内存快照,因为那样会降低性能并增加延迟。相反,快照是通过捕获微小的增量来实现的,这允许在恢复期间重建完整状态,同时保持高性能和低延迟。
也可以运行无服务器的工作程序,微软Azure的Durable Functions就包含一个运行时执行的工作流和角色。然而,在底层,可靠性是通过Azure存储容器、表和队列来实现的,也可以选择切换到Netherite。此外,AWS提供了Step Functions来执行工作流,并内置状态管理。两者与Golem Cloud在WebAssembly组件模型方面存在差异。
不过,Fermyon Technologies也提供了类似的产品,他们在今年早些时候推出了Fermyon Cloud,通过他们的开发工具Spin来部署和管理云原生WebAssembly应用程序。
在《Serverless Daily》的一篇文章中,作者写道:
Golem Cloud是本周突然出现的一个有趣的无服务器新平台,它采用了与大多数平台不同的方法。
此外,Hacker News帖子上的一位受访者评论道:
他们所追求的范式似乎不像“按比例缩减到零”的模式,而是“确定唤醒”或“永不失败”或“无限迁移”的工作程序,这对于能够根据工作程序每时每刻使用的活动RAM准确计费而不是根据不灵活的RAM数量进行调用是有利的。
最后,Golem Cloud目前提供一个免费的预览计划,其中包括十个活动工作程序、10000个非活动工作程序和每个工作程序10MB的内存。