作者 | Peter Vetere
譯者 | 崔瑩峰
無論是在服務(wù)器上還是在邊緣,Wasm都允許你創(chuàng)建自定義邏輯,該邏輯比以前更接近數(shù)據(jù)。你可以安全、高效且更靈活地完成此操作。
Wasm是最重要的新興技術(shù)之一,無論你有沒有聽說過它,毋庸置疑的是它很重要。
作為WebAssembly語言的簡寫,Wasm是為Web開發(fā)的。然而,Wasm技術(shù)已經(jīng)擴(kuò)展到網(wǎng)絡(luò)瀏覽器之外?,F(xiàn)在部分組織開始在服務(wù)器端運(yùn)行Wasm。例如,我的公司SingleStore正在我們的數(shù)據(jù)庫中使用它。
一些人認(rèn)為Wasm將取代容器技術(shù)和無處不在的JavaScript。
不管你是否相信,Wasm正在對云計(jì)算產(chǎn)生影響。為什么以及如何影響?且聽我逐一道來。
跨平臺(tái):讓云組件更安全、更簡單地結(jié)合在一起
人們使用各種不同種類的語言來編寫軟件。讓這些語言進(jìn)行交互是很困難的。Wasm提供了一個(gè)框架,可以用你想要的任何語言編寫。然后利用它產(chǎn)生了一種通用的模擬機(jī)器格式。
這種格式允許用各種語言(如Rust、C/C++ 和Go)編寫的組件相互通信。Wasm還為數(shù)據(jù)庫等服務(wù)器端系統(tǒng)提供了嵌入來自不同語言組件的能力,而無需你知道或關(guān)心該模塊是如何生成的。
將Wasm視為一種通用的插件格式。假設(shè)你想使用第三方開發(fā)的組件來增強(qiáng)系統(tǒng)的功能。Wasm允許你將新組件引入系統(tǒng),而無需承擔(dān)集成附加組件通常帶來的風(fēng)險(xiǎn)。例如,外部組件可能會(huì)使系統(tǒng)崩潰或產(chǎn)生一些意外之外的故障。Wasm通過為不同的系統(tǒng)和組件創(chuàng)建一個(gè)極其安全的框架來彼此交互,從而緩解了這些問題。
云是Wasm擴(kuò)張的重要驅(qū)動(dòng)力。Wasm非常適合云,因?yàn)樗翘摂M化的,可以在任何支持Wasm運(yùn)行時(shí)的環(huán)境中工作。此外,云系統(tǒng)通常由許多服務(wù)拼湊在一起并以不同的方式連接而成。這可能會(huì)變得復(fù)雜。但是,你越能簡化云環(huán)境,云系統(tǒng)的各個(gè)方面就越容易正確協(xié)同工作。
安全:通過其運(yùn)行代碼和表示函數(shù)的方法降低風(fēng)險(xiǎn)
在大多數(shù)語言運(yùn)行時(shí)中,函數(shù)都有地址。這些地址是內(nèi)存中的可執(zhí)行點(diǎn)。如果你只是將內(nèi)存視為一堆字節(jié),則根本無從分辨哪里是函數(shù)地址,哪里僅是普通的字節(jié)。這就為一些人開了便門,他們可以找到函數(shù)入口注入代碼,或者以特權(quán)方式調(diào)用函數(shù),以便函數(shù)執(zhí)行它不應(yīng)該做的事情。Wasm的設(shè)計(jì)消除了這些問題。
Wasm以不可利用的方式表示函數(shù)。它還在沙盒中運(yùn)行代碼,從而緩解了與運(yùn)行不受信任的代碼相關(guān)的常見安全問題。由于Wasm將程序內(nèi)存封裝在安全區(qū)域中,因此沒有任何東西可以超出它并訪問可能影響運(yùn)行程序的主機(jī)或危及安全性的地方。
借助Wasm基于功能的安全模型,主機(jī)可以完全控制Wasm程序可以運(yùn)行的特權(quán)操作類型。例如,如果需要文件訪問,主機(jī)必須顯式授予對目錄的訪問權(quán)限。
速度:消除不需要的東西,提高速度和效率
顯然,Wasm并不是第一種人們用來以更安全,更簡單的方式將事物整合在一起的技術(shù)。然而,Wasm比其他一些技術(shù)要快得多。
編譯器可以通過利用LLVM后端生成Wasm程序,編譯為LLVM中間表示。LLVM(Low Level Virtual Machine 的簡稱)可以供許多語言作為編譯的后臺(tái)。由于這種方法,且由于社區(qū)圍繞LLVM項(xiàng)目多年的努力,Wasm程序可以編譯為高度優(yōu)化的機(jī)器代碼。
在SingleStore,我們創(chuàng)建了“Wasm太空計(jì)劃”——一個(gè)數(shù)據(jù)庫內(nèi)的虛擬實(shí)時(shí)宇宙——來展示W(wǎng)asm的速度和輕量級(jí)。在這個(gè)模擬程序中,宇宙飛船使用不同的策略來補(bǔ)充能量,并在浩瀚的實(shí)時(shí)“宇宙”中與其他宇宙飛船作戰(zhàn)。這涉及大量數(shù)據(jù),系統(tǒng)中有超過一百萬艘船,每秒有近三百萬次數(shù)據(jù)庫更新。
傳統(tǒng)上,集成該數(shù)據(jù)并將其組裝在中間層需要將大量數(shù)據(jù)提取到中間層。這可能會(huì)引入大量的滯后,并且需要一些復(fù)雜的緩存來實(shí)現(xiàn)實(shí)時(shí)響應(yīng)?!癢asm太空計(jì)劃”沒有采用這種方法,而是將每艘宇宙飛船的策略都用Wasm編寫,并作為UDF加載到數(shù)據(jù)庫中。每一秒,每個(gè)宇宙飛船的戰(zhàn)略函數(shù)都被調(diào)用來決定它的下一步行動(dòng)。
前端(在瀏覽器中運(yùn)行的JavaScript程序)上沒有任何邏輯可以理解這些策略,它也沒有關(guān)于宇宙狀態(tài)的任何內(nèi)容。它的工作只是直接向數(shù)據(jù)庫發(fā)出SQL查詢,并以圖形方式顯示返回的信息。數(shù)據(jù)庫維護(hù)所有狀態(tài)信息,并且由于Wasm允許計(jì)算緊挨著數(shù)據(jù),因此速度要快得多。甚至不需要中層。
但Wasm并不全是樂趣和游戲。你可以使用它來解決無數(shù)其他應(yīng)用程序和用例。例如,你可以使用Wasm進(jìn)行情緒分析。情感分析所需的復(fù)雜邏輯不是可以用數(shù)據(jù)庫SQL語言輕松表達(dá)的。因此,為了做到這一點(diǎn),你通常需要用更復(fù)雜的語言實(shí)現(xiàn)這個(gè)算法,下載所有數(shù)據(jù)并將數(shù)據(jù)傳給這個(gè)算法。然后,你需要將情緒分析評(píng)級(jí)推回?cái)?shù)據(jù)庫。這意味著你使用的數(shù)據(jù)庫中的每一行都需要往返。如果你有數(shù)百萬行數(shù)據(jù),則會(huì)產(chǎn)生很多流量。但是,通過SingleStore集成Wasm的方式,這個(gè)算法已經(jīng)在數(shù)據(jù)庫中,因此你不會(huì)產(chǎn)生該開銷。
能力:創(chuàng)建標(biāo)準(zhǔn)使其更加強(qiáng)大
Wasm已經(jīng)非常有能力了。而且隨著新技術(shù)和新標(biāo)準(zhǔn)的到來,Wasm將更加強(qiáng)大。
例如,W3C WebAssembly Community Group在字節(jié)碼聯(lián)盟等組織成員的幫助下,目前正在致力于標(biāo)準(zhǔn)化WebAssembly系統(tǒng)接口 (WASI)。WASI將提供一組標(biāo)準(zhǔn)的API和服務(wù),當(dāng)Wasm模塊在服務(wù)器上運(yùn)行時(shí)可以使用這些API和服務(wù)。許多標(biāo)準(zhǔn)提案仍在進(jìn)行中,例如垃圾回收、網(wǎng)絡(luò)I/O和線程,因此你不必總是將你在其他編程語言中做的事情都映射到Wasm。因?yàn)樽罱K,WASI將提供一個(gè)完整的標(biāo)準(zhǔn)來實(shí)現(xiàn)這一目標(biāo)。在許多方面,WASI的目標(biāo)與POSIX相似。
Wasm現(xiàn)在也沒有解決與其他Wasm模塊鏈接或通信的能力。但是Wasm社區(qū)在計(jì)算行業(yè)成員的支持下,正在努力創(chuàng)建一種稱為組件模型的東西。它旨在圍繞Wasm模塊創(chuàng)建一個(gè)動(dòng)態(tài)鏈接基礎(chǔ)設(shè)施,定義組件如何啟動(dòng)和相互通信(類似于傳統(tǒng)操作系統(tǒng)的進(jìn)程模型)。
此外,一種新興的標(biāo)準(zhǔn)IDL語法,稱為WIT(用于WebAssembly接口類型),將允許人們以與語言無關(guān)的方式描述他們的Wasm接口。因此,綁定生成器將能夠獲取IDL中的內(nèi)容并編譯代碼,這些代碼將允許Wasm主機(jī)和客戶端以通用方式通信數(shù)據(jù)。
未來:提供更快、更安全、更高效的方式將事物整合在一起
Wasm雖然更輕量級(jí),但可能不會(huì)很快取代容器。然而你可以期待Wasm成為未來許多軟件的一部分。
無論是在服務(wù)器上還是在邊緣,Wasm都允許你創(chuàng)建自定義邏輯,這些邏輯比以前更接近數(shù)據(jù),而且你可以安全、高效且更靈活地完成此操作。
現(xiàn)在有了SingleStore,你可以將現(xiàn)有程序編譯為Wasm,將它們推送到數(shù)據(jù)庫中,然后在那里運(yùn)行它們。這意味著你可能不必重寫該代碼并將其放在遠(yuǎn)離數(shù)據(jù)的地方。借助Wasm技術(shù),你可以兩全其美。
原文鏈接:
??https://www.infoworld.com/article/3678208/why-wasm-is-the-future-of-cloud-computing.html??
譯者簡介
崔瑩峰,51CTO社區(qū)編輯,一名70后程序員,擁有10多年工作經(jīng)驗(yàn),長期從事 Java 開發(fā),架構(gòu)設(shè)計(jì),容器化等相關(guān)工作。