WebAssembly(WASM)最初由W3C 的Mozilla、谷歌、微軟、蘋果等著名公司合作研發,是瀏覽器內應用程式的高效能執行引擎。隨著WASM 在開發者社群中越來越流行,WASM 也正在從客戶端遷移到服務端,成為服務端技術的新銳。
價值定位
WASM 從客戶端到服務端的遷移,與Java 和 JavaScript 等前幾代技術的發展歷程一脈相承。與現有解決方案相比,WASM 在服務端提供了一些重要的價值。
與Java 和 JavaScript 引擎相比,WASM 通過LLVM 工具鏈支援20多種程式語言,從而讓開發人員有選擇語言工具的自由,大大提高了生產力。特別是,它支援有影響力的新銳程式語言,例如Rust 。同時,WASM 可以輕鬆支援CPU、GPU、 AI 優化晶片和FPGA 等硬體功能。
圖片來源:steveklabnik.github.io/booster2018…它提供了接近於本機程式碼的效能,而又不犧牲安全性。
與Docker之類的容器相比,它為開發人員提供了更抽象的程式碼執行環境,從而提高了開發效率。它可以直接部署程式碼和應用程式,而不必啟動作業系統。Wasm 程式不需修改,就可以在不同的作業系統上執行。這與當今的雲原生微服務架構配合得很好。
WASM 消耗的記憶體和資源比作業系統級別的容器少得多。其模組化的安全模型允許為每個函式呼叫配置硬體和作業系統資源,從而在保證安全性的同時,保留了本機效能。
如果在 2008 年已經有了 WASM + WASI,那麼我們壓根無需創始 Docker 這個專案了。 Wasm 就有這麼重要!伺服器上的 WebAssembly 是計算的未來。 — Docker 聯合創始人 Solomon Hykes
此外,伺服器端 WASM 受益於這幾年源於區塊鏈社群的重大創新。
區塊鏈先行一步
伺服器端 WASM 目前處於早期階段,還有大量的工作亟待完成,包括優化、開發工具和整合庫,然後才能在企業中大規模應用。但是,開發者已經在企業計算、去中心化的區塊鏈應用等新興領域中將其用於微服務。
區塊鏈智慧合約是不可更改並且自動執行的程式碼。去中心化的應用(或 dapps )可以通過 Web 介面與智慧合約進行互動。這使得智慧合約成為自然的微服務。
以太坊,EOS 和 Polkadot 等大型公共區塊鏈網路(公鏈)都致力於採用 WASM 作為其下一代執行引擎。因此,公鏈是當今編寫和部署 WASM 服務的最佳平臺。
服務端 WASM 受益於近年來投入到區塊鏈領域的數十億美元的研發投資。這些區塊鏈研發創新的許多都與企業應用高度相關。
- 執行結果確定的應用程式
- 對共享資源進行操作碼級別的準確計費
- 對計算結果的無信任共識
- 對數字貨幣基礎設施的支援
- 應用程式的形式化驗證
- 零知識計算
讓程式碼說話
區塊鏈應用已經做出了可演示的去中心化的微服務 Demo。以在 Second State 的 BUIDL 開發工具開發區塊鏈應用為例,花上幾分鐘就可以在區塊鏈網路上部署微服務,然後在此基礎上構建一個去中心化的 Web 應用程式。
BUIDL 中的示例程式的“後端”是區塊鏈智慧合約(微服務)。智慧合約是去中心化與雲原生的。
Second State 的 BUIDL 還能將 WASM 智慧合約部署到以太坊基金會的 Ewasm 測試網上。
服務端 WASM 的下一個爆發點是區塊鏈之外的企業應用。在資料中心裡,WASM 提供多種語言的服務(支援服務端上的 Rust !),支援多種硬體和作業系統平臺,佔用很少計算資源,並且可以直接觸達底層硬體(比如 GPU 和 AI 晶片)。您可以在此處檢視在WASM中執行Rust服務的概念演示。
前方之路
即將釋出的 Second State 虛擬機器(SSVM)是為服務端應用程式優化的 WASM。
在區塊鏈領域,Second State 已經走在了世界最前沿,為下一代以太坊相容的區塊鏈系統提供虛擬機器(Ewasm)。用於區塊鏈的 SSVM 原生支援256位整數運算。與其他 Ewasm 實現相比,SSVM 在虛擬機器內部拒絕執行結果不確定的操作碼,如浮點運算,同時也實現了對 gas 的精確計算,從而大大提高了效能。
在雲服務領域,SSVM 優化了 WASM 針對企業的功能,例如程式狀態的高效儲存,高效能輸入輸出,多執行緒支援,以及對硬體加速器的直接支援。 通過與高通公司的合作,SSVM 在高通晶片上執行時,可以直接訪問高通晶片的 AI SDK。
服務端 WASM 的發展前景充滿了希望。
加入我們,向下一代雲架構邁進!