掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Kubernetes承諾提供一個軟件虛擬化基礎(chǔ),可以讓你同時解決許多問題:

與在裸機上運行服務(wù)相比,Kubernetes可以讓你更有效地使用硬件。Kubernetes允許你在一臺硬件服務(wù)器上運行多個容器,并允許你根據(jù)需要向集群中添加更多服務(wù)器。
“容器云”架構(gòu)有效地劃分了構(gòu)建服務(wù)器端應(yīng)用程序的工作。數(shù)據(jù)庫團隊可以發(fā)布數(shù)據(jù)庫容器,后端團隊可以發(fā)布Java容器,產(chǎn)品經(jīng)理使用網(wǎng)絡(luò)作為通用中間層將它們連接在一起。它符合康威定律:軟件看起來像組織結(jié)構(gòu)圖。
容器抽象足夠通用,可以支持許多不同類型的服務(wù)。Go、Java、C++等等——它不是特定于語言的。開發(fā)團隊可以使用他們喜歡的東西。
負責運行容器的Kubernetes服務(wù)器的運維團隊不必信任他們運行的容器,他們內(nèi)置了一些沙盒和保護措施。
Kubernetes本身是對先前架構(gòu)OpenStack的演變。OpenStack讓每個容器都是一個完整的虛擬機,具有完整的內(nèi)核和操作系統(tǒng)以及一切。相反,Kubernetes通常使用容器,容器中通常不需要內(nèi)核。它們更輕量級——想想Docker與VirtualBox。
在Kubernetes部署中,內(nèi)核仍然位于軟件架構(gòu)的中心位置。容器化的基本機制是具有私有命名空間的Linux內(nèi)核進程。然后這些容器通過TCP和UDP套接字粘合在一起。然而,雖然每個容器有一個或多個內(nèi)核進程確實比完整的虛擬機擴展得更好,但它通常不會擴展到數(shù)百萬個容器。并且進程確實有一些啟動時間——你不能為每個對高性能Web服務(wù)的請求啟動一個容器。這些技術(shù)限制導(dǎo)致某些類型的系統(tǒng)架構(gòu),通常具有保持某種狀態(tài)的長期組件。
服務(wù)器端WebAssembly與Kubernetes處于類似的空間——或者更確切地說,WebAssembly類似于進程和私有命名空間。WebAssembly為你提供了良好的抽象屏障和(可以提供)高度安全隔離。在某些方面它甚至更好,因為WebAssembly提供了“允許列表”安全性——它沒有一開始的功能,要求運行WebAssembly的“主機”將自己的一些功能顯式委托給客體WebAssembly模塊。與默認情況下從每個功能開始然后必須受到限制的進程進行比較。
與Kubernetes一樣,WebAssembly也為你提供康威定律系統(tǒng)。你無需傳送容器,而是傳送WebAssembly模塊——以及一些關(guān)于他們需要從環(huán)境中獲得哪些類型的東西的元數(shù)據(jù)(“導(dǎo)入”)。WebAssembly是通用的——它是一個低級的虛擬機,任何東西都可以編譯成。
但是,在WebAssembly中你會得到更多的東西。一是快速啟動,因為內(nèi)存就是數(shù)據(jù),所以你可以安排創(chuàng)建一個WebAssembly模塊,該模塊的狀態(tài)從內(nèi)存中預(yù)初始化的狀態(tài)開始。這樣的模塊可以在幾微秒內(nèi)啟動——速度足夠快,可以在每個請求上創(chuàng)建一個,在某些情況下,只是在之后丟棄狀態(tài)。你可以在WebAssembly上比在容器上更有效地運行功能即服務(wù)架構(gòu)。另一個是虛擬化完全在用戶空間中提供。一個進程可以在許多不同的WebAssembly模塊之間多路復(fù)用。這讓一臺服務(wù)器可以做更多事情。而且,你不需要使用網(wǎng)絡(luò)來連接WebAssembly組件;它們可以在內(nèi)存中傳輸數(shù)據(jù),有時甚至無需復(fù)制。
題外話:WebAssembly的這種輕量級進程特色使得其他架構(gòu)也成為可能,例如這個有趣的hack將鏈接到Firefox的庫沙箱化,他們實際上已經(jīng)發(fā)布了!
我將WebAssembly與Kubernetes進行比較,但實際上它更像是進程和私有命名空間。所以對最初提出的問題的一個答案是,不,WebAssembly不是下一個 Kubernetes。下一個項目正在等待建立,盡管我知道一些已經(jīng)開始的團隊。
不過,我似乎很清楚一件事:WebAssembly將處于新事物的底部,因此WebAssembly的近期軌跡很可能會跟隨Kubernetes的軌跡,這意味著……
等等。我會在不久的將來看到動蕩的水域。所以從這個意義上說,Kubernetes本質(zhì)上不是一個技術(shù)軟件,而是一個泡沫商業(yè)競爭的紐帶,當然:我們還有5年左右的時間,我們會很開心。
讀者評論:2021年12月的WebAssembly讓我想起了2014年容器/Kubernetes的情況——業(yè)界已經(jīng)意識到當前的技術(shù)狀態(tài)并不能解決當今所有的問題??邕吘?服務(wù)器/瀏覽器的可移植性、可移植的安全模型以及業(yè)務(wù)邏輯和庫之間的緊密耦合意味著企業(yè)構(gòu)建/管理/操作應(yīng)用程序的多個版本。像wasmCloud這樣的技術(shù)是未來,在我看來,未來幾年將會有一個更好的故事。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流