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上執行。

熱門新聞

Advertisement