Webassembly是新的Kubernetes? --wingolog
Kubernetes(“k8s”)承諾提供一個軟體虛擬化基礎,可以讓您同時解決許多問題:
- 與在裸機上執行服務相比,k8s可以讓您更有效地使用硬體。K8s 允許您在一臺硬體伺服器上執行多個容器,並允許您根據需要向叢集中新增更多伺服器。
- “容器雲”架構有效地劃分了構建伺服器端應用程式的工作。您的資料庫團隊可以釋出資料庫容器,您的後端團隊可以釋出 Java 容器,您的產品經理使用網路作為通用中間層將它們連線在一起。它符合康威定律:軟體看起來像組織結構圖。
- 容器抽象足夠通用,可以支援許多不同型別的服務。Go、Java、C++ 等等——它不是特定於語言的。您的開發團隊可以使用他們喜歡的東西。
- 負責執行容器的 k8s 伺服器的運維團隊不必信任他們執行的容器。內建了一些沙盒和安全性。
K8s 本身是對先前架構OpenStack的演變。OpenStack 讓每個容器都是一個完整的虛擬機器,具有完整的核心和作業系統以及一切。相反,K8s 通常使用容器,容器中通常不需要核心。結果是它們的重量更輕——想想 Docker 與 VirtualBox。
在 Kubernetes 部署中,核心仍然位於軟體架構的中心位置。容器化的基本機制是具有私有名稱空間的 Linux 核心程式。然後這些容器透過 TCP 和 UDP 套接字粘合在一起。然而,雖然每個容器有一個或多個核心程式確實比完整的虛擬機器擴充套件得更好,但它通常不會擴充套件到數百萬個容器。並且程式確實有一些啟動時間——你不能為每個對高效能 Web 服務的請求啟動一個容器。這些技術限制導致了某些型別的系統架構,通常具有保持某種狀態的長期元件。
k8s <=? w9y
伺服器端 WebAssembly 與 Kubernetes 處於類似的空間——或者更確切地說,WebAssembly 類似於程式和私有名稱空間。
WebAssembly 為您提供了良好的抽象屏障和(可以提供)高度安全隔離。在某些方面它甚至更好,因為 WebAssembly 提供了“允許列表”安全性——它沒有一開始的功能,要求執行 WebAssembly 的“主機”將自己的一些功能顯式委託給來賓 WebAssembly 模組。與預設情況下從每個功能開始然後必須受到限制的程式進行比較。
與 Kubernetes 一樣,WebAssembly 也為您提供 Conway's-law-affine系統。您無需運送容器,而是運送 WebAssembly 模組——以及一些關於他們需要從環境中獲得哪些型別的東西的後設資料(“匯入”)。WebAssembly 是通用的——它是一個低階的虛擬機器,任何東西都可以編譯其中執行。
但是,在 WebAssembly 中你會得到更多的東西。
- 一是快速啟動。因為記憶體就是資料,所以您可以安排建立一個WebAssembly 模組,該模組的狀態從記憶體中預初始化的狀態開始。這樣的模組可以在幾微秒內啟動——速度足夠快,可以在每個請求上建立一個,在某些情況下,只是在之後丟棄狀態。您可以在 WebAssembly 上執行比在容器上更有效地函式即服務FaaS架構。
- 另一個是虛擬化完全在使用者空間中提供。一個程式可以在許多不同的 WebAssembly 模組之間多路複用。這讓一臺伺服器可以做更多事情。而且,你不需要使用網路來連線WebAssembly 元件;他們可以在記憶體中傳輸資料,有時甚至無需複製。
我將 WebAssembly 與 K8s 進行比較,但實際上它更像是程式和私有名稱空間。
所以對最初提出的問題的一個答案是:不,WebAssembly 不是下一個 Kubernetes;
WebAssembly 將處於新事物的底部,因此 WebAssembly 的近期軌跡很可能會跟隨 Kubernetes 的軌跡,這意味著......
- 分析師開始了評論時間!
- Gartner 魔力預測再次開始
- IBM 推出了一個新的 WebAssembly 部門
- 埃森哲開始向公司詢問他們的 WebAssembly 遷移計劃
- Linux 基金會嚐鮮
Kubernetes 本質上不是一個技術軟體,而是一個泡沫商業競爭的紐帶,當然:我們還有 5 年左右的時間。
2021 年 12 月的 WebAssembly 讓我想起了 2014 年容器/kubernetes 的情況——業界已經意識到當前的技術狀態並不能解決當今所有的問題。跨邊緣/伺服器/瀏覽器的可移植性、可移植的安全模型以及業務邏輯和庫之間的緊密耦合意味著企業構建/管理/操作應用程式的多個版本。像 wasmCloud 這樣的技術是未來,在我看來,未來幾年將是一個更好的故事。
相關文章
- 什麼是 webAssembly ?Web
- 為什麼Kubernetes是新的應用伺服器?伺服器
- [譯] 什麼是 WebAssembly table importsWebImport
- 新報告稱,Kubernetes 是一個支出不可預測的黑洞 - The Register
- Kubernetes Autoscaling是如何工作的?
- WebAssembly 的由來Web
- [譯][A crash course in WebAssembly] WebAssembly的進度和計劃Web
- [譯]WebAssembly的匯入型別 table 到底是什麼?Web型別
- webAssemblyWeb
- [譯] 使 WebAssembly 更快:Firefox 的新流式和分層編譯器WebFirefox編譯
- 為什麼說軟體服務的未來必然是WebAssembly?Web
- 【許曉笛】EOS 新增的 WebAssembly 直譯器,是什麼鬼?Web
- 你好WebAssemblyWeb
- Kubernetes 的核心是API框架而非容器API框架
- 你知道什麼是webAssembly嗎?它的運用場景有哪些?Web
- Rust/WebAssembly將是雲原生分散式計算的未來? - thenewstackRustWeb分散式
- Kubernetes 1.24新特性解讀
- 可能是世界上最簡單的用 Go 來寫 WebAssembly 的教程GoWeb
- 初識WebAssemblyWeb
- WebAssembly元件提案Web元件
- 體驗WebAssemblyWeb
- [譯][A crash course in WebAssembly] 創作並使用 WebAssembly 模組Web
- [譯][A crash course in WebAssembly] 為什麼WebAssembly這麼快Web
- 新發布!Kubernetes服務更新
- WebAssembly Studio:Mozilla提供的WASM工具WebASM
- Kubernetes 小白入門基礎教程(5)--kubernetes是什麼
- [譯] WebAssembly: How and whyWeb
- kubernetes是什麼?有哪些功能?
- Kubernetes v1.27 新特性一覽
- 【JSConf EU 2018】WebAssembly 的手工藝術JSWeb
- 悄悄掀起 WebAssembly 的神祕面紗Web
- [譯]安全的WebAssembly記憶體操作Web記憶體
- Kubernetes和Docker之間的關係是什麼?Docker
- Docker與k8s的恩怨情仇(五)——Kubernetes的創新DockerK8S
- JavaScript也能寫WebAssemblyJavaScriptWeb
- 20分鐘上手 webAssemblyWeb
- 【JSConf EU 2018】Rust + WebAssemblyJSRustWeb
- [WebAssembly 入門] Hello, world!Web