Cloudflare无服务器服务Workers现支持WebAssembly

Cloudflare宣布在其无服务器JavaScript执行服务Cloudflare Workers,开始支持WebAssembly,目前所有使用Workers服务的用户,已经可以在应用程序中添加WebAssembly程序代码,此为无须额外费用的功能。

Workers是Cloudflare的无服务器服务,可以让用户将JavaScript程序代码,直接部署到云计算上执行,用户一旦部署程序代码,在30秒之内便会被发布到全球每个数据中心。 Workers可以从Cloudflare的153个数据中心,以最靠近最终用户的位置处理HTTP运算流量,提供低延迟和低成本的服务。在上周Cloudflare为Workers增加了存储功能,因此现在用户已经能完全使用Workers开发应用程序。

虽然目前Workers只支持JavaScript,但是通过WebAssembly,用户就可以使用更多语言来开发应用程序。 WebAssembly是一种用来扩展网页平台,以支持诸如C、C++、Rust和Go等编译语言的技术,这些语言可以被编译成特殊的WebAssembly二进制格式,供浏览器加载执行。 WebAssembly和JavaScript都能在安全的沙盒中运行,但由于WebAssembly会被编译成低级语法,因此能有效的执行部分资源密集的工作负载。

不过,并非所有工作都适合使用WebAssembly,Cloudflare提到,像是把请求重新转址到不同的URL,或是检查授权令牌等轻量级的工作,使用纯粹的JavaScript可能比WebAssembly更快更容易。由于WebAssembly应用程序在自己独立的内存空间中运行,这代表WebAssembly在执行过程中,需要把数据复制进自己的内存中执行,因此当程序代码需要频繁的跟外部对象交互,且没有大量的运算工作,则可能不会因为编译成WebAssembly,而获得执行效率上的好处。

相反的,如果是要处理像是资源耗尽(Resource-hungry),或是处理音频串流、调整图片大小等工作,就能真正发挥WebAssembly的长处,虽然纯JavaScript也能完成这些工作,JavaScript引擎如V8等也在这些部分下了很大的功夫,Cloudflare提到,但是仍赢不过具有静态类型和外显内存配置的编译语言。

Cloudflare持续的与Emscripten和WebAssembly社群合作,以确保Cloudflare Workers和网页浏览器一样,可以无缝支持WebAssembly。另外,他们也计划通过集成WebAssembly 和Cloudflare Spectrum,允许现存的C和C++服务器程序代码,能处理边缘上任意TCP和UDP协议。

今年无服务器服务竞争激烈,除了很早以前就有的AWS Lambda,还有Google在Next 2018大会发布的事件驱动无服务器平台Cloud Functions正式可用,还与Pivotal、IBM 、红帽和SAP合作开发了Knative,要通过Kubernetes让用户跨云计算平台管理无服务器服务。另外,微软也在早前更新发布Azure Functions 2.0,还让其Runtime可以落地,在本机Windows、macOS和Linux上执行。